{"$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-05T16:38:53.440Z","url":"https://verifymcp.io/servers/me-formlm-cli/formlm-cli","markdownUrl":"https://verifymcp.io/servers/me-formlm-cli/formlm-cli.md","server":{"slug":"me-formlm-cli","name":"FormLM","registryName":"me.formlm/cli","description":"Build AI-powered forms, scored assessments and professional reports on FormLM, by natural language.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"formlm-cli","type":"npm","identifier":"@formlm/cli","withdrawn":false,"url":"https://verifymcp.io/servers/me-formlm-cli/formlm-cli","version":"0.5.4","transport":"stdio","scoredAt":"2026-11-05T10:00:49.326Z"},"score":{"total":70,"tier":"medium","status":"scored","weekDelta":3,"history":[{"date":"2026-11-05","total":70},{"date":"2026-11-04","total":70},{"date":"2026-11-03","total":69},{"date":"2026-11-02","total":69},{"date":"2026-11-01","total":68},{"date":"2026-10-31","total":68},{"date":"2026-10-30","total":67},{"date":"2026-10-29","total":67},{"date":"2026-10-28","total":71},{"date":"2026-10-27","total":71},{"date":"2026-10-26","total":71},{"date":"2026-10-25","total":70},{"date":"2026-10-24","total":70},{"date":"2026-10-23","total":74},{"date":"2026-10-22","total":74},{"date":"2026-10-21","total":70},{"date":"2026-10-20","total":70},{"date":"2026-10-19","total":70},{"date":"2026-10-18","total":70},{"date":"2026-10-17","total":70},{"date":"2026-10-16","total":70},{"date":"2026-10-15","total":70},{"date":"2026-10-14","total":38},{"date":"2026-10-13","total":38},{"date":"2026-10-12","total":38},{"date":"2026-10-11","total":38}]},"categories":[{"name":"Supply Chain Security","score":81,"verdict":"fail","reasons":["No malware found by supply-chain analysis.","CVE check failed: a known high-severity CVE affects zod 3.25.76, a direct dependency. A fixed version is available.","No install/post-install scripts declared.","30 of 94 dependencies flagged as unhealthy."],"codes":[{"code":"supplychain.malware_clean","args":{}},{"code":"cve.direct","args":{"package":"zod","version":"3.25.76","severity":"high"}},{"code":"installscript.none","args":{}},{"code":"dephealth.assessed","args":{"deps":"94","unhealthy":"30"}}]},{"name":"Provenance & Transparency","score":19,"verdict":"fail","reasons":["Repository check failed: the declared repository URL returned HTTP 404.","Provenance check failed: no build-provenance attestation is published.","Clear OSI-approved license (MIT).","Actively maintained (last published 25 days ago).","Security-disclosure policy not yet verified: we couldn't inspect the source repository."],"codes":[{"code":"provenance.repo_http_error","args":{"status":"404"}},{"code":"provenance.none","args":{}},{"code":"license.osi","args":{"spdx":"MIT"}},{"code":"maintenance.recent","args":{"age_days":"25"}},{"code":"disclosure.repo_inconclusive","args":{"reason":"repo_not_visible"}}]},{"name":"Schema Quality & AI Usability","score":78,"verdict":"fail","reasons":["100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).","AI-judged instruction clarity (excellent).","Context-footprint check failed: tool/resource definitions use about 4333 tokens (~270/item across 16 items; 10 tools + 6 resources), over budget; trim descriptions and params.","Usage-examples check failed: none of the tools include examples."],"codes":[{"code":"schema.descriptions","args":{"pct":"100"}},{"code":"schema.ai_quality","args":{"band":"excellent"}},{"code":"schema.footprint_heavy","args":{"avg":"270","items":"16","tools":"10","tokens":"4333","resources":"6"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":70,"verdict":"partial","reasons":["Stability observed for 21 of 30 days with no destabilising changes; credit accrues until the full window elapses."],"codes":[{"code":"stability.building_history","args":{"days":"21"}}]},{"name":"Tool Coverage","score":100,"verdict":"pass","reasons":["100% of tools have a non-trivial description (not blank, and not just the tool's name).","100% of tool parameters carry a description.","Structured output schemas are declared (100% of tools); any adoption earns full credit."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"100"}},{"code":"toolquality.output_present","args":{"pct":"100"}}]},{"name":"Tool Safety","score":100,"verdict":"pass","reasons":["No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.","All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.","An AI judge read all 11 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_declared","args":{"pct":"100","annotated":"2","destructive":"2"}},{"code":"toolsafety.manipulation_clean","args":{"units":"11","judged":"11"}}]},{"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":["Security-disclosure policy not yet verified: we couldn't inspect the source repository."],"malware":[],"components":[{"slug":"formlm-cli","type":"npm","identifier":"@formlm/cli","withdrawn":false,"score":70,"current":true,"url":"https://verifymcp.io/servers/me-formlm-cli/formlm-cli","markdownUrl":"https://verifymcp.io/servers/me-formlm-cli/formlm-cli.md"}],"facts":[{"label":"Registry","value":"npm"},{"label":"Package","value":"@formlm/cli"},{"label":"Version","value":"0.5.4"},{"label":"Transport","value":"stdio"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"auth_login","title":"Login to FormLM","description":"Login to FormLM. Three methods, in order of preference:\n\n1. Access Token (recommended): ask the user to copy it from\n   formlm.me → Workspace → Account Settings → Access Token → Copy, then pass it as `token`.\n\n2. Email verification code (no password needed, fully in-chat, works for ALL accounts):\n   a. Call auth_email_code { email } — returns a captcha image (show it to the user)\n   b. Ask the user to read the 4 digits from the image, then call auth_email_code { email, captcha }\n   c. A 6-digit code is emailed to the user (valid 5 minutes) — ask them for it\n   d. Call this tool with { email, code }\n\n3. email + password: only for accounts that HAVE set a password.\n   Accounts registered via email verification code or Google have NO password.\n   If password login fails with 401/403, do NOT retry — switch to method 1 or 2.\n\nIMPORTANT: At the START of any FormLM session (before calling formlm_generate/formlm_exec),\ncall auth_status first. If not logged in, authenticate immediately. Do NOT wait for a 401 error.","inputs":[{"name":"code","type":"string","required":false,"description":"Email verification code (6 digits, valid 5 min) — request it via auth_email_code first"},{"name":"email","type":"string","required":false,"description":"Account email (use with `code` for verification-code login, or with `password`)"},{"name":"password","type":"string","required":false,"description":"Account password (use together with email; verification-code/Google accounts have no password)"},{"name":"token","type":"string","required":false,"description":"Access token from formlm.me → Workspace → Account Settings → Access Token → Copy"}],"outputs":[{"name":"message","type":"string","required":true,"description":null},{"name":"ok","type":"boolean","required":true,"description":null},{"name":"user","type":"string","required":false,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":356},{"name":"auth_email_code","title":"Request email verification code","description":"Request an email verification code for FormLM login (part of auth_login method 2 — no password needed).\n\nTwo-step usage:\n1. Call WITHOUT `captcha` → returns a captcha image. Show it to the user and ask them to read the 4 digits.\n   (The image is a human-verification gate — you cannot solve it yourself; the user must read it.)\n2. Call WITH `captcha` (the 4 digits) → if correct, a 6-digit code is emailed to the user (valid 5 minutes).\n   Then ask the user for that code and call auth_login with { email, code }.\n\nServer rate limits (anti-abuse): 1 send per email per 60s, 10 sends per IP per minute.\nOn 429, tell the user to wait a minute. On 403, the digits were wrong — fetch a fresh image and try once more.","inputs":[{"name":"captcha","type":"string","required":false,"description":"The 4 digits the user read from the captcha image (omit on first call to get the image)"},{"name":"email","type":"string","required":true,"description":"Account email (the verification code will be sent here)"}],"outputs":[{"name":"message","type":"string","required":true,"description":null},{"name":"stage","type":"string","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":238},{"name":"auth_status","title":"Check login status","description":"Check current login status.\nTokens expire after 7 days — if this returns \"Token invalid (expired)\", ask the user to copy a fresh\nAccess Token from formlm.me → Workspace → Account Settings and re-login via auth_login.","inputs":[],"outputs":[{"name":"loggedIn","type":"boolean","required":true,"description":null},{"name":"message","type":"string","required":true,"description":null},{"name":"url","type":"string","required":false,"description":null},{"name":"user","type":"string","required":false,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":56},{"name":"formlm_usage","title":"Account usage & budget","description":"Report the logged-in account budget: plan, app-slot usage, and AI credits — check BEFORE batch creating.\nFree plan caps at 10 apps (in-use AND recycle-bin apps hold a slot; purging frees it): once full,\napp create / formlm_generate fail with 403 \"app-limit\". AI credits are billed per completed generation\n(capped at zero — generation never blocks). When slots are full, tell the user: purge the recycle bin\nat formlm.me → Workspace or upgrade (formlm.me → #/vip).\nRequires a server that reports usage fields; on an older server those lines come back \"n/a\".","inputs":[],"outputs":[{"name":"account","type":"string","required":false,"description":null},{"name":"appsLeft","type":"number","required":false,"description":null},{"name":"appsLimit","type":"number","required":false,"description":null},{"name":"appsUnlimited","type":"boolean","required":false,"description":null},{"name":"appsUsed","type":"number","required":false,"description":null},{"name":"credits","type":"number","required":false,"description":null},{"name":"message","type":"string","required":true,"description":null},{"name":"ok","type":"boolean","required":true,"description":null},{"name":"plan","type":"string","required":false,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":142},{"name":"formlm_generate","title":"Generate execution plan","description":"Generate an execution plan from natural language description (Phase 1 only — does NOT execute any module).\nServer runs: Plan AI (assess-plan.md) → generates task list for 6 modules (form/scale/connect/report/expert/share).\nReturns: appId, planType, name, plan JSON, and task list. Takes ~10-30 seconds.\nThis tool is plan-only — the name \"generate\" predates the split. There is no single call that produces a live app;\nthat is generate → execute×N (or the CLI `formlm-cli smart generate` wrapper).\n\n## Scene Templates (when user description is vague, present these and ask them to choose):\n1. assessment: 评估量表 — 多维度打分 + 分值区间解读报告 (MOST COMMON, for psych/workplace/health)\n2. consultation: 咨询评估 — 评估 + AI专家对话解读 (for mental health / coaching)\n3. survey: 问卷调查 — 仅收集数据，无打分 (for feedback / research)\n4. exam: 考试测验 — 标准答案 + 对错判分 (for education / training)\n5. report: 外部评测 — 对外部对象打分评价+报告 (for performance reviews / 360 feedback)\n6. learn: 学习卡片 — 知识点 + 自测题 (for micro-learning)\n\n## AFTER SUCCESS — execute modules sequentially via formlm_execute:\nThe plan is cached server-side (~10 min TTL) — just call formlm_execute with appId and module for each module.\nNo need to pass the plan JSON back — it is handled automatically.\nIMPORTANT: module coverage depends on planType. Only `consultation` plans include the `expert` module;\nassessment / exam / report / survey / learn plans do NOT. If the app must have an AI expert, create it\nexplicitly afterwards with formlm_exec: \"assess expert config --app <id> --name ... --role ... --kbText ...\"\n(otherwise the published page promises an expert the app does not have — silent functional gap).\nAfter the ~10 min cache expires, formlm_execute still works if you pass the plan JSON back via `plan`\n(the full plan is returned in this tool's output) — re-running this tool would create a NEW app instead.\n\n## USER FEEDBACK (IMPORTANT for good UX):\nAfter getting the plan, tell the user: \"✅ 计划已生成！\" and list the modules.\nBefore each formlm_execute call, tell the user whic…","inputs":[{"name":"appName","type":"string","required":false,"description":"PIN the app display name (default: chosen by the Plan AI). Use for batch creation when the caller must know the exact name up front to map apps to pages/ledgers."},{"name":"dimensions","type":"string","required":false,"description":"PIN the scoring dimensions (names and count) instead of letting the Plan AI invent them — separate with | or ; (e.g. \"Natural Finish|Glam Intensity|Editorial|Color Confidence\"). Use whenever an exter…"},{"name":"input","type":"string","required":true,"description":"Natural language description of the app. Be specific: mention topic, audience, number of questions, dimensions/subscales, scoring, visual style. Example: \"A workplace stress assessment for office wor…"},{"name":"lang","type":"string","required":false,"description":"BCP-47 language code (e.g. \"zh\", \"zh-hant\", \"zh-tw\", \"en\", \"ja\"). Injects an [OUTPUT LANGUAGE] directive that anchors AI output language for the plan AND every module execute. This is the only langua…"},{"name":"planType","type":"string","required":false,"description":"Plan type. Choose based on user needs: \"assessment\" (scoring+report, for psych/workplace/health evaluations, MOST COMMON), \"consultation\" (scoring+report+AI expert chat, for mental health/coaching),…"},{"name":"questionCount","type":"string","required":false,"description":"Target question count range: \"5-9\" (micro check-in, ~2 min), \"10-15\" (quick screening, 3-5 min), \"15-20\" (standard assessment, 5-8 min), \"20-30\" (deep assessment, 8-15 min), \"30-50\" (facet-level), \"5…"},{"name":"style","type":"string","required":false,"description":"Visual style preference. Suggested options: \"温暖亲切\" (warm friendly, for health/care), \"正式专业\" (formal professional, for workplace/corporate), \"简洁直接\" (minimal clean, for general use), \"轻松活泼\" (lively pla…"}],"outputs":[{"name":"appId","type":"string","required":false,"description":null},{"name":"appName","type":"string","required":false,"description":null},{"name":"message","type":"string","required":true,"description":null},{"name":"ok","type":"boolean","required":true,"description":null},{"name":"planType","type":"string","required":false,"description":null},{"name":"tasks","type":"array","required":false,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":1299},{"name":"formlm_execute","title":"Execute plan module","description":"Execute a single module from the plan generated by formlm_generate.\nCall this sequentially for each module, following the task list order from formlm_generate.\nDefault order: form → scale → connect → report → expert → share.\nTakes ~30-120 seconds per module. Do NOT cancel.\n\n## USER FEEDBACK (IMPORTANT for good UX):\nBefore calling, tell the user: \"正在生成 [module] 模块...\"\nAfter calling, tell the user: \"✅ [module] 模块完成\"\nAfter the last module (share), present the 3 URLs to the user.\n\n## PLAN PASSING:\nPlan is cached server-side (~10 min) after formlm_generate — no need to pass it manually.\nJust call formlm_execute with appId and module for each module in sequence.\nIf you get \"Plan not found in server cache\", pass the plan JSON from the formlm_generate output into `plan`\n— do NOT re-run formlm_generate (that creates a brand-new app).\nSuccess is structured: the response carries appId / module / taskStatus / status(success|error) — trust taskStatus,\nnot human wording. A retried `scale` execute appends dimensions unless existing ones are cleared first\n(formlm_exec: \"assess scale clear --app <id>\").","inputs":[{"name":"appId","type":"string","required":true,"description":"App ID from formlm_generate result"},{"name":"module","type":"string","required":true,"description":"Module to execute: form / scale / connect / report / expert / share"},{"name":"plan","type":"string","required":false,"description":"Full plan JSON (optional — the plan is cached server-side for ~10 min after formlm_generate; pass this only to resume after the cache expired)"}],"outputs":[{"name":"accessType","type":"string","required":false,"description":null},{"name":"appId","type":"string","required":true,"description":null},{"name":"builderUrl","type":"string","required":false,"description":null},{"name":"dataUrl","type":"string","required":false,"description":null},{"name":"message","type":"string","required":true,"description":null},{"name":"module","type":"string","required":true,"description":null},{"name":"ok","type":"boolean","required":true,"description":null},{"name":"shareToken","type":"string","required":false,"description":null},{"name":"shareUrl","type":"string","required":false,"description":null},{"name":"taskStatus","type":"string","required":false,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":354},{"name":"formlm_snapshot","title":"App state snapshot","description":"Get aggregated snapshot of ALL 6 app modules in a single call.\nReturns: form fields, scale dimensions+ranges, connect page styles, report pages+widgets, expert config, share status.\n\nCall this BEFORE making changes to understand what already exists.\nCall this AFTER formlm_generate to verify the generated app.\n\nPrefer summary=true for batch audits / consistency checks: it returns a compact profile\n(appName, fieldCount, questionCount, dimCount+dimNames, reportPageCount+reportPages,\nstyled, expertEnabled/expertHasContent, share.type/perm/day/forever/shareToken) instead of\nthe full module payloads, so you do not have to parse widget layoutData or markdown tables.\nIf any module fetch fails the result carries _errors/_degraded — treat it as UNKNOWN, not as \"empty module\".","inputs":[{"name":"appId","type":"string","required":true,"description":"App ID"},{"name":"module","type":"string","required":false,"description":"Get only one module: form / scale / connect / report / expert / share (default: all 6)"},{"name":"summary","type":"boolean","required":false,"description":"Return the compact audit profile instead of full module payloads (recommended for batch verification)"}],"outputs":[{"name":"data","type":null,"required":false,"description":null},{"name":"mode","type":"string","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":241},{"name":"formlm_doctor","title":"Quality audit (read-only)","description":"Read-only quality inspection of ONE app — the fastest way to verify a generated app before wiring it into a page.\nReturns {ok, failCount, warnCount, summary, findings[]} where each finding is {name, level(pass|warn|fail), detail, fix?}.\n\nChecks: content/scoring coverage, expert enabled-but-empty or referenced-but-missing (dead AI assistant),\nstyling applied, dimensions without report pages, unexpected certificate page, share access semantics\n(type=all/owner = login required — anonymous respondents get the login page, NOT the form), link expiry,\nand fill-in URL reachability.\nSet expectLang (e.g. \"en\", \"zh-hant\") to catch text written in the wrong script — the classic batch defect\nwhere an English app ends up with Chinese certificate/report boilerplate. Use deep=true to also scan report\nwidget BODY text (extra queries; titles/labels are always scanned).\n\nRead-only: this tool never writes. Apply the returned `fix` commands via formlm_exec.","inputs":[{"name":"appId","type":"string","required":true,"description":"App ID"},{"name":"deep","type":"boolean","required":false,"description":"Also fetch and scan report widget body text (slower, more accurate language check)"},{"name":"expectLang","type":"string","required":false,"description":"BCP-47 expected language, e.g. \"en\" / \"zh\" / \"zh-hant\" / \"ja\". Enables the script-consistency scan."},{"name":"probe","type":"boolean","required":false,"description":"Probe the fill-in URL for reachability (default true)"}],"outputs":[{"name":"appId","type":"string","required":false,"description":null},{"name":"failCount","type":"number","required":false,"description":null},{"name":"findings","type":"array","required":false,"description":null},{"name":"message","type":"string","required":true,"description":null},{"name":"ok","type":"boolean","required":true,"description":null},{"name":"summary","type":null,"required":false,"description":null},{"name":"warnCount","type":"number","required":false,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":313},{"name":"formlm_skill","title":"Domain knowledge doc","description":"Get the full SKILL.md domain knowledge for a specific skill module.\nSame documents that AssessAgent loads internally — contains P0/P1/P2 constraints, parameter rules, examples.\n\nYou can also read these via MCP resources: formlm://skills/<skillId>\nREAD the relevant skill BEFORE constructing formlm_exec commands manually.","inputs":[{"name":"skillId","type":"string","required":true,"description":"Skill ID: form / scale / connect / report / expert / share"}],"outputs":[{"name":"markdown","type":"string","required":true,"description":null},{"name":"skillId","type":"string","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":99},{"name":"formlm_exec","title":"Run FormLM CLI command","description":"Execute a raw FormLM CLI command directly.\nUse this for fine-grained control that formlm_generate doesn't cover, or for modifying existing apps.\n\nIMPORTANT: All commands must start with \"assess\". Read formlm_skill first to ensure P0 compliance.\n\nSAFETY — destructive operations (remove/delete):\n  Before running ANY \"remove\" command (app/form/scale/expert), first run the matching\n  \"query\"/\"list\"/\"find\" command to show the user the EXACT name of what will be deleted,\n  then get explicit confirmation (\"Delete app 'X' (id: Y)? This cannot be undone.\").\n  NEVER call a remove command based on a vague reference (\"delete it\", \"remove that one\")\n  without first resolving and confirming the exact target. Deletion is irreversible.\n\nWhitelisted commands (3-token granularity; anything else returns 403):\n  App:     assess app list/create/use/current/update/remove/urls\n  Form:    assess form query/find/types/config/add/update/remove/move/set-property\n  Scale:   assess scale query/find/add/update/set/remove/clear/config/keys/data\n  Connect: assess connect query/find/types/config/cover-page/final-page/main-page/style\n  Report:  assess report query/find/update/page/widget  (conditional rules: assess report widget logic add/list/remove)\n  Expert:  assess expert query/find/config/set/avatar/remove/chat\n  Share:   assess share set/query/url/api/flavor\n  Smart:   assess smart plan/execute\n  Skill:   assess skill form/scale/connect/report/expert/share\n  NOT available here: assess snapshot / assess field * (CLI-only wrappers of the module queries)\n\nCommon patterns:\n  \"assess app list --all --with-urls --json\"                                                     (full inventory incl. shareToken per app)\n  \"assess app urls --app <id> --json\"                                                            (URLs + published/shareType/shareToken)\n  \"assess form add --app <id> --id q1 --name \\\"Name\\\" --type radio --options \\\"A:1,B:2,C:3\\\" --json\"\n  \"assess scale add --app <id> --id stress --name \\\"St…","inputs":[{"name":"command","type":"string","required":true,"description":"Full CLI command starting with \"assess\". Do NOT include the \"formlm-cli\" prefix. Add --json flag for structured output. Escape inner quotes with \\\"."}],"outputs":[{"name":"code","type":"number","required":true,"description":null},{"name":"data","type":null,"required":false,"description":null},{"name":"message","type":"string","required":true,"description":null},{"name":"ok","type":"boolean","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":888}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T10:00:49.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":[{"id":"GHSA-mrhx-c7xc-m3w5","cve":"CVE-2023-54404","severity":"high","fixAvailable":true}],"vulnerabilitiesTotal":1,"dependencies":{"nodes":94,"partial":false,"deprecated":null,"stale":30,"noRepo":null}},"mismatches":[],"changelog":{"trackingSince":"2026-10-11","recent":[{"id":"chg_01a1a600-e33f-7821-b5bc-4f84f92bd0d8","kind":"score.total_changed","summary":"Trust score (69 → 70)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-04","url":"https://verifymcp.io/servers/me-formlm-cli/formlm-cli#chg-chg_01a1a600-e33f-7821-b5bc-4f84f92bd0d8"},{"id":"chg_01a19bb4-5c44-7727-8d77-f51e35276f6d","kind":"score.total_changed","summary":"Trust score (68 → 69)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/me-formlm-cli/formlm-cli#chg-chg_01a19bb4-5c44-7727-8d77-f51e35276f6d"},{"id":"chg_01a19167-c787-7a35-9ee5-a7cf7428e4cc","kind":"score.total_changed","summary":"Trust score (67 → 68)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/me-formlm-cli/formlm-cli#chg-chg_01a19167-c787-7a35-9ee5-a7cf7428e4cc"},{"id":"chg_01a18c41-7640-7087-b226-6dff61ffc0e9","kind":"check.unverifiable","summary":"Security disclosure (fail → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/me-formlm-cli/formlm-cli#chg-chg_01a18c41-7640-7087-b226-6dff61ffc0e9"},{"id":"chg_01a1871a-eca3-7972-b9fc-384c66e852d5","kind":"check.verdict","summary":"Source repository (pass → fail)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/me-formlm-cli/formlm-cli#chg-chg_01a1871a-eca3-7972-b9fc-384c66e852d5"},{"id":"chg_01a1871a-eca5-7336-8207-94d50692d362","kind":"score.total_changed","summary":"Trust score (71 → 67)","materiality":"functional","direction":"regression","scoreDelta":-4,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/me-formlm-cli/formlm-cli#chg-chg_01a1871a-eca5-7336-8207-94d50692d362"},{"id":"chg_01a177a7-a481-7c43-b901-4e548efaebdd","kind":"score.total_changed","summary":"Trust score (70 → 71)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-26","url":"https://verifymcp.io/servers/me-formlm-cli/formlm-cli#chg-chg_01a177a7-a481-7c43-b901-4e548efaebdd"},{"id":"chg_01a16d5b-2132-755e-b351-dcb783a7f2de","kind":"advisory.identified","summary":"CVE-2023-54404 affects this package (high)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-24","url":"https://verifymcp.io/servers/me-formlm-cli/formlm-cli#chg-chg_01a16d5b-2132-755e-b351-dcb783a7f2de"},{"id":"chg_01a16d5b-2133-7bcb-9696-12f7dc218b04","kind":"check.verdict","summary":"Known CVEs (pass → fail)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-24","url":"https://verifymcp.io/servers/me-formlm-cli/formlm-cli#chg-chg_01a16d5b-2133-7bcb-9696-12f7dc218b04"},{"id":"chg_01a16d5b-2134-72da-a41a-186903e435d0","kind":"score.total_changed","summary":"Trust score (74 → 70)","materiality":"functional","direction":"regression","scoreDelta":-4,"occurredOn":"2026-10-24","url":"https://verifymcp.io/servers/me-formlm-cli/formlm-cli#chg-chg_01a16d5b-2134-72da-a41a-186903e435d0"},{"id":"chg_01a1630e-99bd-7e77-a685-c391f992332c","kind":"check.reverified","summary":"Stability (unverified → 0.23)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-22","url":"https://verifymcp.io/servers/me-formlm-cli/formlm-cli#chg-chg_01a1630e-99bd-7e77-a685-c391f992332c"},{"id":"chg_01a1630e-99be-78d0-842e-bb6780f072e2","kind":"score.total_changed","summary":"Trust score (70 → 74)","materiality":"functional","direction":"improvement","scoreDelta":4,"occurredOn":"2026-10-22","url":"https://verifymcp.io/servers/me-formlm-cli/formlm-cli#chg-chg_01a1630e-99be-78d0-842e-bb6780f072e2"},{"id":"chg_01a13d39-d21b-7280-b539-202fa2cf4c9f","kind":"check.reverified","summary":"Injection markers (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-15","url":"https://verifymcp.io/servers/me-formlm-cli/formlm-cli#chg-chg_01a13d39-d21b-7280-b539-202fa2cf4c9f"},{"id":"chg_01a13d39-d21c-75c0-ae00-59bbdced81b6","kind":"check.appeared","summary":"First check of Judged manipulation (pass)","materiality":"security","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-15","url":"https://verifymcp.io/servers/me-formlm-cli/formlm-cli#chg-chg_01a13d39-d21c-75c0-ae00-59bbdced81b6"},{"id":"chg_01a13d39-d21c-7b12-a932-7f9c4cb6449c","kind":"check.reason","summary":"Stability (Stability not yet verified: not enough scan history yet (needs a 30-day window).)","materiality":"security","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-15","url":"https://verifymcp.io/servers/me-formlm-cli/formlm-cli#chg-chg_01a13d39-d21c-7b12-a932-7f9c4cb6449c"},{"id":"chg_01a13d39-d21d-7238-a624-b7d92c689e79","kind":"check.reverified","summary":"Tool coverage (unverified → 100)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-15","url":"https://verifymcp.io/servers/me-formlm-cli/formlm-cli#chg-chg_01a13d39-d21d-7238-a624-b7d92c689e79"},{"id":"chg_01a13d39-d21d-77a6-bacd-c6e5338ad1b5","kind":"check.reverified","summary":"Schema quality (unverified → 100)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-15","url":"https://verifymcp.io/servers/me-formlm-cli/formlm-cli#chg-chg_01a13d39-d21d-77a6-bacd-c6e5338ad1b5"},{"id":"chg_01a13d39-d21e-7517-852b-40038e11ed9e","kind":"check.reverified","summary":"MCP protocol (unverified → pass)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-15","url":"https://verifymcp.io/servers/me-formlm-cli/formlm-cli#chg-chg_01a13d39-d21e-7517-852b-40038e11ed9e"},{"id":"chg_01a13d39-d21e-7a70-9346-b4532fcb90cd","kind":"check.appeared","summary":"First check of Schema quality (fail)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-15","url":"https://verifymcp.io/servers/me-formlm-cli/formlm-cli#chg-chg_01a13d39-d21e-7a70-9346-b4532fcb90cd"},{"id":"chg_01a13d39-d21f-70d8-970a-b980a4377aaa","kind":"check.appeared","summary":"First check of Schema quality (excellent)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-15","url":"https://verifymcp.io/servers/me-formlm-cli/formlm-cli#chg-chg_01a13d39-d21f-70d8-970a-b980a4377aaa"}],"truncated":true,"feedUrl":"https://verifymcp.io/servers/me-formlm-cli/formlm-cli/changelog.json"},"links":{"html":"https://verifymcp.io/servers/me-formlm-cli/formlm-cli","markdown":"https://verifymcp.io/servers/me-formlm-cli/formlm-cli.md","changelogJson":"https://verifymcp.io/servers/me-formlm-cli/formlm-cli/changelog.json","changelogRss":"https://verifymcp.io/servers/me-formlm-cli/formlm-cli.xml","external":[{"label":"npm package","href":"https://www.npmjs.com/package/@formlm/cli"},{"label":"Socket report","href":"https://socket.dev/npm/package/@formlm/cli"},{"label":"Website","href":"https://formlm.me/"}]}}