Skip to main content
Glama

Análisis de medios EnriVision

analyze_media
Read-onlyIdempotent

Upload images, video, audio, PDFs, and documents to get server-side visual descriptions and audio transcriptions as text. Enables any model to understand media it cannot directly see.

Instructions

Sube y analiza un archivo mediante EnriProxy (extracción del lado servidor + análisis con modelo). / Upload and analyze a media file via EnriProxy (server-side extraction + model analysis). IMPORTANTE para modelos sin visión: la respuesta es SIEMPRE TEXTO (descripción visual generada del lado del servidor y/o transcripción del audio); nunca se devuelven bloques de imagen, así que CUALQUIER modelo puede consumirla — si no puedes ver imágenes, esta herramienta es tu vía para 'ver' archivos multimedia pidiendo la descripción en question. / IMPORTANT for models without vision: the response is ALWAYS TEXT (server-side visual description and/or audio transcription); image blocks are never returned, so ANY model can consume it — if you cannot see images, this tool is how you 'see' media by asking for the description in question. Formatos aceptados — Imágenes estáticas: PNG, JPEG, WebP, TIFF, BMP, AVIF, HEIC/HEIF, SVG. Imágenes animadas: GIF animado, WebP animado, APNG, SVG animado (se extraen fotogramas clave y se describen sus cambios). Video: MP4, WebM, MKV, MOV, AVI y cualquier contenedor/códec decodificable, CON o SIN audio (en video con audio se procesan juntos: fotogramas + transcripción sobre la misma línea de tiempo). Audio: WAV, MP3, OGG (Vorbis/Opus), M4A/AAC, FLAC, ALAC, Opus y cualquier formato común (todo se normaliza a WAV 16 kHz mono antes de transcribir). Documentos: PDF (de texto, escaneado o mixto), Word (.docx), Excel (.xlsx), PowerPoint (.pptx) — con texto e imágenes embebidas — y JSONL. Conjuntos de varias imágenes: use paths. / Accepted formats — Static images: PNG, JPEG, WebP, TIFF, BMP, AVIF, HEIC/HEIF, SVG. Animated images: animated GIF, animated WebP, APNG, animated SVG (key frames are extracted and their changes described). Video: MP4, WebM, MKV, MOV, AVI and any decodable container/codec, WITH or WITHOUT audio (video with audio processes both together: frames + transcription on the same timeline). Audio: WAV, MP3, OGG (Vorbis/Opus), M4A/AAC, FLAC, ALAC, Opus and any common format (everything is normalized to 16 kHz mono WAV before transcription). Documents: PDF (text, scanned, or mixed), Word (.docx), Excel (.xlsx), PowerPoint (.pptx) — with embedded text and images — and JSONL. Multiple-image sets: use paths. Cuándo usarla: PDFs grandes o escaneados donde el Read puede truncar; video/audio u otros binarios que el cliente no puede leer; HEIC/AVIF/TIFF/BMP/APNG/SVG/Office cuando el Read no es confiable; archivos muy grandes con subidas reanudables (hasta 4 GiB). / When to use: large or scanned PDFs where client Read may truncate; video/audio or binary media the client cannot Read; HEIC/AVIF/TIFF/BMP/APNG/SVG/Office docs when client Read is unreliable; very large files needing resumable uploads (up to 4 GiB). Reglas: use path para un archivo, paths para varias imágenes. Cuando paths trae al menos una entrada válida, path se ignora (contrato explícito: mandar ambos se permite, path se ignora en silencio — prefiera semántica oneOf y mande solo uno). Las entradas en blanco se descartan; claves desconocidas en video/audio/document/images se rechazan. question es opcional aquí (obligatoria en EnriCode); attachmentIndex/attachmentId no existen aquí (sólo EnriCode). / Rules: use path for one file, paths for several images (UI screenshots/photo sets). When paths carries at least one valid entry, path is ignored (explicit ignore-path contract: sending both is allowed, path is silently ignored — prefer oneOf semantics and send only one). Blank paths entries are discarded; unknown keys inside video/audio/document/images are rejected (check typos like max_pages_totall). question is optional here (required in EnriCode vision.analyze_media); attachmentIndex/attachmentId do not exist here (EnriCode-only). Presupuestos (timeout = min(ENRIVISION_TIMEOUT_MS del operador, presupuesto del modo)): single = 10 min (una pasada, rápida y barata); multipass = 20 min (por segmentos/lotes + reducción); auto = 20 min (el servidor elige y puede escalar a multipass). Si no sabe cuál usar, omita el afinado (auto). / Analysis budgets (client analyze timeout = min(operator ENRIVISION_TIMEOUT_MS, mode budget)): single = 10 min (one pass, fast and cheap, 1 image or simple questions); multipass = 20 min (per-segment/batch map + reduce; PDFs over ~20 pages, long videos, image sets); auto = 20 min (the server picks and may escalate to multipass). If unsure, omit tuning (auto). Clip de video: para preguntas en un tiempo específico ("¿qué pasa en 12:34?") use video.clip_start_seconds + video.clip_duration_seconds: convierta a segundos (12:34 = 1260+34 = 754), por ejemplo clip_start_seconds=754 y clip_duration_seconds=30. O dé video.clip_end_seconds (fin = inicio + duración, 0-86400 s). / Video clip targeting: for time-specific questions ("what happens at 12:34?") use video.clip_start_seconds + video.clip_duration_seconds: convert to seconds (12:34 = 1260+34 = 754) and request a window, e.g. clip_start_seconds=754 and clip_duration_seconds=30. Or give video.clip_end_seconds instead (end = start + duration, 0-86400 s). Enteros estrictos: los knobs enteros aceptan números o strings enteras completas ("60" vale; "8.0", "8abc" y 7.9 fallan). Los flotantes aceptan decimales ("12.5" vale). transcribe vale true por defecto y no tiene efecto en imágenes/documentos (se declara en warnings, se ignora). Requiere API key válida de EnriProxy (env ENRIPROXY_API_KEY). / Strict integers: integer knobs accept numbers or complete integer strings ("60" works; "8.0", "8abc", 7.9 fail). Floats accept decimals ("12.5" works). transcribe defaults to true and has no effect on images/documents (declared in warnings, ignored). Requires a valid EnriProxy API key (env ENRIPROXY_API_KEY, sent as Authorization: Bearer ...). Errores: las fallas devuelven isError con texto bilingüe más structuredContent {code, retryable, httpStatus?} con el vocabulario EnriCode; retryable marca 429/5xx/timeouts. Si el mensaje trae Detalle del servidor: en el idioma del proxy, repórtelo tal cual. Fotogramas y transcripción comparten la MISMA línea de tiempo. model es el id del modelo para afinidad de dispatch (máximo 128 caracteres o env ENRIVISION_MODEL; omita para auto-dispatch). language controla el idioma de la RESPUESTA; transcription_language aparte el idioma que Whisper espera al TRANSCRIBIR ("auto" = detectar solo). / Errors: failures return isError with bilingual text plus structuredContent {code, retryable, httpStatus?} reusing the EnriCode vocabulary (ENRICODE_ERR_TOOL_INPUT_INVALID / EXECUTION_FAILED / EXECUTION_TIMEOUT / EXECUTION_ABORTED); retryable marks 429/5xx/timeouts. If the message carries a Detalle del servidor: fragment in the proxy language, report it verbatim. Video frames and transcription share the SAME video timeline. Animated GIF/WebP/APNG/SVG become representative key frames. model is the active model id for server-side dispatch affinity (max 128 chars, or env ENRIVISION_MODEL; omit for auto-dispatch). Set language (e.g. "es") to match the user language and avoid drift: language controls the analysis RESPONSE language; transcription_language separately controls the language Whisper expects when TRANSCRIBING audio ("auto" = detect only). Ejemplos mínimos: (1) una imagen: {"path": "/tmp/foto.png", "question": "..."}. (2) clip de video 12:34->754s: {"path": "/tmp/charla.mp4", "question": "...", "video": {"clip_start_seconds": 754, "clip_duration_seconds": 30}}. (3) PDF largo multipass: {"path": "/tmp/manual.pdf", "question": "...", "analysis_mode": "multipass"}. Rutas absolutas del host MCP (en Windows valen C:/...; en POSIX lanzarían error). / Minimal examples: (1) single image: {"path": "/tmp/shot.png", "question": "What does each capture show?"}. (2) video clip 12:34->754s: {"path": "/tmp/talk.mp4", "question": "What happens at 12:34?", "video": {"clip_start_seconds": 754, "clip_duration_seconds": 30}}. (3) long PDF multipass: {"path": "/tmp/manual.pdf", "question": "Summarize each chapter.", "analysis_mode": "multipass"}. Absolute MCP-host paths (C:/... drive paths only work on a Windows host; POSIX rejects them). Continuación: si la respuesta trae has_more con cursor (segment_summaries_cursor o transcription_segments_cursor), pida el resto con solo cursor (+ offset opcional, por defecto next_offset; también limit opcional 1-100 para acotar la ventana). Con cursor no mande path/paths. / Continuation: when the response carries has_more with a cursor (segment_summaries_cursor or transcription_segments_cursor), ask for the rest with only cursor (+ optional offset, defaults to next_offset; optional limit 1-100 bounds the window); never send path/paths with cursor. Depuración de capturas de UI: abra con un veredicto de una línea; describa zona por zona; aproxime colores como hex; cuantifique defectos de layout; transcriba etiquetas, botones y errores visibles; compare observado vs esperado cuando aplique. / UI-screenshot debugging (when the media are app screenshots): open with a one-line plain verdict; describe zone by zone (header, sidebar, main content, modals, notifications), not as a general scene; approximate colors as hex values (e.g. #1F6FEB) and name them; quantify layout defects (overflows, clipping, overlaps, misalignments, missing spacing, cut text) estimating pixel magnitudes when possible; transcribe labels, buttons, and any visible error/status text; when the request states what was expected, compare observed vs expected explicitly.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pathNoRuta absoluta a un archivo local en la máquina donde corre el servidor MCP (por ejemplo, C:\\Users\\User\\Downloads\\video.mp4), o una URL http(s) de imagen/video/audio/PDF para descargar y analizar (hasta 64 MiB; hosts locales y redes privadas bloqueados). Una URL solitaria que excede 64 MiB escala a la ingesta `source_url` del servidor (descarga reanudable del lado de EnriProxy con más hops y techo mayor); los archivos locales usan subida reanudable hasta 4 GiB. Cuando `paths` trae al menos una entrada válida, `path` se ignora. / Absolute local file path on the machine running this MCP server (e.g. C:\Users\User\Downloads\video.mp4), or one http(s) URL of image/video/audio/PDF to download and analyze (up to 64 MiB; localhost and private networks blocked). A solitary URL above 64 MiB escalates to the server's `source_url` ingestion (resumable server-side download with extra hops and a higher ceiling); local files use resumable upload up to 4 GiB. When `paths` carries at least one valid entry, `path` is ignored.
audioNoAjuste opcional de multipass para audio (se usa sólo al analizar archivos de audio). Dentro de audio valen timestamps, audioTimestamps o audio_timestamps, segment_seconds o segmentSeconds, max_segments o maxSegments, y los planos audioTimestamps/audio_timestamps/segmentSeconds/segment_seconds/maxSegments/max_segments valen igual (el plano gana sobre ambos anidados). Sin plano, valores distintos entre video y audio para el mismo knob se rechazan. timestamps acepta true/false y "true"/"false". / Optional multipass tuning for audio (only used when analyzing audio files). Inside audio timestamps, audioTimestamps, or audio_timestamps work, as do segment_seconds/segmentSeconds and max_segments/maxSegments; flat aliases work the same (flat wins over both nested). Without a flat, differing video vs audio values for the same knob are rejected. timestamps accepts true/false and "true"/"false".
limitNoMáximo de entradas a leer en esta continuación (1-100; por defecto el tamaño de ventana del servidor). / Maximum entries to read in this continuation (1-100; defaults to the server window size).
modelNoId opcional del modelo activo para afinidad de dispatch del lado servidor (incluido el reroute Muse Spark); texto no vacío de máximo 128 caracteres. También acepta el env ENRIVISION_MODEL. Omita para auto-dispatch. / Optional active model id for server-side dispatch affinity (including the Muse Spark reroute); non-empty text, max 128 chars. Also accepts env ENRIVISION_MODEL. Omit for auto-dispatch.
pathsNoRutas absolutas a varios archivos de imagen locales o URLs http(s) (capturas de UI/sets de fotos; cada URL hasta 64 MiB). Cuando se proporcionan, EnriVision sube un único archivo de conjunto para procesamiento por lotes y reducción del lado servidor. Las entradas en blanco se descartan. / Absolute local paths to several image files, or http(s) image URLs (UI screenshots/photo sets; each URL up to 64 MiB). When provided, EnriVision uploads a single set archive for server-side batching + reduce.
videoNoAjuste opcional de multipass para video. Se usa sólo al analizar videos. Dentro de video valen snake_case y camelCase (clip_start_seconds o clipStartSeconds, segment_seconds o segmentSeconds, max_segments o maxSegments, max_frames_per_segment o maxFramesPerSegment), y los planos clipStartSeconds/clipEndSeconds/clipDurationSeconds/segmentSeconds/maxSegments/maxFramesPerSegment valen igual (el plano gana sobre ambos anidados). Sin plano, video.segment_seconds y audio.segment_seconds (o max_segments) con valores distintos se rechazan: use el plano o solo uno de los dos objetos. / Optional multipass tuning for video. Only used when analyzing videos. Inside video both snake_case and camelCase work, and the flat clipStartSeconds/clipEndSeconds/clipDurationSeconds/segmentSeconds/maxSegments/maxFramesPerSegment aliases work the same (flat wins over both nested). Without a flat, differing video.segment_seconds vs audio.segment_seconds (or max_segments) values are rejected: use the flat or only one of the two objects.
cursorNoCursor opaco de continuación de una respuesta truncada (segment_summaries_cursor o transcription_segments_cursor). Con cursor NO se sube ni analiza nada: solo lee la siguiente ventana de la lista. No se combina con 'path'/'paths'. / Opaque continuation cursor from a truncated response (segment_summaries_cursor or transcription_segments_cursor). With cursor nothing is uploaded or analyzed: it only reads the next window of the list. Cannot be combined with 'path'/'paths'.
imagesNoAjuste opcional de multipass para conjuntos de imágenes (se usa sólo con `paths`). Dentro de images valen snake_case y camelCase (max_images_total o maxImagesTotal, images_per_batch o imagesPerBatch, max_dimension o maxDimension). / Optional multipass tuning for image sets (only used with `paths`). Inside images snake_case and camelCase work.
offsetNoÍndice inicial de la continuación (entero >= 0; por defecto, el next_offset de la respuesta). / Continuation start index (integer >= 0; defaults to the response next_offset).
regionNoRegión relativa de la IMAGEN original para analizar a resolución nativa (zoom; acepta números y strings numéricas como "0.1"). Coordenadas entre 0 y 1; (0,0) es la esquina superior izquierda. Use las cajas devueltas en 'elements' de un análisis previo de la misma imagen: NUNCA invente coordenadas. Ideal para leer texto pequeño (etiquetas, código) que en la imagen completa comprimida resulta ilegible. Regla única: sólo imágenes individuales (`path` o `paths` con un solo elemento); con conjuntos de varias imágenes, video, PDF u otra media no-imagen la llamada se rechaza con error. / Relative REGION of the ORIGINAL image for native-resolution zoom (accepts numbers and numeric strings like "0.1"). Coords between 0 and 1; (0,0) is the top-left corner. Use the boxes returned in 'elements' of a previous analysis of the same image: NEVER invent coordinates. Ideal for small text (labels, code) illegible in the compressed full image. Single images only (`path` or single-entry `paths`); multi-image sets, video, PDF, or other non-image media are rejected.
contextNoPista opcional de análisis: ui, diagram, chart, error, code, meeting, tutorial, photo. Déjelo vacío para detección automática. Máximo 2000 caracteres; si los excede falla antes de subir. / Optional analysis hint: ui, diagram, chart, error, code, meeting, tutorial, photo. Leave empty for auto-detect. Max 2000 chars; longer fails before upload.
documentNoAjuste opcional de multipass para documentos (PDF). Dentro de document valen snake_case, camelCase y los legados max_pages/maxPages/documentMaxPages/document_max_pages. Los planos documentMaxPages/document_max_pages valen igual que document.max_pages_total (el plano gana). / Optional multipass tuning for documents (PDF). Inside document snake_case, camelCase, and legacy max_pages/maxPages/documentMaxPages/document_max_pages work. The flat documentMaxPages/document_max_pages aliases equal document.max_pages_total (flat wins).
languageNoCódigo de idioma preferido de la RESPUESTA del análisis (ISO 639-1), por ejemplo 'es', 'en'. No afecta la transcripción: para eso use 'transcription_language'. Precedencia: parámetro explícito > ENRIVISION_DEFAULT_LANGUAGE > servidor. / Preferred RESPONSE language code of the analysis (ISO 639-1), e.g. 'es', 'en'. Does not affect transcription: use 'transcription_language' for that. Precedence: explicit param > ENRIVISION_DEFAULT_LANGUAGE > server.
questionNoPregunta explícita opcional que responder sobre el archivo (opcional aquí; en EnriCode vision.analyze_media es obligatoria). Máximo 2000 caracteres; si los excede falla antes de subir. / Optional explicit question to answer about the file (optional here; required in EnriCode vision.analyze_media). Max 2000 chars; longer fails before upload.
maxFramesNoAlias de max_frames (entero 1-20, por defecto 20, modo single). Las strings enteras completas valen. / Alias of max_frames (integer 1-20, default 20, single mode). Complete integer strings work.
max_framesNoMáximo opcional de fotogramas para videos, entero 1-20 (por defecto 20), en modo 'single' (pasada única). También acepta maxFrames. Para tiempos específicos, prefiera video.clip_start_seconds + video.clip_duration_seconds. Para multipass, use video.max_frames_per_segment. / Optional max frames for videos, integer 1-20 (default 20), in 'single' mode. Also accepts maxFrames; complete integer strings work.
transcribeNoSobreescritura opcional para activar/desactivar la transcripción de audio en videos. Acepta true/false y "true"/"false" (los demás valores se rechazan). / Optional override to enable/disable audio transcription on videos. Accepts true/false and "true"/"false" (other values are rejected). Has no effect on images/documents (declared in warnings, ignored).
maxSegmentsNoAtajo plano de max_segments (entero 1-60; también vale max_segments). Misma precedencia que segmentSeconds: sin objetos alimenta a ambos, con uno alimenta a ese, con ambos distintos sin plano se rechaza. El plano gana. / Flat shortcut for max_segments (integer 1-60; max_segments also works). Same precedence as segmentSeconds. Flat wins.
analysisModeNoAlias de analysis_mode (mismo selector, mismos presupuestos). / Alias of analysis_mode (same selector, same budgets).
max_segmentsNoAlias plano de maxSegments (entero 1-60). El plano gana sobre video.max_segments y audio.max_segments. / Flat alias for maxSegments (integer 1-60). Flat wins over video.max_segments and audio.max_segments.
analysis_modeNoTambién acepta analysisMode. Selector opcional de modo de análisis. 'single' = una sola pasada, rápida y barata (1 imagen, preguntas simples). 'multipass' = por segmentos/lotes + reducción (PDFs de más de 20 páginas, videos largos, conjuntos). 'auto' = el servidor elige (prefiere multipass para PDFs de más de 20 páginas). Omita si no sabe cuál usar. / Also accepts analysisMode. Optional analysis-mode selector. 'single' = one pass, fast and cheap (1 image, simple questions). 'multipass' = per-segment/batch + reduce (PDFs over ~20 pages, long videos, sets). 'auto' = the server picks (prefers multipass for PDFs over ~20 pages). Omit if unsure.
clipEndSecondsNoAtajo plano de video.clip_end_seconds (0-86400 s, mayor que el inicio; también vale clip_end_seconds). La duración se calcula como fin menos inicio. El plano gana sobre el anidado. / Flat shortcut for video.clip_end_seconds (0-86400 s, greater than start; clip_end_seconds also works). Duration derives as end minus start. Flat wins over nested.
segmentSecondsNoAtajo plano de segment_seconds (5-600 s; también vale segment_seconds). Sin objetos video/audio alimenta a ambos y el servidor aplica el que corresponda; con un solo objeto alimenta a ese; con ambos y sin plano, valores distintos se rechazan. El plano gana sobre ambos anidados. / Flat shortcut for segment_seconds (5-600 s; segment_seconds also works). Without video/audio objects it feeds both and the server applies the matching one; with one object it feeds that one; with both and differing values (no flat) it is rejected. Flat wins over both nested.
audioTimestampsNoAtajo plano de audio.timestamps (también vale audio_timestamps; acepta true/false y "true"/"false"). Solo aplica a audio. El plano gana sobre el anidado. / Flat shortcut for audio.timestamps (audio_timestamps also works; accepts true/false and "true"/"false"). Audio only. Flat wins over nested.
segment_secondsNoAlias plano de segmentSeconds (5-600 s). El plano gana sobre video.segment_seconds y audio.segment_seconds. / Flat alias for segmentSeconds (5-600 s). Flat wins over video.segment_seconds and audio.segment_seconds.
audio_timestampsNoAlias plano de audioTimestamps (solo audio). El plano gana sobre el anidado. / Flat alias for audioTimestamps (audio only). Flat wins over nested.
clipStartSecondsNoAtajo plano de video.clip_start_seconds (0-86400 s; también vale clip_start_seconds). Para 12:34 use 754. El plano gana sobre el anidado. / Flat shortcut for video.clip_start_seconds (0-86400 s; clip_start_seconds also works). For 12:34 use 754. Flat wins over nested.
clip_end_secondsNoAlias plano de clipEndSeconds (0-86400 s). El plano gana sobre el anidado. / Flat alias for clipEndSeconds (0-86400 s). Flat wins over nested.
documentMaxPagesNoAtajo plano de document.max_pages_total (entero 1-200; también vale document_max_pages). Solo aplica a documentos. El plano gana sobre el anidado. / Flat shortcut for document.max_pages_total (integer 1-200; document_max_pages also works). Documents only. Flat wins over nested.
clip_start_secondsNoAlias plano de clipStartSeconds (0-86400 s). El plano gana sobre el anidado. / Flat alias for clipStartSeconds (0-86400 s). Flat wins over nested.
document_max_pagesNoAlias plano de documentMaxPages (entero 1-200, solo documentos). El plano gana sobre el anidado. / Flat alias for documentMaxPages (integer 1-200, documents only). Flat wins over nested.
clipDurationSecondsNoAtajo plano de video.clip_duration_seconds (mayor que 0, hasta 86400 s; también vale clip_duration_seconds). Úselo junto a clipStartSeconds. El plano gana sobre el anidado. / Flat shortcut for video.clip_duration_seconds (greater than 0, up to 86400 s; clip_duration_seconds also works). Use with clipStartSeconds. Flat wins over nested.
maxFramesPerSegmentNoAtajo plano de video.max_frames_per_segment (entero 1-20; también vale max_frames_per_segment). Solo aplica a video; con audio se rechaza. El plano gana sobre el anidado. / Flat shortcut for video.max_frames_per_segment (integer 1-20; max_frames_per_segment also works). Video only; rejected with audio. Flat wins over nested.
clip_duration_secondsNoAlias plano de clipDurationSeconds (hasta 86400 s). El plano gana sobre el anidado. / Flat alias for clipDurationSeconds (up to 86400 s). Flat wins over nested.
transcriptionLanguageNoAlias de transcription_language (misma pista, misma precedencia). / Alias of transcription_language (same hint, same precedence).
max_frames_per_segmentNoAlias plano de maxFramesPerSegment (entero 1-20, solo video). El plano gana sobre el anidado. / Flat alias for maxFramesPerSegment (integer 1-20, video only). Flat wins over nested.
transcription_languageNoTambién acepta transcriptionLanguage. Pista opcional de idioma que Whisper espera al TRANSCRIBIR el audio/video (por ejemplo, 'auto', 'es', 'en'; 'auto' = detectar solo). No cambia el idioma de la respuesta: para eso use 'language'. / Also accepts transcriptionLanguage. Optional hint for the language Whisper expects when TRANSCRIBING audio/video (e.g. 'auto', 'es', 'en'; 'auto' = detect only). Does not change the response language: use 'language' for that.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
analysisYesAnálisis en texto producido por EnriProxy. / Text analysis produced by EnriProxy.
elementsNoCajas de elementos detectados en análisis de imagen (coordenadas relativas 0-1, reutilizables como `region`). / Detected element boxes in image analyses (relative 0-1 coords, reusable as `region`).
warningsNoAvisos de honestidad bilingües (por ejemplo, ventana de clip recortada al límite de 24 h). Solo presente cuando el parseo ajustó un valor pedido. / Honesty warnings (bilingual, e.g. clip window trimmed to the 24 h limit). Only present when parsing adjusted a requested value.
extractionYesMetadatos de extracción devueltos por el servidor (sin identificadores internos). Las strings muy largas se recortan principio+fin con el marcador […truncado…]; la forma del objeto se preserva. / Extraction metadata returned by the server (no internal ids). Very long strings are head+tail trimmed with a […truncated…] marker; object shape is preserved.
media_typeYesTipo de media detectado. / Detected media type.
analysis_truncatedNo`true` cuando `analysis` se truncó al tope de `structuredContent` (262144 caracteres en puntos de código; se conservan principio y fin). / Flag that is true when `analysis` was truncated to the `structuredContent` cap (262144 chars in code points; head and tail kept).
analysis_total_charsNoTotal de caracteres (puntos de código) del análisis completo antes de truncar. / Total chars (code points) of the full analysis before truncation.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changedv0.1.7
    • changedInput schema / anyOf
      Previous value: -[
      -  {
      -    "required": [
      -      "path"
      -    ]
      -  },
      -  {
      -    "required": [
      -      "paths"
      -    ]
      -  }
      -]New value: +[
      +  {
      +    "required": [
      +      "path"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "paths"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "cursor"
      +    ]
      +  }
      +]
    • addedInput schema / properties / limit
      Added value: +{
      +  "description": "Máximo de entradas a leer en esta continuación (1-100; por defecto el tamaño de ventana del servidor). / Maximum entries to read in this continuation (1-100; defaults to the server window size).",
      +  "maximum": 100,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • changedInput schema / properties / offset / type
      Previous value: -[
      -  "number",
      -  "string"
      -]New value: +"integer"
    • changedInput schema / properties / path / description
      Previous value: -"Ruta absoluta a un archivo local en la máquina donde corre el servidor MCP (por ejemplo, C:\\\\Users\\\\User\\\\Downloads\\\\video.mp4), o una URL http(s) de imagen/video/audio/PDF para descargar y analizar (hasta 64 MiB; hosts locales y redes privadas bloqueados). Cuando `paths` trae al menos una entrada válida, `path` se ignora. / Absolute local file path on the machine running this MCP server (e.g. C:\\Users\\User\\Downloads\\video.mp4), or one http(s) URL of image/video/audio/PDF to download and analyze (up to 64 MiB; localhost and private networks blocked)."New value: +"Ruta absoluta a un archivo local en la máquina donde corre el servidor MCP (por ejemplo, C:\\\\Users\\\\User\\\\Downloads\\\\video.mp4), o una URL http(s) de imagen/video/audio/PDF para descargar y analizar (hasta 64 MiB; hosts locales y redes privadas bloqueados). Una URL solitaria que excede 64 MiB escala a la ingesta `source_url` del servidor (descarga reanudable del lado de EnriProxy con más hops y techo mayor); los archivos locales usan subida reanudable hasta 4 GiB. Cuando `paths` trae al menos una entrada válida, `path` se ignora. / Absolute local file path on the machine running this MCP server (e.g. C:\\Users\\User\\Downloads\\video.mp4), or one http(s) URL of image/video/audio/PDF to download and analyze (up to 64 MiB; localhost and private networks blocked). A solitary URL above 64 MiB escalates to the server's `source_url` ingestion (resumable server-side download with extra hops and a higher ceiling); local files use resumable upload up to 4 GiB. When `paths` carries at least one valid entry, `path` is ignored."
  2. Changed100 schema fields changedv0.1.6
    • addedInput schema / properties / analysisMode
      Added value: +{
      +  "description": "Alias de analysis_mode (mismo selector, mismos presupuestos). / Alias of analysis_mode (same selector, same budgets).",
      +  "enum": [
      +    "auto",
      +    "single",
      +    "multipass"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / analysis_mode / description
      Previous value: -"Selector opcional de modo de análisis: auto, single o multipass."New value: +"También acepta analysisMode. Selector opcional de modo de análisis. 'single' = una sola pasada, rápida y barata (1 imagen, preguntas simples). 'multipass' = por segmentos/lotes + reducción (PDFs de más de 20 páginas, videos largos, conjuntos). 'auto' = el servidor elige (prefiere multipass para PDFs de más de 20 páginas). Omita si no sabe cuál usar. / Also accepts analysisMode. Optional analysis-mode selector. 'single' = one pass, fast and cheap (1 image, simple questions). 'multipass' = per-segment/batch + reduce (PDFs over ~20 pages, long videos, sets). 'auto' = the server picks (prefers multipass for PDFs over ~20 pages). Omit if unsure."
    • changedInput schema / properties / audio / description
      Previous value: -"Ajuste opcional de multipass para audio (se usa sólo al analizar archivos de audio)."New value: +"Ajuste opcional de multipass para audio (se usa sólo al analizar archivos de audio). Dentro de audio valen timestamps, audioTimestamps o audio_timestamps, segment_seconds o segmentSeconds, max_segments o maxSegments, y los planos audioTimestamps/audio_timestamps/segmentSeconds/segment_seconds/maxSegments/max_segments valen igual (el plano gana sobre ambos anidados). Sin plano, valores distintos entre video y audio para el mismo knob se rechazan. timestamps acepta true/false y \"true\"/\"false\". / Optional multipass tuning for audio (only used when analyzing audio files). Inside audio timestamps, audioTimestamps, or audio_timestamps work, as do segment_seconds/segmentSeconds and max_segments/maxSegments; flat aliases work the same (flat wins over both nested). Without a flat, differing video vs audio values for the same knob are rejected. timestamps accepts true/false and \"true\"/\"false\"."
    • addedInput schema / properties / audio / properties / audioTimestamps
      Added value: +{
      +  "description": "Alias de timestamps (acepta true/false y \"true\"/\"false\"). El plano gana sobre el anidado. / Alias of timestamps (accepts true/false and \"true\"/\"false\"). Flat wins over nested.",
      +  "type": [
      +    "boolean",
      +    "string"
      +  ]
      +}
    • addedInput schema / properties / audio / properties / audio_timestamps
      Added value: +{
      +  "description": "Alias de timestamps (solo audio). El plano gana sobre el anidado. / Alias of timestamps (audio only). Flat wins over nested.",
      +  "type": [
      +    "boolean",
      +    "string"
      +  ]
      +}
    • addedInput schema / properties / audio / properties / maxSegments
      Added value: +{
      +  "description": "Alias de max_segments para audio (entero 1-60). El plano gana sobre el anidado. / Alias of max_segments for audio (integer 1-60). Flat wins over nested.",
      +  "type": [
      +    "integer",
      +    "string"
      +  ]
      +}
    • changedInput schema / properties / audio / properties / max_segments / description
      Previous value: -"Número máximo de segmentos de audio a analizar."New value: +"Número máximo de segmentos de audio a analizar (entero 1-60; el servidor rechaza valores mayores). / Max audio segments to analyze (integer 1-60; the server rejects larger values)."
    • changedInput schema / properties / audio / properties / max_segments / type
      Previous value: -"integer"New value: +[
      +  "integer",
      +  "string"
      +]
    • addedInput schema / properties / audio / properties / segmentSeconds
      Added value: +{
      +  "description": "Alias de segment_seconds para audio (5-600; por defecto 60). El plano gana sobre el anidado. / Alias of segment_seconds for audio (5-600; default 60). Flat wins over nested.",
      +  "type": [
      +    "number",
      +    "string"
      +  ]
      +}
    • changedInput schema / properties / audio / properties / segment_seconds / description
      Previous value: -"Duración del segmento en segundos para multipass de audio."New value: +"Duración del segmento en segundos para multipass de audio (5-600; por defecto 60). / Segment duration in seconds for audio multipass (5-600; default 60)."
    • changedInput schema / properties / audio / properties / segment_seconds / type
      Previous value: -"number"New value: +[
      +  "number",
      +  "string"
      +]
    • changedInput schema / properties / audio / properties / timestamps / description
      Previous value: -"Si incluir segmentos con marca de tiempo en la extracción de audio."New value: +"Si incluir segmentos con marca de tiempo en la extracción de audio. / Whether to include timestamped segments in the audio extraction."
    • changedInput schema / properties / audio / properties / timestamps / type
      Previous value: -"boolean"New value: +[
      +  "boolean",
      +  "string"
      +]
    • addedInput schema / properties / audioTimestamps
      Added value: +{
      +  "description": "Atajo plano de audio.timestamps (también vale audio_timestamps; acepta true/false y \"true\"/\"false\"). Solo aplica a audio. El plano gana sobre el anidado. / Flat shortcut for audio.timestamps (audio_timestamps also works; accepts true/false and \"true\"/\"false\"). Audio only. Flat wins over nested.",
      +  "type": [
      +    "boolean",
      +    "string"
      +  ]
      +}
    • addedInput schema / properties / audio_timestamps
      Added value: +{
      +  "description": "Alias plano de audioTimestamps (solo audio). El plano gana sobre el anidado. / Flat alias for audioTimestamps (audio only). Flat wins over nested.",
      +  "type": [
      +    "boolean",
      +    "string"
      +  ]
      +}
    • addedInput schema / properties / clipDurationSeconds
      Added value: +{
      +  "description": "Atajo plano de video.clip_duration_seconds (mayor que 0, hasta 86400 s; también vale clip_duration_seconds). Úselo junto a clipStartSeconds. El plano gana sobre el anidado. / Flat shortcut for video.clip_duration_seconds (greater than 0, up to 86400 s; clip_duration_seconds also works). Use with clipStartSeconds. Flat wins over nested.",
      +  "type": [
      +    "number",
      +    "string"
      +  ]
      +}
    • addedInput schema / properties / clipEndSeconds
      Added value: +{
      +  "description": "Atajo plano de video.clip_end_seconds (0-86400 s, mayor que el inicio; también vale clip_end_seconds). La duración se calcula como fin menos inicio. El plano gana sobre el anidado. / Flat shortcut for video.clip_end_seconds (0-86400 s, greater than start; clip_end_seconds also works). Duration derives as end minus start. Flat wins over nested.",
      +  "type": [
      +    "number",
      +    "string"
      +  ]
      +}
    • addedInput schema / properties / clipStartSeconds
      Added value: +{
      +  "description": "Atajo plano de video.clip_start_seconds (0-86400 s; también vale clip_start_seconds). Para 12:34 use 754. El plano gana sobre el anidado. / Flat shortcut for video.clip_start_seconds (0-86400 s; clip_start_seconds also works). For 12:34 use 754. Flat wins over nested.",
      +  "type": [
      +    "number",
      +    "string"
      +  ]
      +}
    • addedInput schema / properties / clip_duration_seconds
      Added value: +{
      +  "description": "Alias plano de clipDurationSeconds (hasta 86400 s). El plano gana sobre el anidado. / Flat alias for clipDurationSeconds (up to 86400 s). Flat wins over nested.",
      +  "type": [
      +    "number",
      +    "string"
      +  ]
      +}
    • addedInput schema / properties / clip_end_seconds
      Added value: +{
      +  "description": "Alias plano de clipEndSeconds (0-86400 s). El plano gana sobre el anidado. / Flat alias for clipEndSeconds (0-86400 s). Flat wins over nested.",
      +  "type": [
      +    "number",
      +    "string"
      +  ]
      +}
    • addedInput schema / properties / clip_start_seconds
      Added value: +{
      +  "description": "Alias plano de clipStartSeconds (0-86400 s). El plano gana sobre el anidado. / Flat alias for clipStartSeconds (0-86400 s). Flat wins over nested.",
      +  "type": [
      +    "number",
      +    "string"
      +  ]
      +}
    • changedInput schema / properties / context / description
      Previous value: -"Pista opcional de análisis: ui, diagram, chart, error, code, meeting, tutorial, photo. Déjelo vacío para detección automática."New value: +"Pista opcional de análisis: ui, diagram, chart, error, code, meeting, tutorial, photo. Déjelo vacío para detección automática. Máximo 2000 caracteres; si los excede falla antes de subir. / Optional analysis hint: ui, diagram, chart, error, code, meeting, tutorial, photo. Leave empty for auto-detect. Max 2000 chars; longer fails before upload."
    • addedInput schema / properties / cursor
      Added value: +{
      +  "description": "Cursor opaco de continuación de una respuesta truncada (segment_summaries_cursor o transcription_segments_cursor). Con cursor NO se sube ni analiza nada: solo lee la siguiente ventana de la lista. No se combina con 'path'/'paths'. / Opaque continuation cursor from a truncated response (segment_summaries_cursor or transcription_segments_cursor). With cursor nothing is uploaded or analyzed: it only reads the next window of the list. Cannot be combined with 'path'/'paths'.",
      +  "type": "string"
      +}
    • changedInput schema / properties / document / description
      Previous value: -"Ajuste opcional de multipass para documentos (PDF)."New value: +"Ajuste opcional de multipass para documentos (PDF). Dentro de document valen snake_case, camelCase y los legados max_pages/maxPages/documentMaxPages/document_max_pages. Los planos documentMaxPages/document_max_pages valen igual que document.max_pages_total (el plano gana). / Optional multipass tuning for documents (PDF). Inside document snake_case, camelCase, and legacy max_pages/maxPages/documentMaxPages/document_max_pages work. The flat documentMaxPages/document_max_pages aliases equal document.max_pages_total (flat wins)."
    • addedInput schema / properties / document / properties / documentMaxPages
      Added value: +{
      +  "description": "Alias legado de max_pages_total (entero 1-200). El plano gana sobre el anidado. / Legacy alias of max_pages_total (integer 1-200). Flat wins over nested.",
      +  "type": [
      +    "integer",
      +    "string"
      +  ]
      +}
    • addedInput schema / properties / document / properties / document_max_pages
      Added value: +{
      +  "description": "Alias legado de max_pages_total (entero 1-200). El plano gana sobre el anidado. / Legacy alias of max_pages_total (integer 1-200). Flat wins over nested.",
      +  "type": [
      +    "integer",
      +    "string"
      +  ]
      +}
    • addedInput schema / properties / document / properties / maxImagesPerBatch
      Added value: +{
      +  "description": "Alias de max_images_per_batch (entero 0-20; 0 = sin render). / Alias of max_images_per_batch (integer 0-20; 0 = no render).",
      +  "type": [
      +    "integer",
      +    "string"
      +  ]
      +}
    • addedInput schema / properties / document / properties / maxPages
      Added value: +{
      +  "description": "Alias legado de max_pages_total (entero 1-200). El plano gana sobre el anidado. / Legacy alias of max_pages_total (integer 1-200). Flat wins over nested.",
      +  "type": [
      +    "integer",
      +    "string"
      +  ]
      +}
    • addedInput schema / properties / document / properties / maxPagesTotal
      Added value: +{
      +  "description": "Alias de max_pages_total (entero 1-200; por defecto 20). El plano gana sobre el anidado. / Alias of max_pages_total (integer 1-200; default 20). Flat wins over nested.",
      +  "type": [
      +    "integer",
      +    "string"
      +  ]
      +}
    • changedInput schema / properties / document / properties / max_images_per_batch / description
      Previous value: -"Máximo de páginas renderizadas (imágenes) por lote."New value: +"Máximo de páginas renderizadas (imágenes) por lote (entero 0-20; 0 = sin render). Más imágenes = más costo de visión; omita para el valor del servidor. / Max rendered (image) pages per batch (integer 0-20; 0 = no render). More images = more vision cost; omit for the server value."
    • changedInput schema / properties / document / properties / max_images_per_batch / type
      Previous value: -"integer"New value: +[
      +  "integer",
      +  "string"
      +]
    • addedInput schema / properties / document / properties / max_pages
      Added value: +{
      +  "description": "Alias legado de max_pages_total (entero 1-200). El plano gana sobre el anidado. / Legacy alias of max_pages_total (integer 1-200). Flat wins over nested.",
      +  "type": [
      +    "integer",
      +    "string"
      +  ]
      +}
    • changedInput schema / properties / document / properties / max_pages_total / description
      Previous value: -"Número máximo de páginas a analizar en total."New value: +"Número máximo de páginas a analizar en total (entero 1-200; por defecto 20). Más páginas = más costo y tiempo; omita para pocas páginas. / Max pages to analyze in total (integer 1-200; default 20). More pages = more cost and time; omit for few pages."
    • changedInput schema / properties / document / properties / max_pages_total / type
      Previous value: -"integer"New value: +[
      +  "integer",
      +  "string"
      +]
    • addedInput schema / properties / document / properties / pagesPerBatch
      Added value: +{
      +  "description": "Alias de pages_per_batch (entero 1-200). / Alias of pages_per_batch (integer 1-200).",
      +  "type": [
      +    "integer",
      +    "string"
      +  ]
      +}
    • changedInput schema / properties / document / properties / pages_per_batch / description
      Previous value: -"Páginas por lote para las llamadas map de multipass."New value: +"Páginas por lote para las llamadas map de multipass (entero 1-200). Lotes chicos = más llamadas pero menos memoria; omita para el valor del servidor. / Pages per batch for multipass map calls (integer 1-200). Smaller batches = more calls but less memory; omit for the server value."
    • changedInput schema / properties / document / properties / pages_per_batch / type
      Previous value: -"integer"New value: +[
      +  "integer",
      +  "string"
      +]
    • addedInput schema / properties / document / properties / scannedTextThresholdChars
      Added value: +{
      +  "description": "Alias de scanned_text_threshold_chars (entero 0-5000). / Alias of scanned_text_threshold_chars (integer 0-5000).",
      +  "type": [
      +    "integer",
      +    "string"
      +  ]
      +}
    • changedInput schema / properties / document / properties / scanned_text_threshold_chars / description
      Previous value: -"Longitud mínima de texto extraído para tratar una página como textual."New value: +"Longitud mínima de texto extraído para tratar una página como textual en vez de escaneada (entero 0-5000). Sólo afecta el enrutamiento texto-vs-visión; omita para el valor del servidor. / Min extracted-text length to treat a page as textual instead of scanned (integer 0-5000). Only affects text-vs-vision routing; omit for the server value."
    • changedInput schema / properties / document / properties / scanned_text_threshold_chars / type
      Previous value: -"integer"New value: +[
      +  "integer",
      +  "string"
      +]
    • addedInput schema / properties / documentMaxPages
      Added value: +{
      +  "description": "Atajo plano de document.max_pages_total (entero 1-200; también vale document_max_pages). Solo aplica a documentos. El plano gana sobre el anidado. / Flat shortcut for document.max_pages_total (integer 1-200; document_max_pages also works). Documents only. Flat wins over nested.",
      +  "type": [
      +    "integer",
      +    "string"
      +  ]
      +}
    • addedInput schema / properties / document_max_pages
      Added value: +{
      +  "description": "Alias plano de documentMaxPages (entero 1-200, solo documentos). El plano gana sobre el anidado. / Flat alias for documentMaxPages (integer 1-200, documents only). Flat wins over nested.",
      +  "type": [
      +    "integer",
      +    "string"
      +  ]
      +}
    • changedInput schema / properties / images / description
      Previous value: -"Ajuste opcional de multipass para conjuntos de imágenes (se usa sólo con `paths`)."New value: +"Ajuste opcional de multipass para conjuntos de imágenes (se usa sólo con `paths`). Dentro de images valen snake_case y camelCase (max_images_total o maxImagesTotal, images_per_batch o imagesPerBatch, max_dimension o maxDimension). / Optional multipass tuning for image sets (only used with `paths`). Inside images snake_case and camelCase work."
    • addedInput schema / properties / images / properties / imagesPerBatch
      Added value: +{
      +  "description": "Alias de images_per_batch (entero 1-20). / Alias of images_per_batch (integer 1-20).",
      +  "type": [
      +    "integer",
      +    "string"
      +  ]
      +}
    • changedInput schema / properties / images / properties / images_per_batch / description
      Previous value: -"Imágenes por lote para las llamadas map de multipass."New value: +"Imágenes por lote para las llamadas map de multipass (entero 1-20). Lotes chicos = más llamadas pero menos memoria; omita para el valor del servidor. / Images per batch for multipass map calls (integer 1-20). Smaller batches = more calls but less memory; omit for the server value."
    • changedInput schema / properties / images / properties / images_per_batch / type
      Previous value: -"integer"New value: +[
      +  "integer",
      +  "string"
      +]
    • addedInput schema / properties / images / properties / maxDimension
      Added value: +{
      +  "description": "Alias de max_dimension (entero 256-4096). / Alias of max_dimension (integer 256-4096).",
      +  "type": [
      +    "integer",
      +    "string"
      +  ]
      +}
    • addedInput schema / properties / images / properties / maxImagesTotal
      Added value: +{
      +  "description": "Alias de max_images_total (entero 1-500). / Alias of max_images_total (integer 1-500).",
      +  "type": [
      +    "integer",
      +    "string"
      +  ]
      +}
    • changedInput schema / properties / images / properties / max_dimension / description
      Previous value: -"Dimensión máxima para las imágenes (ancho/alto)."New value: +"Dimensión máxima de cada imagen en píxeles, ancho/alto (entero 256-4096). Valores grandes = más detalle y más costo; omita para el valor del servidor. / Max image dimension in pixels, width/height (integer 256-4096). Larger values = more detail and more cost; omit for the server value."
    • changedInput schema / properties / images / properties / max_dimension / type
      Previous value: -"integer"New value: +[
      +  "integer",
      +  "string"
      +]
    • changedInput schema / properties / images / properties / max_images_total / description
      Previous value: -"Número máximo de imágenes a analizar en total."New value: +"Número máximo de imágenes del conjunto a analizar (entero 1-500). Más imágenes = más costo y tiempo; omita para analizarlas todas. / Max set images to analyze (integer 1-500). More images = more cost and time; omit to analyze all."
    • changedInput schema / properties / images / properties / max_images_total / type
      Previous value: -"integer"New value: +[
      +  "integer",
      +  "string"
      +]
    • changedInput schema / properties / language / description
      Previous value: -"Código de idioma preferido de respuesta (ISO 639-1), por ejemplo 'es', 'en'."New value: +"Código de idioma preferido de la RESPUESTA del análisis (ISO 639-1), por ejemplo 'es', 'en'. No afecta la transcripción: para eso use 'transcription_language'. Precedencia: parámetro explícito > ENRIVISION_DEFAULT_LANGUAGE > servidor. / Preferred RESPONSE language code of the analysis (ISO 639-1), e.g. 'es', 'en'. Does not affect transcription: use 'transcription_language' for that. Precedence: explicit param > ENRIVISION_DEFAULT_LANGUAGE > server."
    • addedInput schema / properties / maxFrames
      Added value: +{
      +  "description": "Alias de max_frames (entero 1-20, por defecto 20, modo single). Las strings enteras completas valen. / Alias of max_frames (integer 1-20, default 20, single mode). Complete integer strings work.",
      +  "type": [
      +    "integer",
      +    "string"
      +  ]
      +}
    • addedInput schema / properties / maxFramesPerSegment
      Added value: +{
      +  "description": "Atajo plano de video.max_frames_per_segment (entero 1-20; también vale max_frames_per_segment). Solo aplica a video; con audio se rechaza. El plano gana sobre el anidado. / Flat shortcut for video.max_frames_per_segment (integer 1-20; max_frames_per_segment also works). Video only; rejected with audio. Flat wins over nested.",
      +  "type": [
      +    "integer",
      +    "string"
      +  ]
      +}
    • addedInput schema / properties / maxSegments
      Added value: +{
      +  "description": "Atajo plano de max_segments (entero 1-60; también vale max_segments). Misma precedencia que segmentSeconds: sin objetos alimenta a ambos, con uno alimenta a ese, con ambos distintos sin plano se rechaza. El plano gana. / Flat shortcut for max_segments (integer 1-60; max_segments also works). Same precedence as segmentSeconds. Flat wins.",
      +  "type": [
      +    "integer",
      +    "string"
      +  ]
      +}
    • changedInput schema / properties / max_frames / description
      Previous value: -"Máximo opcional de fotogramas para videos (1-20) en modo single-pass. Para tiempos específicos, prefiera video.clip_start_seconds + video.clip_duration_seconds. Para multipass, use video.max_frames_per_segment."New value: +"Máximo opcional de fotogramas para videos, entero 1-20 (por defecto 20), en modo 'single' (pasada única). También acepta maxFrames. Para tiempos específicos, prefiera video.clip_start_seconds + video.clip_duration_seconds. Para multipass, use video.max_frames_per_segment. / Optional max frames for videos, integer 1-20 (default 20), in 'single' mode. Also accepts maxFrames; complete integer strings work."
    • changedInput schema / properties / max_frames / type
      Previous value: -"integer"New value: +[
      +  "integer",
      +  "string"
      +]
    • addedInput schema / properties / max_frames_per_segment
      Added value: +{
      +  "description": "Alias plano de maxFramesPerSegment (entero 1-20, solo video). El plano gana sobre el anidado. / Flat alias for maxFramesPerSegment (integer 1-20, video only). Flat wins over nested.",
      +  "type": [
      +    "integer",
      +    "string"
      +  ]
      +}
    • addedInput schema / properties / max_segments
      Added value: +{
      +  "description": "Alias plano de maxSegments (entero 1-60). El plano gana sobre video.max_segments y audio.max_segments. / Flat alias for maxSegments (integer 1-60). Flat wins over video.max_segments and audio.max_segments.",
      +  "type": [
      +    "integer",
      +    "string"
      +  ]
      +}
    • addedInput schema / properties / model
      Added value: +{
      +  "description": "Id opcional del modelo activo para afinidad de dispatch del lado servidor (incluido el reroute Muse Spark); texto no vacío de máximo 128 caracteres. También acepta el env ENRIVISION_MODEL. Omita para auto-dispatch. / Optional active model id for server-side dispatch affinity (including the Muse Spark reroute); non-empty text, max 128 chars. Also accepts env ENRIVISION_MODEL. Omit for auto-dispatch.",
      +  "type": "string"
      +}
    • addedInput schema / properties / offset
      Added value: +{
      +  "description": "Índice inicial de la continuación (entero >= 0; por defecto, el next_offset de la respuesta). / Continuation start index (integer >= 0; defaults to the response next_offset).",
      +  "type": [
      +    "number",
      +    "string"
      +  ]
      +}
    • changedInput schema / properties / path / description
      Previous value: -"Ruta absoluta a un archivo local en la máquina donde corre el servidor MCP (por ejemplo, C:\\\\Users\\\\User\\\\Downloads\\\\video.mp4), o una URL http(s) de imagen/video/audio/PDF para descargar y analizar (hasta 64 MiB; hosts locales y redes privadas bloqueados)."New value: +"Ruta absoluta a un archivo local en la máquina donde corre el servidor MCP (por ejemplo, C:\\\\Users\\\\User\\\\Downloads\\\\video.mp4), o una URL http(s) de imagen/video/audio/PDF para descargar y analizar (hasta 64 MiB; hosts locales y redes privadas bloqueados). Cuando `paths` trae al menos una entrada válida, `path` se ignora. / Absolute local file path on the machine running this MCP server (e.g. C:\\Users\\User\\Downloads\\video.mp4), or one http(s) URL of image/video/audio/PDF to download and analyze (up to 64 MiB; localhost and private networks blocked)."
    • changedInput schema / properties / paths / description
      Previous value: -"Rutas absolutas a varios archivos de imagen locales o URLs http(s) (capturas de UI/sets de fotos; cada URL hasta 64 MiB). Cuando se proporcionan, EnriVision sube un único archivo de conjunto para procesamiento por lotes y reducción del lado servidor."New value: +"Rutas absolutas a varios archivos de imagen locales o URLs http(s) (capturas de UI/sets de fotos; cada URL hasta 64 MiB). Cuando se proporcionan, EnriVision sube un único archivo de conjunto para procesamiento por lotes y reducción del lado servidor. Las entradas en blanco se descartan. / Absolute local paths to several image files, or http(s) image URLs (UI screenshots/photo sets; each URL up to 64 MiB). When provided, EnriVision uploads a single set archive for server-side batching + reduce."
    • addedInput schema / properties / paths / items / description
      Added value: +"Una imagen: ruta absoluta local o URL http(s) (hasta 64 MiB; hosts locales y redes privadas bloqueados). / One image: absolute local path or http(s) URL (up to 64 MiB; localhost and private networks blocked)."
    • changedInput schema / properties / question / description
      Previous value: -"Pregunta explícita opcional que responder sobre el archivo."New value: +"Pregunta explícita opcional que responder sobre el archivo (opcional aquí; en EnriCode vision.analyze_media es obligatoria). Máximo 2000 caracteres; si los excede falla antes de subir. / Optional explicit question to answer about the file (optional here; required in EnriCode vision.analyze_media). Max 2000 chars; longer fails before upload."
    • changedInput schema / properties / region / description
      Previous value: -"Región relativa de la IMAGEN original para analizar a resolución nativa (zoom). Coordenadas entre 0 y 1; (0,0) es la esquina superior izquierda. Use las cajas devueltas en 'elements' de un análisis previo de la misma imagen: NUNCA invente coordenadas. Ideal para leer texto pequeño (labels, código) que en la imagen completa comprimida resulta ilegible. Sólo imágenes (path, no paths)."New value: +"Región relativa de la IMAGEN original para analizar a resolución nativa (zoom; acepta números y strings numéricas como \"0.1\"). Coordenadas entre 0 y 1; (0,0) es la esquina superior izquierda. Use las cajas devueltas en 'elements' de un análisis previo de la misma imagen: NUNCA invente coordenadas. Ideal para leer texto pequeño (etiquetas, código) que en la imagen completa comprimida resulta ilegible. Regla única: sólo imágenes individuales (`path` o `paths` con un solo elemento); con conjuntos de varias imágenes, video, PDF u otra media no-imagen la llamada se rechaza con error. / Relative REGION of the ORIGINAL image for native-resolution zoom (accepts numbers and numeric strings like \"0.1\"). Coords between 0 and 1; (0,0) is the top-left corner. Use the boxes returned in 'elements' of a previous analysis of the same image: NEVER invent coordinates. Ideal for small text (labels, code) illegible in the compressed full image. Single images only (`path` or single-entry `paths`); multi-image sets, video, PDF, or other non-image media are rejected."
    • changedInput schema / properties / region / properties / height / description
      Previous value: -"Alto relativo (1 = alto completo)."New value: +"Alto relativo (1 = alto completo). / Relative height (1 = full height)."
    • changedInput schema / properties / region / properties / height / type
      Previous value: -"number"New value: +[
      +  "number",
      +  "string"
      +]
    • changedInput schema / properties / region / properties / width / description
      Previous value: -"Ancho relativo (1 = ancho completo)."New value: +"Ancho relativo (1 = ancho completo). / Relative width (1 = full width)."
    • changedInput schema / properties / region / properties / width / type
      Previous value: -"number"New value: +[
      +  "number",
      +  "string"
      +]
    • changedInput schema / properties / region / properties / x / description
      Previous value: -"Coordenada horizontal relativa de la esquina superior izquierda (0 = borde izquierdo)."New value: +"Coordenada horizontal relativa de la esquina superior izquierda (0 = borde izquierdo). / Relative horizontal coord of the top-left corner (0 = left edge)."
    • changedInput schema / properties / region / properties / x / type
      Previous value: -"number"New value: +[
      +  "number",
      +  "string"
      +]
    • changedInput schema / properties / region / properties / y / description
      Previous value: -"Coordenada vertical relativa de la esquina superior izquierda (0 = borde superior)."New value: +"Coordenada vertical relativa de la esquina superior izquierda (0 = borde superior). / Relative vertical coord of the top-left corner (0 = top edge)."
    • changedInput schema / properties / region / properties / y / type
      Previous value: -"number"New value: +[
      +  "number",
      +  "string"
      +]
    • addedInput schema / properties / segmentSeconds
      Added value: +{
      +  "description": "Atajo plano de segment_seconds (5-600 s; también vale segment_seconds). Sin objetos video/audio alimenta a ambos y el servidor aplica el que corresponda; con un solo objeto alimenta a ese; con ambos y sin plano, valores distintos se rechazan. El plano gana sobre ambos anidados. / Flat shortcut for segment_seconds (5-600 s; segment_seconds also works). Without video/audio objects it feeds both and the server applies the matching one; with one object it feeds that one; with both and differing values (no flat) it is rejected. Flat wins over both nested.",
      +  "type": [
      +    "number",
      +    "string"
      +  ]
      +}
    • addedInput schema / properties / segment_seconds
      Added value: +{
      +  "description": "Alias plano de segmentSeconds (5-600 s). El plano gana sobre video.segment_seconds y audio.segment_seconds. / Flat alias for segmentSeconds (5-600 s). Flat wins over video.segment_seconds and audio.segment_seconds.",
      +  "type": [
      +    "number",
      +    "string"
      +  ]
      +}
    • changedInput schema / properties / transcribe / description
      Previous value: -"Sobreescritura opcional para activar/desactivar la transcripción de audio en videos."New value: +"Sobreescritura opcional para activar/desactivar la transcripción de audio en videos. Acepta true/false y \"true\"/\"false\" (los demás valores se rechazan). / Optional override to enable/disable audio transcription on videos. Accepts true/false and \"true\"/\"false\" (other values are rejected). Has no effect on images/documents (declared in warnings, ignored)."
    • changedInput schema / properties / transcribe / type
      Previous value: -"boolean"New value: +[
      +  "boolean",
      +  "string"
      +]
    • addedInput schema / properties / transcriptionLanguage
      Added value: +{
      +  "description": "Alias de transcription_language (misma pista, misma precedencia). / Alias of transcription_language (same hint, same precedence).",
      +  "type": "string"
      +}
    • changedInput schema / properties / transcription_language / description
      Previous value: -"Pista opcional de idioma para la transcripción de audio/video (por ejemplo, 'auto', 'es', 'en')."New value: +"También acepta transcriptionLanguage. Pista opcional de idioma que Whisper espera al TRANSCRIBIR el audio/video (por ejemplo, 'auto', 'es', 'en'; 'auto' = detectar solo). No cambia el idioma de la respuesta: para eso use 'language'. / Also accepts transcriptionLanguage. Optional hint for the language Whisper expects when TRANSCRIBING audio/video (e.g. 'auto', 'es', 'en'; 'auto' = detect only). Does not change the response language: use 'language' for that."
    • changedInput schema / properties / video / description
      Previous value: -"Ajuste opcional de multipass para video. Se usa sólo al analizar videos."New value: +"Ajuste opcional de multipass para video. Se usa sólo al analizar videos. Dentro de video valen snake_case y camelCase (clip_start_seconds o clipStartSeconds, segment_seconds o segmentSeconds, max_segments o maxSegments, max_frames_per_segment o maxFramesPerSegment), y los planos clipStartSeconds/clipEndSeconds/clipDurationSeconds/segmentSeconds/maxSegments/maxFramesPerSegment valen igual (el plano gana sobre ambos anidados). Sin plano, video.segment_seconds y audio.segment_seconds (o max_segments) con valores distintos se rechazan: use el plano o solo uno de los dos objetos. / Optional multipass tuning for video. Only used when analyzing videos. Inside video both snake_case and camelCase work, and the flat clipStartSeconds/clipEndSeconds/clipDurationSeconds/segmentSeconds/maxSegments/maxFramesPerSegment aliases work the same (flat wins over both nested). Without a flat, differing video.segment_seconds vs audio.segment_seconds (or max_segments) values are rejected: use the flat or only one of the two objects."
    • addedInput schema / properties / video / properties / clipDurationSeconds
      Added value: +{
      +  "description": "Alias de clip_duration_seconds (mayor que 0, hasta 86400). El plano gana sobre el anidado. / Alias of clip_duration_seconds (greater than 0, up to 86400). Flat wins over nested.",
      +  "type": [
      +    "number",
      +    "string"
      +  ]
      +}
    • addedInput schema / properties / video / properties / clipEndSeconds
      Added value: +{
      +  "description": "Alias de clip_end_seconds (0-86400, debe ser mayor que el inicio). El plano gana sobre el anidado. / Alias of clip_end_seconds (0-86400, must exceed start). Flat wins over nested.",
      +  "type": [
      +    "number",
      +    "string"
      +  ]
      +}
    • addedInput schema / properties / video / properties / clipStartSeconds
      Added value: +{
      +  "description": "Alias de clip_start_seconds (0-86400). El plano clipStartSeconds gana sobre el anidado. / Alias of clip_start_seconds (0-86400). Flat clipStartSeconds wins over nested.",
      +  "type": [
      +    "number",
      +    "string"
      +  ]
      +}
    • changedInput schema / properties / video / properties / clip_duration_seconds / description
      Previous value: -"Duración opcional del clip en segundos para análisis de video dirigido a un tiempo."New value: +"Duración opcional del clip en segundos (mayor que 0, hasta 86400). Úsela junto a clip_start_seconds; si da clip_end_seconds, no la necesita. Si el fin implícito (inicio + duración) excede 86400 segundos, la duración se recorta al límite con un aviso en 'warnings'. / Optional clip duration in seconds (greater than 0, up to 86400). Use with clip_start_seconds; not needed with clip_end_seconds. When start + duration exceeds 86400 s the duration is trimmed to the limit with a 'warnings' note."
    • changedInput schema / properties / video / properties / clip_duration_seconds / type
      Previous value: -"number"New value: +[
      +  "number",
      +  "string"
      +]
    • addedInput schema / properties / video / properties / clip_end_seconds
      Added value: +{
      +  "description": "Fin opcional del clip en segundos (0-86400, debe ser mayor que el inicio). Si se da, la duración se calcula como fin menos inicio e ignora clip_duration_seconds. / Optional clip end in seconds (0-86400, must exceed start). When given, duration derives as end minus start and clip_duration_seconds is ignored.",
      +  "type": [
      +    "number",
      +    "string"
      +  ]
      +}
    • changedInput schema / properties / video / properties / clip_start_seconds / description
      Previous value: -"Offset opcional de inicio del clip en segundos para análisis de video dirigido a un tiempo."New value: +"Inicio opcional del clip en segundos (0-86400). Para 12:34 use 754 (= 12*60+34). Con clip_end_seconds, fin = inicio + duración. / Optional clip start in seconds (0-86400). For 12:34 use 754 (= 12*60+34). With clip_end_seconds, end = start + duration."
    • changedInput schema / properties / video / properties / clip_start_seconds / type
      Previous value: -"number"New value: +[
      +  "number",
      +  "string"
      +]
    • addedInput schema / properties / video / properties / maxFramesPerSegment
      Added value: +{
      +  "description": "Alias de max_frames_per_segment (entero 1-20; por defecto 8). El plano gana sobre el anidado. / Alias of max_frames_per_segment (integer 1-20; default 8). Flat wins over nested.",
      +  "type": [
      +    "integer",
      +    "string"
      +  ]
      +}
    • addedInput schema / properties / video / properties / maxSegments
      Added value: +{
      +  "description": "Alias de max_segments para video (entero 1-60). El plano gana sobre el anidado. / Alias of max_segments for video (integer 1-60). Flat wins over nested.",
      +  "type": [
      +    "integer",
      +    "string"
      +  ]
      +}
    • changedInput schema / properties / video / properties / max_frames_per_segment / description
      Previous value: -"Máximo de fotogramas a extraer por segmento."New value: +"Máximo de fotogramas a extraer por segmento de video (entero 1-20; por defecto 8). / Max frames to extract per video segment (integer 1-20; default 8)."
    • changedInput schema / properties / video / properties / max_frames_per_segment / type
      Previous value: -"integer"New value: +[
      +  "integer",
      +  "string"
      +]
    • changedInput schema / properties / video / properties / max_segments / description
      Previous value: -"Número máximo de segmentos a analizar."New value: +"Número máximo de segmentos de video a analizar (entero 1-60; el servidor rechaza valores mayores). / Max video segments to analyze (integer 1-60; the server rejects larger values)."
    • changedInput schema / properties / video / properties / max_segments / type
      Previous value: -"integer"New value: +[
      +  "integer",
      +  "string"
      +]
    • addedInput schema / properties / video / properties / segmentSeconds
      Added value: +{
      +  "description": "Alias de segment_seconds para video (5-600; por defecto 60). El plano gana sobre el anidado. / Alias of segment_seconds for video (5-600; default 60). Flat wins over nested.",
      +  "type": [
      +    "number",
      +    "string"
      +  ]
      +}
    • changedInput schema / properties / video / properties / segment_seconds / description
      Previous value: -"Duración del segmento en segundos."New value: +"Duración del segmento en segundos para video (5-600; por defecto 60). / Segment duration in seconds for video (5-600; default 60)."
    • changedInput schema / properties / video / properties / segment_seconds / type
      Previous value: -"number"New value: +[
      +  "number",
      +  "string"
      +]
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "analysis": {
      +      "description": "Análisis en texto producido por EnriProxy. / Text analysis produced by EnriProxy.",
      +      "type": "string"
      +    },
      +    "analysis_total_chars": {
      +      "description": "Total de caracteres (puntos de código) del análisis completo antes de truncar. / Total chars (code points) of the full analysis before truncation.",
      +      "type": "integer"
      +    },
      +    "analysis_truncated": {
      +      "description": "`true` cuando `analysis` se truncó al tope de `structuredContent` (262144 caracteres en puntos de código; se conservan principio y fin). / Flag that is true when `analysis` was truncated to the `structuredContent` cap (262144 chars in code points; head and tail kept).",
      +      "type": "boolean"
      +    },
      +    "elements": {
      +      "description": "Cajas de elementos detectados en análisis de imagen (coordenadas relativas 0-1, reutilizables como `region`). / Detected element boxes in image analyses (relative 0-1 coords, reusable as `region`).",
      +      "items": {
      +        "properties": {
      +          "box": {
      +            "properties": {
      +              "height": {
      +                "type": "number"
      +              },
      +              "width": {
      +                "type": "number"
      +              },
      +              "x": {
      +                "type": "number"
      +              },
      +              "y": {
      +                "type": "number"
      +              }
      +            },
      +            "required": [
      +              "x",
      +              "y",
      +              "width",
      +              "height"
      +            ],
      +            "type": "object"
      +          },
      +          "label": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "label",
      +          "box"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "extraction": {
      +      "description": "Metadatos de extracción devueltos por el servidor (sin identificadores internos). Las strings muy largas se recortan principio+fin con el marcador […truncado…]; la forma del objeto se preserva. / Extraction metadata returned by the server (no internal ids). Very long strings are head+tail trimmed with a […truncated…] marker; object shape is preserved.",
      +      "type": "object"
      +    },
      +    "media_type": {
      +      "description": "Tipo de media detectado. / Detected media type.",
      +      "type": "string"
      +    },
      +    "warnings": {
      +      "description": "Avisos de honestidad bilingües (por ejemplo, ventana de clip recortada al límite de 24 h). Solo presente cuando el parseo ajustó un valor pedido. / Honesty warnings (bilingual, e.g. clip window trimmed to the 24 h limit). Only present when parsing adjusted a requested value.",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "analysis",
      +    "media_type",
      +    "extraction"
      +  ],
      +  "type": "object"
      +}
  3. Changed29 schema fields changedv0.1.5
    • changedInput schema / properties / analysis_mode / description
      Previous value: -"Optional analysis mode selector: auto, single, or multipass."New value: +"Selector opcional de modo de análisis: auto, single o multipass."
    • changedInput schema / properties / audio / description
      Previous value: -"Optional audio multipass tuning (used only when analyzing audio files)."New value: +"Ajuste opcional de multipass para audio (se usa sólo al analizar archivos de audio)."
    • changedInput schema / properties / audio / properties / max_segments / description
      Previous value: -"Maximum number of audio segments to analyze."New value: +"Número máximo de segmentos de audio a analizar."
    • changedInput schema / properties / audio / properties / segment_seconds / description
      Previous value: -"Segment duration in seconds for audio multipass."New value: +"Duración del segmento en segundos para multipass de audio."
    • changedInput schema / properties / audio / properties / timestamps / description
      Previous value: -"Whether to include timestamped segments in audio extraction."New value: +"Si incluir segmentos con marca de tiempo en la extracción de audio."
    • changedInput schema / properties / context / description
      Previous value: -"Optional analysis hint: ui, diagram, chart, error, code, meeting, tutorial, photo. Leave empty for auto-detection."New value: +"Pista opcional de análisis: ui, diagram, chart, error, code, meeting, tutorial, photo. Déjelo vacío para detección automática."
    • changedInput schema / properties / document / description
      Previous value: -"Optional document multipass tuning (PDF)."New value: +"Ajuste opcional de multipass para documentos (PDF)."
    • changedInput schema / properties / document / properties / max_images_per_batch / description
      Previous value: -"Maximum rendered pages (images) per batch."New value: +"Máximo de páginas renderizadas (imágenes) por lote."
    • changedInput schema / properties / document / properties / max_pages_total / description
      Previous value: -"Maximum number of pages to analyze in total."New value: +"Número máximo de páginas a analizar en total."
    • changedInput schema / properties / document / properties / pages_per_batch / description
      Previous value: -"Pages per batch for multipass map calls."New value: +"Páginas por lote para las llamadas map de multipass."
    • changedInput schema / properties / document / properties / scanned_text_threshold_chars / description
      Previous value: -"Minimum extracted text length to treat a page as textual."New value: +"Longitud mínima de texto extraído para tratar una página como textual."
    • changedInput schema / properties / images / description
      Previous value: -"Optional image-set multipass tuning (used only with `paths`)."New value: +"Ajuste opcional de multipass para conjuntos de imágenes (se usa sólo con `paths`)."
    • changedInput schema / properties / images / properties / images_per_batch / description
      Previous value: -"Images per batch for multipass map calls."New value: +"Imágenes por lote para las llamadas map de multipass."
    • changedInput schema / properties / images / properties / max_dimension / description
      Previous value: -"Maximum dimension for images (width/height)."New value: +"Dimensión máxima para las imágenes (ancho/alto)."
    • changedInput schema / properties / images / properties / max_images_total / description
      Previous value: -"Maximum number of images to analyze in total."New value: +"Número máximo de imágenes a analizar en total."
    • changedInput schema / properties / language / description
      Previous value: -"Preferred response language code (ISO 639-1), e.g. 'es', 'en'."New value: +"Código de idioma preferido de respuesta (ISO 639-1), por ejemplo 'es', 'en'."
    • changedInput schema / properties / max_frames / description
      Previous value: -"Optional max frames for videos (1-20) in single-pass mode. For targeted timestamps, prefer video.clip_start_seconds + video.clip_duration_seconds. For multipass, use video.max_frames_per_segment."New value: +"Máximo opcional de fotogramas para videos (1-20) en modo single-pass. Para tiempos específicos, prefiera video.clip_start_seconds + video.clip_duration_seconds. Para multipass, use video.max_frames_per_segment."
    • changedInput schema / properties / path / description
      Previous value: -"Absolute path to a local file on the machine running the MCP server (e.g., C:\\\\Users\\\\User\\\\Downloads\\\\video.mp4)."New value: +"Ruta absoluta a un archivo local en la máquina donde corre el servidor MCP (por ejemplo, C:\\\\Users\\\\User\\\\Downloads\\\\video.mp4), o una URL http(s) de imagen/video/audio/PDF para descargar y analizar (hasta 64 MiB; hosts locales y redes privadas bloqueados)."
    • changedInput schema / properties / paths / description
      Previous value: -"Absolute paths to multiple local image files (UI screenshots/photo sets). When provided, EnriVision uploads a single media-set archive for server-side batching + reduce."New value: +"Rutas absolutas a varios archivos de imagen locales o URLs http(s) (capturas de UI/sets de fotos; cada URL hasta 64 MiB). Cuando se proporcionan, EnriVision sube un único archivo de conjunto para procesamiento por lotes y reducción del lado servidor."
    • changedInput schema / properties / question / description
      Previous value: -"Optional explicit question to answer about the file."New value: +"Pregunta explícita opcional que responder sobre el archivo."
    • addedInput schema / properties / region
      Added value: +{
      +  "description": "Región relativa de la IMAGEN original para analizar a resolución nativa (zoom). Coordenadas entre 0 y 1; (0,0) es la esquina superior izquierda. Use las cajas devueltas en 'elements' de un análisis previo de la misma imagen: NUNCA invente coordenadas. Ideal para leer texto pequeño (labels, código) que en la imagen completa comprimida resulta ilegible. Sólo imágenes (path, no paths).",
      +  "properties": {
      +    "height": {
      +      "description": "Alto relativo (1 = alto completo).",
      +      "type": "number"
      +    },
      +    "width": {
      +      "description": "Ancho relativo (1 = ancho completo).",
      +      "type": "number"
      +    },
      +    "x": {
      +      "description": "Coordenada horizontal relativa de la esquina superior izquierda (0 = borde izquierdo).",
      +      "type": "number"
      +    },
      +    "y": {
      +      "description": "Coordenada vertical relativa de la esquina superior izquierda (0 = borde superior).",
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "x",
      +    "y",
      +    "width",
      +    "height"
      +  ],
      +  "type": "object"
      +}
    • changedInput schema / properties / transcribe / description
      Previous value: -"Optional override to enable/disable audio transcription for videos."New value: +"Sobreescritura opcional para activar/desactivar la transcripción de audio en videos."
    • changedInput schema / properties / transcription_language / description
      Previous value: -"Optional Whisper language hint for audio/video transcription (e.g., 'auto', 'es', 'en')."New value: +"Pista opcional de idioma para la transcripción de audio/video (por ejemplo, 'auto', 'es', 'en')."
    • changedInput schema / properties / video / description
      Previous value: -"Optional video multipass tuning. Used only when analyzing videos."New value: +"Ajuste opcional de multipass para video. Se usa sólo al analizar videos."
    • changedInput schema / properties / video / properties / clip_duration_seconds / description
      Previous value: -"Optional clip duration in seconds for time-targeted video analysis."New value: +"Duración opcional del clip en segundos para análisis de video dirigido a un tiempo."
    • changedInput schema / properties / video / properties / clip_start_seconds / description
      Previous value: -"Optional clip start offset in seconds for time-targeted video analysis."New value: +"Offset opcional de inicio del clip en segundos para análisis de video dirigido a un tiempo."
    • changedInput schema / properties / video / properties / max_frames_per_segment / description
      Previous value: -"Maximum frames to extract per segment."New value: +"Máximo de fotogramas a extraer por segmento."
    • changedInput schema / properties / video / properties / max_segments / description
      Previous value: -"Maximum number of segments to analyze."New value: +"Número máximo de segmentos a analizar."
    • changedInput schema / properties / video / properties / segment_seconds / description
      Previous value: -"Segment duration in seconds."New value: +"Duración del segmento en segundos."
  4. Changed1 schema field changedv0.1.1
    • addedInput schema / properties / analysis_mode / enum
      Added value: +[
      +  "auto",
      +  "single",
      +  "multipass"
      +]
  5. First observedv0.1.0

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (readOnly, idempotent, non-destructive), the description discloses: response is ALWAYS text and never image blocks, error responses include isError plus structuredContent with retryable codes, integer knobs reject non-integral strings, `transcribe` is ignored for images/documents, video and audio share the same timeline, and budgets define timeouts. It also documents precedence rules ('flat wins over nested') and the `Detalle del servidor` error reporting requirement.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very long, amplified by full bilingual duplicationahan, but extremely well organized with clear headings (Cuando usarla, Reglas, Presupuestos, Errores, Ejemplos minimos, Continuacion, Depuracion). Every sentence carries practical information, and the length is justified by 37 parameters and complex edge cases. It could be slightly trimmed but the density and structure earn a high score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers all necessary operational aspects: accepted formats per media type, analysis budgets, strict integer/float rules, error vocabulary, continuation cursors, UI-debugging guidance, and three minimal examples. With an output schema present, nothing needed to invoke the tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

While the schema already describes each parameter (100% coverage), the description adds critical meaning beyond it: the `path` vs `paths` oneOf contract (path ignored when paths is valid), flat-vs-nested precedence rules, alias resolution, concrete examples (12:34 -> 754 seconds, clip_start_seconds + clip_duration_seconds), and the multipass budget concept. It also clarifies that `question` is optional here but required in EnriCode, and warns about ignored parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Upload and analyze a media file via EnriProxy (server-side extraction + model analysis)' and immediately clarifies that the response is always text, positioning it as the tool for models without vision. It also distinguishes its role by enumerating when client Read is unreliable (large/scanned PDFs, video/audio, HEIC/AVIF/TIFF, etc.).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Cuándo usarla' section lists precise conditions (large/scanned PDFs, video/audio, binary media, very large files with resumable uploads). It also explains when to use `path` vs `paths`, when continuation with `cursor` is mandatory, and contrasts with EnriCode (where `question` is required). Clear exclusions and alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools