{"$schema":"https://verifymcp.io/schemas/trust-report.json","schemaVersion":1,"license":{"name":"CC BY-NC 4.0","url":"https://creativecommons.org/licenses/by-nc/4.0/"},"generatedAt":"2026-11-05T17:50:25.747Z","url":"https://verifymcp.io/servers/jucamhc-mcp-elempleo/mcp-elempleo","markdownUrl":"https://verifymcp.io/servers/jucamhc-mcp-elempleo/mcp-elempleo.md","server":{"slug":"jucamhc-mcp-elempleo","name":"elempleo","registryName":"io.github.Jucamhc/mcp-elempleo","description":"Busca ofertas, postula y mantiene tu hoja de vida en elempleo.com (Colombia).","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"mcp-elempleo","type":"npm","identifier":"mcp-elempleo","withdrawn":false,"url":"https://verifymcp.io/servers/jucamhc-mcp-elempleo/mcp-elempleo","version":"0.1.0","transport":"stdio","scoredAt":"2026-11-05T08:04:37.072Z"},"score":{"total":68,"tier":"medium","status":"scored","weekDelta":0,"history":[{"date":"2026-11-05","total":68},{"date":"2026-11-04","total":68},{"date":"2026-11-03","total":68},{"date":"2026-11-02","total":68},{"date":"2026-11-01","total":68},{"date":"2026-10-31","total":68},{"date":"2026-10-30","total":68},{"date":"2026-10-29","total":68},{"date":"2026-10-28","total":68},{"date":"2026-10-27","total":68},{"date":"2026-10-26","total":68},{"date":"2026-10-25","total":68},{"date":"2026-10-24","total":68},{"date":"2026-10-23","total":53}]},"categories":[{"name":"Supply Chain Security","score":98,"verdict":"partial","reasons":["No malware found by supply-chain analysis.","No known CVEs affecting this package version or its production dependencies.","No install/post-install scripts declared.","34 of 117 dependencies flagged as unhealthy."],"codes":[{"code":"supplychain.malware_clean","args":{}},{"code":"cve.none","args":{}},{"code":"installscript.none","args":{}},{"code":"dephealth.assessed","args":{"deps":"117","unhealthy":"34"}}]},{"name":"Provenance & Transparency","score":45,"verdict":"fail","reasons":["Source repository is publicly reachable at the declared URL.","Provenance check failed: no build-provenance attestation is published.","Clear OSI-approved license (MIT).","Actively maintained (last published 12 days ago).","Disclosure check failed: no security disclosure policy was found in the source repository."],"codes":[{"code":"provenance.repo_verified","args":{}},{"code":"provenance.none","args":{}},{"code":"license.osi","args":{"spdx":"MIT"}},{"code":"maintenance.recent","args":{"age_days":"12"}},{"code":"disclosure.absent","args":{}}]},{"name":"Schema Quality & AI Usability","score":68,"verdict":"fail","reasons":["AI-judged instruction clarity (good).","Tool/resource definitions use about 1587 tokens (~83/item across 19 items; 19 tools + 0 resources), lean.","Usage-examples check failed: none of the tools include examples."],"codes":[{"code":"schema.ai_quality","args":{"band":"good"}},{"code":"schema.footprint_lean","args":{"avg":"83","items":"19","tools":"19","tokens":"1587","resources":"0"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":0,"verdict":"unverified","reasons":["Stability not yet verified: not enough scan history yet (needs a 30-day window)."],"codes":[{"code":"stability.insufficient_history","args":{}}]},{"name":"Tool Coverage","score":88,"verdict":"partial","reasons":["100% of tools have a non-trivial description (not blank, and not just the tool's name).","63% of tool parameters carry a description."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"63"}}]},{"name":"Tool Safety","score":100,"verdict":"pass","reasons":["No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.","We read all 19 captured tool definition(s), and no name or description among them implies an irreversible operation.","An AI judge read all 19 captured unit(s) of tool text and found none that tries to manipulate the model reading it."],"codes":[{"code":"toolsafety.injection_clean","args":{}},{"code":"toolsafety.destructive_none","args":{"tools":"19"}},{"code":"toolsafety.manipulation_clean","args":{"units":"19","judged":"19"}}]},{"name":"Capabilities","score":100,"verdict":"pass","reasons":["Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28."],"codes":[{"code":"protocol.supported","args":{"latest":"2026-07-28","version":"2025-11-25"}}]}],"inconclusive":["Stability not yet verified: not enough scan history yet (needs a 30-day window)."],"malware":[],"components":[{"slug":"mcp-elempleo","type":"npm","identifier":"mcp-elempleo","withdrawn":false,"score":68,"current":true,"url":"https://verifymcp.io/servers/jucamhc-mcp-elempleo/mcp-elempleo","markdownUrl":"https://verifymcp.io/servers/jucamhc-mcp-elempleo/mcp-elempleo.md"}],"facts":[{"label":"Registry","value":"npm"},{"label":"Package","value":"mcp-elempleo"},{"label":"Version","value":"0.1.0"},{"label":"Transport","value":"stdio"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"estado-de-sesion","title":null,"description":"Indica si hay una sesión válida de elempleo y el estado de la hoja de vida. Nunca muestra cookies.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":33},{"name":"iniciar-sesion","title":null,"description":"Abre un navegador basado en Chromium (Chrome, Edge, Brave o Chromium) en la página de inicio de sesión de elempleo para que el usuario entre a mano (hay reCAPTCHA y verificación en dos pasos). Al detectar la sesión guarda las cookies en la carpeta de datos del MCP y cierra la ventana.","inputs":[{"name":"espera_max_segundos","type":"integer","required":false,"description":"Tiempo máximo de espera (por defecto 300 s)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":94},{"name":"buscar-ofertas","title":null,"description":"Busca ofertas en elempleo.com (Colombia). Funciona sin sesión; con sesión indica si ya te postulaste.","inputs":[{"name":"contrato","type":"string","required":false,"description":null},{"name":"fecha","type":"string","required":false,"description":null},{"name":"modalidad","type":"string","required":false,"description":"Por defecto: remoto."},{"name":"pagina","type":"integer","required":false,"description":null},{"name":"palabra","type":"string","required":true,"description":"Palabra clave, p. ej. \"desarrollador\", \"react\", \"full stack\"."},{"name":"por_pagina","type":null,"required":false,"description":null},{"name":"salario_minimo_millones","type":"number","required":false,"description":"Filtra rangos salariales cuyo máximo supere este valor (millones COP). Excluye 'salario confidencial'."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":135},{"name":"detalle-de-oferta","title":null,"description":"Devuelve la descripción completa de una oferta: requisitos, salario, contrato, modalidad y ciudad.","inputs":[{"name":"id","type":"integer","required":true,"description":"Id numérico de la oferta (p. ej. 1886772014)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":52},{"name":"evaluar-encaje","title":null,"description":"Compara la oferta con el perfil maestro y sus preferencias (modalidad, salario mínimo según tipo de contrato, tecnologías declaradas y nivel de inglés) y devuelve encaja, encaja_parcial o no_encaja con los motivos.","inputs":[{"name":"id","type":"integer","required":true,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":64},{"name":"preguntas-de-postulacion","title":null,"description":"Lee el formulario de postulación de la oferta (requiere sesión): tipo de postulación, nota opcional, archivos de CV disponibles y formularios adicionales. No envía nada.","inputs":[{"name":"id","type":"integer","required":true,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":55},{"name":"proponer-respuestas","title":null,"description":"Redacta la nota al empleador a partir del perfil maestro y señala lo que requiere confirmación del usuario. Nunca inventa datos ni envía nada.","inputs":[{"name":"id","type":"integer","required":true,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":49},{"name":"postular-a-oferta","title":null,"description":"Envía la postulación. Exige confirmación explícita del usuario para ESA oferta: confirmacion debe ser exactamente \"POSTULAR <id>\". Una oferta a la vez, sin reintentos automáticos.","inputs":[{"name":"adjunto_id","type":"integer","required":false,"description":"Id del archivo de CV (solo en postulación rápida)."},{"name":"confirmacion","type":"string","required":true,"description":"Exactamente \"POSTULAR <id>\", solo después de que el usuario aprobó la oferta y la nota."},{"name":"id","type":"integer","required":true,"description":null},{"name":"nota","type":"string","required":false,"description":"Nota al empleador aprobada por el usuario (opcional)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":128},{"name":"responder-cuestionario","title":null,"description":"Envía el cuestionario de filtro que la empresa pide tras postular (estado \"requiere_cuestionario\"). Las respuestas deben venir del usuario o estar confirmadas por él; confirmacion debe ser exactamente \"CUESTIONARIO <id>\".","inputs":[{"name":"confirmacion","type":"string","required":true,"description":"Exactamente \"CUESTIONARIO <id>\", solo después de que el usuario aprobó las respuestas."},{"name":"id","type":"integer","required":true,"description":"Id de la oferta."},{"name":"respuestas","type":"array","required":true,"description":null},{"name":"url","type":"string","required":true,"description":"cuestionario.url devuelta por postular-a-oferta."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":125},{"name":"mis-postulaciones","title":null,"description":"Lista tus postulaciones en elempleo con su estado (en proceso, vencida, eliminada…).","inputs":[{"name":"pagina","type":"integer","required":false,"description":null},{"name":"por_pagina","type":null,"required":false,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":45},{"name":"construir-perfil-maestro","title":null,"description":"Crea el perfil maestro (fuente única de tus datos para todos los MCP de empleo) cuando aún no existe. Sin argumentos, indica qué pedirle al usuario: la URL de su LinkedIn, o su CV en PDF y su foto. Con un PDF devuelve el texto extraído, el esquema estándar y las reglas para armar el JSON; con solo la URL de LinkedIn explica cómo exportar el perfil a PDF. No guarda nada: eso lo hace guardar-perfil-maestro tras la confirmación del usuario.","inputs":[{"name":"cv_pdf","type":null,"required":false,"description":"Ruta (o rutas) de CV en PDF, incluido el PDF exportado de LinkedIn."},{"name":"desde_portal","type":"boolean","required":false,"description":"Armar un borrador con lo que ya hay en elempleo."},{"name":"foto","type":"string","required":false,"description":"Ruta de la foto de perfil (JPG, PNG, GIF o WEBP)."},{"name":"linkedin_url","type":"string","required":false,"description":"URL del perfil de LinkedIn (https://www.linkedin.com/in/usuario/)."},{"name":"texto","type":"string","required":false,"description":"Contenido del perfil ya obtenido por otra herramienta (p. ej. un MCP de LinkedIn)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":236},{"name":"guardar-perfil-maestro","title":null,"description":"Valida el perfil maestro contra el esquema estándar y lo guarda (por defecto en ~/.perfil-maestro/perfil-maestro.json). Copia la foto y el CV junto al perfil. Llamar solo después de que el usuario apruebe el contenido. No sobrescribe uno existente salvo sobrescribir: true (y lo respalda).","inputs":[{"name":"cv_pdf","type":"string","required":false,"description":"Ruta del CV en PDF a copiar junto al perfil."},{"name":"foto","type":"string","required":false,"description":"Ruta de la foto a copiar junto al perfil."},{"name":"perfil","type":"object","required":true,"description":"Perfil maestro completo según el esquema."},{"name":"sobrescribir","type":"boolean","required":false,"description":"true solo si el usuario confirmó reemplazar el perfil existente."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":145},{"name":"ver-perfil-maestro","title":null,"description":"Muestra el perfil maestro, dónde está, si cumple el esquema estándar y qué queda pendiente de confirmar.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":32},{"name":"ver-mi-perfil","title":null,"description":"Lee tu hoja de vida actual en elempleo: perfil profesional, experiencia, formación, cursos, idiomas, redes, habilidades y archivos.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":37},{"name":"comparar-perfil","title":null,"description":"Compara tu hoja de vida de elempleo con el perfil maestro y lista lo que falta, lo desactualizado y lo que sobra.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":37},{"name":"actualizar-perfil","title":null,"description":"Actualiza una sección de la hoja de vida desde el perfil maestro. Sin aplicar devuelve el plan exacto (antes → después) para mostrarlo al usuario; con aplicar=true respalda en ~/.elempleo/respaldos/ y guarda. Solo borra los ids indicados en eliminar_ids. seguridad_social usa los datos que el usuario dé; nunca los supongas.","inputs":[{"name":"aplicar","type":"boolean","required":false,"description":"false (por defecto) = solo plan. true = guardar, tras la confirmación del usuario."},{"name":"eliminar_ids","type":"array","required":false,"description":"Ids de entradas sobrantes que el usuario confirmó borrar."},{"name":"seccion","type":"string","required":true,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":138},{"name":"subir-foto","title":null,"description":"Sube la foto indicada en datos_personales.foto del perfil maestro (JPG, PNG o GIF, máx. 3 MB). Sin aplicar solo muestra lo que haría.","inputs":[{"name":"aplicar","type":"boolean","required":false,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":54},{"name":"subir-cv","title":null,"description":"Sube el CV en PDF del perfil maestro (cv_pdf: una ruta, o un objeto con varias versiones) a tus archivos de elempleo; opcionalmente reemplaza uno existente. Sin aplicar solo muestra lo que haría.","inputs":[{"name":"aplicar","type":"boolean","required":false,"description":null},{"name":"reemplazar_id","type":"integer","required":false,"description":"Id del archivo a reemplazar (ver listar-mis-cv)."},{"name":"version","type":"string","required":false,"description":"Clave de cv_pdf cuando hay varias versiones; por defecto la primera."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":106},{"name":"listar-mis-cv","title":null,"description":"Lista los archivos de CV adjuntos en elempleo.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":22}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T08:04:37.000Z","track":"package","endpoint":null,"declaredUrl":null,"truncated":false,"tls":null,"dnssec":null,"auth":null,"httpsRedirect":null,"transports":[],"provenance":{"outcome":"none","label":"No attestation","reason":null,"reasonLabel":null,"discovery":null,"discoveryLabel":null,"sourceRepo":null,"attestationSkipped":null,"attestationSkippedLabel":null},"installScripts":[],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":{"nodes":117,"partial":false,"deprecated":null,"stale":34,"noRepo":null}},"mismatches":[],"changelog":{"trackingSince":"2026-10-23","recent":[{"id":"chg_01a16d01-f0ab-72ab-8d6f-46451e308f42","kind":"check.reverified","summary":"Malware scan (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-24","url":"https://verifymcp.io/servers/jucamhc-mcp-elempleo/mcp-elempleo#chg-chg_01a16d01-f0ab-72ab-8d6f-46451e308f42"},{"id":"chg_01a16d01-f0ab-78e7-b832-f3fcd73ef174","kind":"score.total_changed","summary":"Trust score (53 → 68)","materiality":"functional","direction":"improvement","scoreDelta":15,"occurredOn":"2026-10-24","url":"https://verifymcp.io/servers/jucamhc-mcp-elempleo/mcp-elempleo#chg-chg_01a16d01-f0ab-78e7-b832-f3fcd73ef174"},{"id":"chg_01a16a7c-9425-7809-af73-d7312ce82fda","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-23","url":"https://verifymcp.io/servers/jucamhc-mcp-elempleo/mcp-elempleo#chg-chg_01a16a7c-9425-7809-af73-d7312ce82fda"}],"truncated":false,"feedUrl":"https://verifymcp.io/servers/jucamhc-mcp-elempleo/mcp-elempleo/changelog.json"},"links":{"html":"https://verifymcp.io/servers/jucamhc-mcp-elempleo/mcp-elempleo","markdown":"https://verifymcp.io/servers/jucamhc-mcp-elempleo/mcp-elempleo.md","changelogJson":"https://verifymcp.io/servers/jucamhc-mcp-elempleo/mcp-elempleo/changelog.json","changelogRss":"https://verifymcp.io/servers/jucamhc-mcp-elempleo/mcp-elempleo.xml","external":[{"label":"npm package","href":"https://www.npmjs.com/package/mcp-elempleo"},{"label":"Socket report","href":"https://socket.dev/npm/package/mcp-elempleo"},{"label":"Repository","href":"https://github.com/Jucamhc/mcp-elempleo"}]}}