{"$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-05T19:24:21.595Z","url":"https://verifymcp.io/servers/stivenson-cvlac-mcp/cvlac-mcp","markdownUrl":"https://verifymcp.io/servers/stivenson-cvlac-mcp/cvlac-mcp.md","server":{"slug":"stivenson-cvlac-mcp","name":"CvLAC (MinCiencias)","registryName":"io.github.stivenson/cvlac-mcp","description":"Update your Colombian CvLAC (MinCiencias) research CV by chatting with your AI assistant.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"cvlac-mcp","type":"npm","identifier":"cvlac-mcp","withdrawn":false,"url":"https://verifymcp.io/servers/stivenson-cvlac-mcp/cvlac-mcp","version":"1.0.6","transport":"stdio","scoredAt":"2026-11-05T05:25:39.817Z"},"score":{"total":84,"tier":"high trust","status":"scored","weekDelta":2,"history":[{"date":"2026-11-05","total":84},{"date":"2026-11-04","total":84},{"date":"2026-11-03","total":84},{"date":"2026-11-02","total":84},{"date":"2026-11-01","total":84},{"date":"2026-10-31","total":83},{"date":"2026-10-30","total":83},{"date":"2026-10-29","total":82},{"date":"2026-10-28","total":82},{"date":"2026-10-27","total":81},{"date":"2026-10-26","total":81},{"date":"2026-10-25","total":80},{"date":"2026-10-24","total":80},{"date":"2026-10-23","total":79},{"date":"2026-10-22","total":79},{"date":"2026-10-21","total":78},{"date":"2026-10-20","total":78},{"date":"2026-10-19","total":77},{"date":"2026-10-18","total":77},{"date":"2026-10-17","total":77},{"date":"2026-10-16","total":76},{"date":"2026-10-15","total":76},{"date":"2026-10-14","total":75},{"date":"2026-10-13","total":70},{"date":"2026-10-12","total":70},{"date":"2026-10-11","total":70},{"date":"2026-10-07","total":70},{"date":"2026-10-04","total":70},{"date":"2026-10-03","total":55}]},"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.","31 of 96 dependencies flagged as unhealthy."],"codes":[{"code":"supplychain.malware_clean","args":{}},{"code":"cve.none","args":{}},{"code":"installscript.none","args":{}},{"code":"dephealth.assessed","args":{"deps":"96","unhealthy":"31"}}]},{"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 (ISC).","Actively maintained (last published 33 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":"ISC"}},{"code":"maintenance.recent","args":{"age_days":"33"}},{"code":"disclosure.absent","args":{}}]},{"name":"Schema Quality & AI Usability","score":77,"verdict":"fail","reasons":["AI-judged instruction clarity (excellent).","Context-footprint check failed: tool/resource definitions use about 1502 tokens (~115/item across 13 items; 13 tools + 0 resources), over budget; trim descriptions and params.","Usage-examples check failed: none of the tools include examples."],"codes":[{"code":"schema.ai_quality","args":{"band":"excellent"}},{"code":"schema.footprint_heavy","args":{"avg":"115","items":"13","tools":"13","tokens":"1502","resources":"0"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":100,"verdict":"pass","reasons":["No destabilizing schema changes in the last 30 days."],"codes":[{"code":"stability.stable","args":{}}]},{"name":"Tool Coverage","score":96,"verdict":"partial","reasons":["100% of tools have a non-trivial description (not blank, and not just the tool's name).","89% of tool parameters carry a description."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"89"}}]},{"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 13 captured tool definition(s), and no name or description among them implies an irreversible operation.","An AI judge read all 13 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":"13"}},{"code":"toolsafety.manipulation_clean","args":{"units":"13","judged":"13"}}]},{"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":[],"malware":[],"components":[{"slug":"cvlac-mcp","type":"npm","identifier":"cvlac-mcp","withdrawn":false,"score":84,"current":true,"url":"https://verifymcp.io/servers/stivenson-cvlac-mcp/cvlac-mcp","markdownUrl":"https://verifymcp.io/servers/stivenson-cvlac-mcp/cvlac-mcp.md"}],"facts":[{"label":"Registry","value":"npm"},{"label":"Package","value":"cvlac-mcp"},{"label":"Version","value":"1.0.6"},{"label":"Transport","value":"stdio"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"login","title":null,"description":"Authenticate in CvLAC and persist the browser session.","inputs":[{"name":"force","type":"boolean","required":false,"description":"Force re-login even if session is valid"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":33},{"name":"read_cvlac","title":null,"description":"Read current CvLAC sections, including articles, books, chapters, theses, juries and five kinds of technical production. Returns existing items for comparison; list results include every JMesa page.","inputs":[{"name":"section","type":"string","required":false,"description":"Which section to read. Defaults to all."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":64},{"name":"read_cvlac_detail","title":null,"description":"Read the full record page of one CvLAC item. The list views only show a couple of columns, so this is the only way to see the fields a write actually stored (role, dates, institution, financing). Finds the row by label, case- and accent-insensitive.","inputs":[{"name":"label","type":"string","required":true,"description":"Name/title as it appears in the section list, e.g. the degree for formacion"},{"name":"section","type":"string","required":true,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":101},{"name":"read_portfolio","title":null,"description":"Read and parse the configured portfolio site (PORTFOLIO_URL), merged with the curated proyectos/software/eventos from data/portfolio-extra.json.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":38},{"name":"diff","title":null,"description":"Compare CvLAC vs portfolio. Returns four buckets: missing, toUpdate, similar (close to an existing entry — a human decides) and upToDate.","inputs":[{"name":"section","type":"string","required":false,"description":"Limit diff to a specific section"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":53},{"name":"update_section","title":null,"description":"Apply a single change to a CvLAC section. Takes a screenshot for confirmation. An \"add\" whose item resembles an existing entry returns status \"needs_confirmation\" and writes nothing; resolve it with action:\"update\" or repeat with confirm_duplicate:true. A \"delete\" also writes nothing until it is repeated with confirm_delete:true. A picker whose search matched several rows — a common university name can match close to 200 institutions in CvLAC — also returns needs_confirmation, with the candidates in \"choices\"; repeat with the chosen id in data.institucionId. For articles provide title, year and issn/revista; for books provide title, isbn, year, editorial and area; for chapters provide title, bookTitle, year and area; for theses provide title, tipo, year, institution and programme; for juries provide title, nivel, year, orientado, institution and programme; technical sections require title and year, with section-specific fields. Catalogue choices are answered by repeating the call with revistaId, libroId, editorialId, programaId, areaId or institucionId in data. Coauthors, keywords, recognitions and linked thesis students are completed from the CvLAC website. For books, certificateCLCDO and certificateCLRI accept local PDF paths (maximum 2 MiB each).","inputs":[{"name":"action","type":"string","required":true,"description":null},{"name":"confirm_delete","type":"boolean","required":false,"description":"Required by action:\"delete\". Without it nothing is removed and the call returns needs_confirmation — CvLAC has no undo."},{"name":"confirm_duplicate","type":"boolean","required":false,"description":"Create the item even though CvLAC already holds a similar one"},{"name":"data","type":"object","required":true,"description":"The item data to add/update"},{"name":"section","type":"string","required":true,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":355},{"name":"lookup_doi","title":null,"description":"Read-only: look up a DOI in Crossref and return an article draft. Review it, then pass it to update_section with section:\"articulos\"; this tool does not write to CvLAC.","inputs":[{"name":"doi","type":"string","required":true,"description":"DOI, doi:... or https://doi.org/..."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":68},{"name":"complete_product","title":null,"description":"Complete the post-save CvLAC phase for an existing product. It manages ordered keywords, knowledge areas, coauthors and recognitions; for theses it also links students with their participation. It reads current values, resolves catalogue names, and never removes an existing value without confirm_delete:true. Use dry_run:true to preview catalogue resolution and removals without writing.","inputs":[{"name":"areas","type":"array","required":false,"description":"Complete ordered replacement list of product knowledge areas, by code or name"},{"name":"coauthors","type":"array","required":false,"description":"Complete ordered replacement list of coauthor names; the CvLAC owner is preserved"},{"name":"confirm_delete","type":"boolean","required":false,"description":"Required when the replacement drops existing keywords, areas, coauthors or recognitions, or unlinks thesis students"},{"name":"dry_run","type":"boolean","required":false,"description":"Preview without creating keywords or submitting lists"},{"name":"keywords","type":"array","required":false,"description":"Complete ordered replacement list of product keywords"},{"name":"label","type":"string","required":true,"description":"Exact title as shown in the section list"},{"name":"recognitions","type":"array","required":false,"description":"Complete ordered replacement list of recognition titles already registered in CvLAC"},{"name":"section","type":"string","required":true,"description":"Product section containing the existing item"},{"name":"students","type":"array","required":false,"description":"Complete thesis student list; each item may use participation TUT, ASE, COT or ORI"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":257},{"name":"read_profile","title":null,"description":"Read the two CvLAC pages that hold one record instead of a list: the researcher profile text (txt_desc_perfil), the table of academic social networks (Google Scholar, ORCID, LinkedIn, Scopus...) and the áreas de actuación. None of them appears in read_cvlac.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":69},{"name":"update_profile","title":null,"description":"Write the researcher profile text and/or the academic social networks. Networks are MERGED over what CvLAC already stores — its form rewrites the whole table, so this reads it first and posts everything back. Pass url:null to remove one. A network CvLAC does not list goes in \"otro\" with its name in \"label\". Removing one needs confirm_delete:true. The profile text cannot be blanked: CvLAC marks it required. The areas list is replaced whole, so dropping one also needs confirm_delete:true.","inputs":[{"name":"areas","type":"array","required":false,"description":"The whole list of áreas de actuación, in order — the first is the main one — by name or by CvLAC code. It replaces what is stored, so anything left out is a removal. An ambiguous name comes back in \"…"},{"name":"confirm_delete","type":"boolean","required":false,"description":"Required when a network carries url:null or the areas list drops one. Without it nothing is written."},{"name":"description","type":"string","required":false,"description":"Replaces the profile text. Omit to leave it untouched."},{"name":"networks","type":"array","required":false,"description":"Networks to set or remove. Everything else stored is kept."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":240},{"name":"sync","title":null,"description":"Run a full diff and apply the unambiguous items (missing + toUpdate). Items that resemble existing CvLAC entries are never written; they are listed for a human to resolve. It previews by default; pass dry_run:false to apply changes explicitly.","inputs":[{"name":"dry_run","type":"boolean","required":false,"description":"Preview changes without applying them. Defaults to true; use false to write."},{"name":"sections","type":"array","required":false,"description":"Limit sync to specific sections"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":93},{"name":"screenshot","title":null,"description":"Capture a CvLAC page for debugging: the given url, or else the last list, record or form page a tool visited, reloaded as it is now. Action links (delete, save) are refused, because in CvLAC opening one performs it.","inputs":[{"name":"url","type":"string","required":false,"description":"A CvLAC list, record or form page. Defaults to the last one visited."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":85},{"name":"inspect_form","title":null,"description":"Navigate to a CvLAC URL and return the HTML of all form inputs/selects/textareas for debugging field names.","inputs":[{"name":"url","type":"string","required":true,"description":"The CvLAC URL to inspect"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":46}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T05:25:39.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":96,"partial":false,"deprecated":null,"stale":31,"noRepo":null}},"mismatches":[],"changelog":{"trackingSince":"2026-10-03","recent":[{"id":"chg_01a19ab1-708c-7020-a2a9-8aa46a2e4cf5","kind":"check.verdict","summary":"Stability (0.97 → pass)","materiality":"security","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/stivenson-cvlac-mcp/cvlac-mcp#chg-chg_01a19ab1-708c-7020-a2a9-8aa46a2e4cf5"},{"id":"chg_01a1958c-29f3-728f-b0d0-5497f69a4339","kind":"score.total_changed","summary":"Trust score (83 → 84)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/stivenson-cvlac-mcp/cvlac-mcp#chg-chg_01a1958c-29f3-728f-b0d0-5497f69a4339"},{"id":"chg_01a19065-02ba-7758-8c1b-f5ecfe3f12fa","kind":"check.reverified","summary":"Security disclosure (unverified → fail)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/stivenson-cvlac-mcp/cvlac-mcp#chg-chg_01a19065-02ba-7758-8c1b-f5ecfe3f12fa"},{"id":"chg_01a18b41-4c25-73a7-8ee1-ece700973936","kind":"check.unverifiable","summary":"Security disclosure (fail → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/stivenson-cvlac-mcp/cvlac-mcp#chg-chg_01a18b41-4c25-73a7-8ee1-ece700973936"},{"id":"chg_01a18b41-4c27-7936-af45-f35308a94ab0","kind":"score.total_changed","summary":"Trust score (82 → 83)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/stivenson-cvlac-mcp/cvlac-mcp#chg-chg_01a18b41-4c27-7936-af45-f35308a94ab0"},{"id":"chg_01a180f2-e083-7b88-966d-cb10fc9fbe7a","kind":"score.total_changed","summary":"Trust score (81 → 82)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-28","url":"https://verifymcp.io/servers/stivenson-cvlac-mcp/cvlac-mcp#chg-chg_01a180f2-e083-7b88-966d-cb10fc9fbe7a"},{"id":"chg_01a176a3-fba1-78dd-8da0-b38aa8925522","kind":"score.total_changed","summary":"Trust score (80 → 81)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-26","url":"https://verifymcp.io/servers/stivenson-cvlac-mcp/cvlac-mcp#chg-chg_01a176a3-fba1-78dd-8da0-b38aa8925522"},{"id":"chg_01a16c56-a4e6-76bd-bd47-a3d8fd97dc80","kind":"score.total_changed","summary":"Trust score (79 → 80)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-24","url":"https://verifymcp.io/servers/stivenson-cvlac-mcp/cvlac-mcp#chg-chg_01a16c56-a4e6-76bd-bd47-a3d8fd97dc80"},{"id":"chg_01a1620a-04ca-708a-a133-74ef83909765","kind":"score.total_changed","summary":"Trust score (78 → 79)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-22","url":"https://verifymcp.io/servers/stivenson-cvlac-mcp/cvlac-mcp#chg-chg_01a1620a-04ca-708a-a133-74ef83909765"},{"id":"chg_01a157bd-2121-72fb-9a77-d914f67dc31e","kind":"score.total_changed","summary":"Trust score (77 → 78)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-20","url":"https://verifymcp.io/servers/stivenson-cvlac-mcp/cvlac-mcp#chg-chg_01a157bd-2121-72fb-9a77-d914f67dc31e"},{"id":"chg_01a14845-b282-712b-9050-ed235210e385","kind":"score.total_changed","summary":"Trust score (76 → 77)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-17","url":"https://verifymcp.io/servers/stivenson-cvlac-mcp/cvlac-mcp#chg-chg_01a14845-b282-712b-9050-ed235210e385"},{"id":"chg_01a13df9-d9e1-7829-826b-e514f4dbdaf4","kind":"score.total_changed","summary":"Trust score (75 → 76)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-15","url":"https://verifymcp.io/servers/stivenson-cvlac-mcp/cvlac-mcp#chg-chg_01a13df9-d9e1-7829-826b-e514f4dbdaf4"},{"id":"chg_01a138d8-56d0-727b-bcfd-5b88c72387ae","kind":"check.reverified","summary":"Stability (unverified → 0.37)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-14","url":"https://verifymcp.io/servers/stivenson-cvlac-mcp/cvlac-mcp#chg-chg_01a138d8-56d0-727b-bcfd-5b88c72387ae"},{"id":"chg_01a138d8-5734-770f-8e39-1c09c3653d92","kind":"score.total_changed","summary":"Trust score (70 → 75)","materiality":"functional","direction":"improvement","scoreDelta":5,"occurredOn":"2026-10-14","url":"https://verifymcp.io/servers/stivenson-cvlac-mcp/cvlac-mcp#chg-chg_01a138d8-5734-770f-8e39-1c09c3653d92"},{"id":"chg_01a12f4d-56b3-732d-9ed9-8eb63dce6a7a","kind":"check.reverified","summary":"Security disclosure (unverified → fail)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-12","url":"https://verifymcp.io/servers/stivenson-cvlac-mcp/cvlac-mcp#chg-chg_01a12f4d-56b3-732d-9ed9-8eb63dce6a7a"},{"id":"chg_01a12d06-0992-7aaf-b793-c828017c6191","kind":"check.unverifiable","summary":"Security disclosure (fail → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-11","url":"https://verifymcp.io/servers/stivenson-cvlac-mcp/cvlac-mcp#chg-chg_01a12d06-0992-7aaf-b793-c828017c6191"},{"id":"chg_01a1055b-49d6-7ce6-a241-c537b2d01b2b","kind":"check.reverified","summary":"Malware scan (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-04","url":"https://verifymcp.io/servers/stivenson-cvlac-mcp/cvlac-mcp#chg-chg_01a1055b-49d6-7ce6-a241-c537b2d01b2b"},{"id":"chg_01a1055b-49d7-7cbb-9f95-f70407579a51","kind":"score.total_changed","summary":"Trust score (55 → 70)","materiality":"functional","direction":"improvement","scoreDelta":15,"occurredOn":"2026-10-04","url":"https://verifymcp.io/servers/stivenson-cvlac-mcp/cvlac-mcp#chg-chg_01a1055b-49d7-7cbb-9f95-f70407579a51"},{"id":"chg_01a10015-a8f7-7be5-8a62-23ca1eee5044","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-03","url":"https://verifymcp.io/servers/stivenson-cvlac-mcp/cvlac-mcp#chg-chg_01a10015-a8f7-7be5-8a62-23ca1eee5044"}],"truncated":false,"feedUrl":"https://verifymcp.io/servers/stivenson-cvlac-mcp/cvlac-mcp/changelog.json"},"links":{"html":"https://verifymcp.io/servers/stivenson-cvlac-mcp/cvlac-mcp","markdown":"https://verifymcp.io/servers/stivenson-cvlac-mcp/cvlac-mcp.md","changelogJson":"https://verifymcp.io/servers/stivenson-cvlac-mcp/cvlac-mcp/changelog.json","changelogRss":"https://verifymcp.io/servers/stivenson-cvlac-mcp/cvlac-mcp.xml","external":[{"label":"npm package","href":"https://www.npmjs.com/package/cvlac-mcp"},{"label":"Socket report","href":"https://socket.dev/npm/package/cvlac-mcp"},{"label":"Repository","href":"https://github.com/stivenson/cvlac-mcp"}]}}