{"$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-05T18:00:14.704Z","url":"https://verifymcp.io/servers/jucamhc-mcp-magneto/mcp-magneto","markdownUrl":"https://verifymcp.io/servers/jucamhc-mcp-magneto/mcp-magneto.md","server":{"slug":"jucamhc-mcp-magneto","name":"Magneto","registryName":"io.github.Jucamhc/mcp-magneto","description":"Busca ofertas, postula y mantiene tu hoja de vida en Magneto (magneto365.com, Colombia).","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"mcp-magneto","type":"npm","identifier":"mcp-magneto","withdrawn":false,"url":"https://verifymcp.io/servers/jucamhc-mcp-magneto/mcp-magneto","version":"0.1.0","transport":"stdio","scoredAt":"2026-11-05T04:22:19.284Z"},"score":{"total":69,"tier":"medium","status":"scored","weekDelta":0,"history":[{"date":"2026-11-05","total":69},{"date":"2026-11-04","total":69},{"date":"2026-11-03","total":69},{"date":"2026-11-02","total":69},{"date":"2026-11-01","total":69},{"date":"2026-10-31","total":69},{"date":"2026-10-30","total":69},{"date":"2026-10-29","total":69},{"date":"2026-10-28","total":69},{"date":"2026-10-27","total":69},{"date":"2026-10-26","total":69},{"date":"2026-10-25","total":69},{"date":"2026-10-24","total":69},{"date":"2026-10-23","total":54}]},"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":72,"verdict":"fail","reasons":["AI-judged instruction clarity (good).","Tool/resource definitions use about 1699 tokens (~94/item across 18 items; 18 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":"94","items":"18","tools":"18","tokens":"1699","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":92,"verdict":"partial","reasons":["100% of tools have a non-trivial description (not blank, and not just the tool's name).","75% of tool parameters carry a description."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"75"}}]},{"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 18 captured tool definition(s), and no name or description among them implies an irreversible operation.","An AI judge read all 18 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":"18"}},{"code":"toolsafety.manipulation_clean","args":{"units":"18","judged":"18"}}]},{"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-magneto","type":"npm","identifier":"mcp-magneto","withdrawn":false,"score":69,"current":true,"url":"https://verifymcp.io/servers/jucamhc-mcp-magneto/mcp-magneto","markdownUrl":"https://verifymcp.io/servers/jucamhc-mcp-magneto/mcp-magneto.md"}],"facts":[{"label":"Registry","value":"npm"},{"label":"Package","value":"mcp-magneto"},{"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 vigente de Magneto (el token dura 24 h) y el estado de la hoja de vida. Nunca muestra tokens ni cookies.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":43},{"name":"iniciar-sesion","title":null,"description":"Abre un navegador basado en Chromium (Chrome, Edge, Brave o Chromium) en el login de Magneto para que el usuario entre a mano (código por correo, Google, Microsoft o LinkedIn). Si el navegador del MCP ya tenía la sesión, se renueva sola en segundos. Guarda el token 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":104},{"name":"buscar-ofertas","title":null,"description":"Busca ofertas en Magneto (magneto365.com, Colombia). Funciona sin sesión; con sesión indica si ya te postulaste. Magneto no publica la modalidad por oferta: el filtro de modalidad es del portal y en el detalle se infiere del texto.","inputs":[{"name":"ciudad","type":"string","required":false,"description":"Ciudad de Colombia (p. ej. Cali). Por defecto, todo el país; si buscas presencial o híbrido sin reubicarte, tu ciudad."},{"name":"contrato","type":"string","required":false,"description":null},{"name":"modalidad","type":"string","required":false,"description":"Por defecto sale de preferencias.modalidad del perfil maestro: remoto si buscas solo remoto; si no, todas."},{"name":"orden","type":"string","required":false,"description":null},{"name":"pagina","type":"integer","required":false,"description":null},{"name":"palabra","type":"string","required":false,"description":"Palabra clave del cargo, p. ej. \"auxiliar contable\", \"enfermera\", \"desarrollador\"."},{"name":"por_pagina","type":null,"required":false,"description":null},{"name":"salario_minimo_millones","type":"number","required":false,"description":"Deja solo ofertas cuyo salario máximo alcance este valor (millones COP). Excluye 'a convenir'."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":223},{"name":"detalle-de-oferta","title":null,"description":"Devuelve la descripción completa de una oferta: requisitos, habilidades, salario, contrato, modalidad inferida, ciudad y si tiene cuestionario de filtro.","inputs":[{"name":"oferta","type":"string|number","required":true,"description":"Id, slug (p. ej. desarrollador-backend-1088350) o URL de la oferta, tal como lo devuelve buscar-ofertas."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":79},{"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":"oferta","type":"string|number","required":true,"description":"Id, slug (p. ej. desarrollador-backend-1088350) o URL de la oferta, tal como lo devuelve buscar-ofertas."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":96},{"name":"preguntas-de-postulacion","title":null,"description":"Lee cómo se postula a la oferta (requiere sesión): si ya estás postulado, si exige datos extra y las preguntas del cuestionario de filtro con sus opciones y límites. No envía nada.","inputs":[{"name":"oferta","type":"string|number","required":true,"description":"Id, slug (p. ej. desarrollador-backend-1088350) o URL de la oferta, tal como lo devuelve buscar-ofertas."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":92},{"name":"proponer-respuestas","title":null,"description":"Propone respuestas al cuestionario de filtro a partir del perfil maestro y las clasifica (respaldada, requiere_confirmacion, sin_respaldo). Nunca inventa datos ni envía nada.","inputs":[{"name":"oferta","type":"string|number","required":true,"description":"Id, slug (p. ej. desarrollador-backend-1088350) o URL de la oferta, tal como lo devuelve buscar-ofertas."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":89},{"name":"postular-a-oferta","title":null,"description":"Envía la postulación con las respuestas del cuestionario (si lo hay) en una sola petición. Exige la 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":"confirmacion","type":"string","required":true,"description":"Exactamente \"POSTULAR <id numérico>\", solo después de que el usuario aprobó la oferta y las respuestas."},{"name":"oferta","type":"string|number","required":true,"description":"Id, slug (p. ej. desarrollador-backend-1088350) o URL de la oferta, tal como lo devuelve buscar-ofertas."},{"name":"respuestas","type":"array","required":false,"description":"Respuestas aprobadas por el usuario para todas las preguntas de preguntas-de-postulacion."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":163},{"name":"mis-postulaciones","title":null,"description":"Lista tus procesos (postulaciones) en Magneto con su estado.","inputs":[{"name":"pagina","type":"integer","required":false,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":32},{"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 magneto."},{"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 Magneto: descripción, experiencia, formación, habilidades, idiomas, disponibilidad, foto y CV.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":36},{"name":"comparar-perfil","title":null,"description":"Compara tu hoja de vida de Magneto con el perfil maestro y lista lo que falta, lo desactualizado, lo que sobra y lo que conviene corregir en la web.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":47},{"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 ~/.magneto/respaldos/ y guarda. Solo borra los ids indicados en eliminar_ids.","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":123},{"name":"subir-foto","title":null,"description":"Sube la foto indicada en datos_personales.foto del perfil maestro (JPG o PNG, máx. 5 MB) como foto de perfil. Sin aplicar solo muestra lo que haría.","inputs":[{"name":"aplicar","type":"boolean","required":false,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":57},{"name":"subir-cv","title":null,"description":"Sube el CV en PDF del perfil maestro (cv_pdf: una ruta, o un objeto con varias versiones). Magneto guarda un solo CV: reemplaza el actual. Sin aplicar solo muestra lo que haría.","inputs":[{"name":"aplicar","type":"boolean","required":false,"description":null},{"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":81},{"name":"listar-mis-cv","title":null,"description":"Muestra el CV adjunto en Magneto.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":21}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T04:22:19.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_01a16c1f-458f-78c7-9fc2-b56447b37c0d","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-magneto/mcp-magneto#chg-chg_01a16c1f-458f-78c7-9fc2-b56447b37c0d"},{"id":"chg_01a16c1f-4590-73db-9622-253bdec96513","kind":"score.total_changed","summary":"Trust score (54 → 69)","materiality":"functional","direction":"improvement","scoreDelta":15,"occurredOn":"2026-10-24","url":"https://verifymcp.io/servers/jucamhc-mcp-magneto/mcp-magneto#chg-chg_01a16c1f-4590-73db-9622-253bdec96513"},{"id":"chg_01a16a7c-bdaa-795f-8225-b40c7ad375ed","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-magneto/mcp-magneto#chg-chg_01a16a7c-bdaa-795f-8225-b40c7ad375ed"}],"truncated":false,"feedUrl":"https://verifymcp.io/servers/jucamhc-mcp-magneto/mcp-magneto/changelog.json"},"links":{"html":"https://verifymcp.io/servers/jucamhc-mcp-magneto/mcp-magneto","markdown":"https://verifymcp.io/servers/jucamhc-mcp-magneto/mcp-magneto.md","changelogJson":"https://verifymcp.io/servers/jucamhc-mcp-magneto/mcp-magneto/changelog.json","changelogRss":"https://verifymcp.io/servers/jucamhc-mcp-magneto/mcp-magneto.xml","external":[{"label":"npm package","href":"https://www.npmjs.com/package/mcp-magneto"},{"label":"Socket report","href":"https://socket.dev/npm/package/mcp-magneto"},{"label":"Repository","href":"https://github.com/Jucamhc/mcp-magneto"}]}}