Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.form/formio-mcp

NPM · @FORMIO/MCP

Create and manage Form.io forms, resources, actions, roles, and projects from your AI agent.

Available components

−1 this week 89 Trust /100

Last scanned (23 hours ago)

Scores higher than 93% of npm servers

Category Developer Tools

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security98
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 30 of 95 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency100
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to formio/ai). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 22 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability64
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 4632 tokens (~185/item across 25 items; 25 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management73
  • Stability observed for 22 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 26 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
What we tested

Checks we ran (16)

  • Malware scan
  • Known CVEs
  • Install scripts
  • Dependency health
  • Source repository
  • Provenance
  • License
  • Maintenance
  • Security disclosure
  • Schema quality
  • Stability
  • Tool coverage
  • Injection markers
  • Destructive annotations
  • Judged manipulation
  • MCP protocol

Does not apply to this package (2)

  • Endpoint SecurityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.
  • Transport & ReachabilityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.

The score does not measure everything. What the score does not measure →

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 4 Nov 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 67 to 70. That category is still filling its 30-day observation window: 20 days of observed history at the previous scan, 21 at this one. The score rises as the window fills, whether or not the server changes.

  • 3 Nov 26 −2
    • Stability: fail → 0.67 functional
  • 15 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 74 to 78.

  • 14 Oct 26 +40
    • Stability: unverified → fail ▼ security
    • Known CVEs: pass → unverified ▼ security
    • Injection markers: unverified → pass ▲ security
    • Dependency health: 0.84 → unverified ▼ functional
    • Schema quality: 323 → 185 ▲ functional
    • Tool coverage: unverified → 100 ▲ functional
    • MCP protocol: unverified → pass ▲ functional
    • Schema quality: excellent → good functional
    • Package version: 0.14.1 → 1.0.1 functional
    • Package version: 0.14.1 → 1.0.0 functional
  • 12 Oct 26 0
    • Security disclosure: unverified → pass ▲ functional
    • Package version: 0.14.0 → 0.14.1 functional
  • 11 Oct 26 0
    • Security disclosure: pass → unverified ▼ functional
    • Package version: 0.14.0 → 0.14.1 functional
  • 7 Oct 26 −42
    • Stability: 0.90 → unverified ▼ security
    • Tool safety: pass → unverified ▼ security
    • Capabilities: pass → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
    • Package version: 0.14.0 → 0.14.1 functional
  • 3 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Analysed npm/@formio/mcp@1.0.1

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem npm
Reason Verified
Discovered via Registry attestation endpoint
Source repo formio/ai
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/formio/ai/.github/workflows/release.yml@refs/heads/main
Rekor log index 3248523393
Predicate type SLSA build provenance https://slsa.dev/provenance/v1
Subject digest sha512:7d9ed865a8a02f4f39758e050c0a3c6d37e41fcd05e989643b5042dff7cbe0758c179412052efca4c1b476dff3c50757d060ecf074548c50271607d48

Background: How many MCP packages publish verified provenance →

Dependencies 95 packages
Packages resolved 95
Stale 30
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 25 exposed · ~3,347 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
action_create ~87

Create a new action on a form. Call action_type_get first to discover the required settings schema for the action type.

NameTypeReqDescription
actionobjectyesAction definition
cwdstring–Optional. Directory whose project to use; defaults to the client's workspace root.
formIdstringyesThe form's _id, a 24-character ObjectId (form_get returns it)
NameTypeReqDescription
_idstring––
condition–––
formstring––
handlerarray––
methodarray––
namestring––
prioritynumber––
settings–––
titlestring––

No examples provided.

action_delete ~99

Delete an action from a form. The action stops running on submissions immediately and is not recoverable — call action_get first if the settings may be needed again.

NameTypeReqDescription
actionIdstringyesThe action ID to delete
cwdstring–Optional. Directory whose project to use; defaults to the client's workspace root.
formIdstringyesThe form's _id, a 24-character ObjectId (form_get returns it)
NameTypeReqDescription
messagestringyes–
okbooleanyes–

No examples provided.

action_get ~100

Get a single action by ID from a form, including its handler, method, condition, and type-specific settings. Call action_list first to find the action ID.

NameTypeReqDescription
actionIdstringyesThe action ID to retrieve
cwdstring–Optional. Directory whose project to use; defaults to the client's workspace root.
formIdstringyesThe form's _id, a 24-character ObjectId (form_get returns it)
NameTypeReqDescription
_idstring––
condition–––
formstring––
handlerarray––
methodarray––
namestring––
prioritynumber––
settings–––
titlestring––

No examples provided.

action_list ~152

List the actions configured on a form, one page at a time — the server-side handlers that run when a submission is saved, such as save-to-resource, email, login, and role assignment.

NameTypeReqDescription
cwdstring–Optional. Directory whose project to use; defaults to the client's workspace root.
formIdstringyesThe form's _id, a 24-character ObjectId (form_get returns it)
limitinteger–Page size
selectstring–Comma-separated fields to return
skipinteger–Items to skip; page while `hasMore`
sortstring–Form.io sort, e.g. "-modified" for newest first
NameTypeReqDescription
actionsarrayyes–
hasMorebooleanyesTrue when items remain; fetch them with a larger `skip`
totalnumber–Items Form.io holds for this query, across all pages; absent when Form.io does not report one

No examples provided.

action_type_get ~103

Get action type info and settings form schema. Call this before action_create to discover the required settings for the action type.

NameTypeReqDescription
actionNamestringyesThe action type name (e.g. "email", "save", "login")
cwdstring–Optional. Directory whose project to use; defaults to the client's workspace root.
formIdstringyesThe form's _id, a 24-character ObjectId (form_get returns it)
NameTypeReqDescription
namestring––
settingsFormobject––
titlestring––

No examples provided.

action_type_list ~75

List the action types available for a form. Returns the whole catalog the server supports in one result.

NameTypeReqDescription
cwdstring–Optional. Directory whose project to use; defaults to the client's workspace root.
formIdstringyesThe form's _id, a 24-character ObjectId (form_get returns it)
NameTypeReqDescription
actionTypesarrayyes–
hasMorebooleanyesTrue when items remain; fetch them with a larger `skip`
totalnumber–Items Form.io holds for this query, across all pages; absent when Form.io does not report one

No examples provided.

action_update ~114

Update an existing action on a form; call action_get first if you do not already have it. Sent fields overwrite, arrays and objects whole; top-level fields left out keep their value.

NameTypeReqDescription
actionobjectyesAction definition
actionIdstringyesThe action ID to update
cwdstring–Optional. Directory whose project to use; defaults to the client's workspace root.
formIdstringyesThe form's _id, a 24-character ObjectId (form_get returns it)
NameTypeReqDescription
_idstring––
condition–––
formstring––
handlerarray––
methodarray––
namestring––
prioritynumber––
settings–––
titlestring––

No examples provided.

form_create ~172

Create a form in the project `cwd` resolves to. Build the form JSON with the formio-schema skill first. On a deployment licensed for revisions, `revisions` defaults to "original". Not for a draft of an existing form ("save a draft", "draft <change>"): use form_update with `draft: true`.

NameTypeReqDescription
acceptNoHistoryboolean–Set true only after the user agrees to save without revision history. Without it, such a save (no revisions licence, or the form has revisions off) is refused with HISTORY_NOT_ACCEPTED and nothing is…
cwdstring–Optional. Directory whose project to use; defaults to the client's workspace root.
formobjectyesForm.io form JSON definition
notestring–Note describing the initial revision
NameTypeReqDescription
_idstring––
access–––
componentsarray––
displaystring––
namestring––
pathstring––
revisionsstring|boolean––
submissionAccess–––
titlestring––
typestring––

No examples provided.

form_get ~132

Fetch a form definition, by _id or path, from the project `cwd` resolves to. `draft: true` fetches its in-flight draft instead of the published form.

NameTypeReqDescription
cwdstring–Optional. Directory whose project to use; defaults to the client's workspace root.
draftboolean–When true, fetch the form's current draft (GET /<form>/draft)
formIdOrPathstringyesForm ID (_id) or path (e.g. "user/login")
selectstring–Comma-separated fields to return (omit for full form JSON)
NameTypeReqDescription
_idstring––
access–––
componentsarray––
displaystring––
namestring––
pathstring––
revisionsstring|boolean––
submissionAccess–––
titlestring––
typestring––

No examples provided.

form_list ~149

List forms from the project `cwd` resolves to, one page at a time, optionally filtered by type and tags.

NameTypeReqDescription
cwdstring–Optional. Directory whose project to use; defaults to the client's workspace root.
limitinteger–Page size
selectstring–Comma-separated fields to return (default: _id,title,name,path,type,tags)
skipinteger–Items to skip; page while `hasMore`
sortstring–Form.io sort, e.g. "-modified" for newest first
tagsarray–Return only forms carrying every one of these tags
typestring–Filter by form type
NameTypeReqDescription
formsarrayyes–
hasMorebooleanyesTrue when items remain; fetch them with a larger `skip`
totalnumber–Items Form.io holds for this query, across all pages; absent when Form.io does not report one

No examples provided.

form_publish ~130

Publish a form's draft as its live version in the project `cwd` resolves to. Save the draft first with form_update and `draft: true`; a form with no draft fails with NO_DRAFT. Needs the revisions licence (Security Module).

NameTypeReqDescription
cwdstring–Optional. Directory whose project to use; defaults to the client's workspace root.
formIdstringyesThe form's _id, a 24-character ObjectId (form_get returns it)
notestringyesRevision note describing what the draft changes against the live form (e.g. "Add phone field")
NameTypeReqDescription
_idstring––
access–––
componentsarray––
displaystring––
namestring––
pathstring––
revisionsstring|boolean––
submissionAccess–––
titlestring––
typestring––

No examples provided.

form_revert ~154

Revert a form in the project `cwd` resolves to back to a prior revision: its components, tags, properties and display replace the live form's. Find it with form_revision_list. Needs the revisions licence (Security Module).

NameTypeReqDescription
cwdstring–Optional. Directory whose project to use; defaults to the client's workspace root.
formIdstringyesThe form's _id, a 24-character ObjectId (form_get returns it)
notestringyesRevision note; use "Reverted to version {version}" unless the user gives another
versionstringyesThe revision to restore: its _vid (e.g. "3") or its revision document _id
NameTypeReqDescription
_idstring––
access–––
componentsarray––
displaystring––
namestring––
pathstring––
revisionsstring|boolean––
submissionAccess–––
titlestring––
typestring––

No examples provided.

form_revision_get ~103

Fetch one immutable form revision from the project `cwd` resolves to. Restore it with form_revert, passing its `_vid`.

NameTypeReqDescription
cwdstring–Optional. Directory whose project to use; defaults to the client's workspace root.
formIdOrPathstringyesForm ID (_id) or path alias (e.g. "user/login")
versionstringyesRevision _vid (e.g. "3") or revision document _id
NameTypeReqDescription
_idstring––
access–––
componentsarray––
displaystring––
namestring––
pathstring––
revisionsstring|boolean––
submissionAccess–––
titlestring––
typestring––

No examples provided.

form_revision_list ~181

List a form's published revision summaries in the project `cwd` resolves to, newest first, one page at a time. Read one with form_revision_get, or restore one with form_revert, passing its `_vid`.

NameTypeReqDescription
cwdstring–Optional. Directory whose project to use; defaults to the client's workspace root.
formIdOrPathstringyesForm ID (_id) or path alias (e.g. "user/login")
limitinteger–Page size
selectstring–Comma-separated fields to return (default: _id,_vid,_vnote,_vuser,created,modified)
skipinteger–Items to skip; page while `hasMore`
sortstring–Form.io sort, e.g. "-modified" for newest first (default: -_vid)
NameTypeReqDescription
hasMorebooleanyesTrue when items remain; fetch them with a larger `skip`
revisionsarrayyes–
totalnumber–Items Form.io holds for this query, across all pages; absent when Form.io does not report one

No examples provided.

form_update ~301

Update a form in the project `cwd` resolves to: read it with form_get, apply the change using the formio-schema skill, and send the form. Sent fields overwrite, arrays and objects whole; top-level fields left out keep their value. Pass `draft: true` to save a draft instead of the live form; publish it with form_publish, and restore a prior revision with form_revert.

NameTypeReqDescription
acceptNoHistoryboolean–Set true only after the user agrees to save without revision history. Without it, such a save (no revisions licence, or the form has revisions off) is refused with HISTORY_NOT_ACCEPTED and nothing is…
cwdstring–Optional. Directory whose project to use; defaults to the client's workspace root.
draftboolean–When true, save a draft instead of the live form. Only the draft fields of `form` are saved (components, settings, tags, properties, controller, esign, display), over any existing draft; form_get's o…
formobjectyesThe updated form JSON
formIdstringyesThe form's _id, a 24-character ObjectId (form_get returns it)
notestringyesWhat changed against the live form, with no preamble ("Saved draft:", "Updated:")
NameTypeReqDescription
_idstring––
access–––
componentsarray––
displaystring––
namestring––
pathstring––
revisionsstring|boolean––
submissionAccess–––
titlestring––
typestring––

No examples provided.

project_export ~106

Export the project `cwd` resolves to as a template (roles, resources, forms, actions). With `tag`, export the template that version tag stored instead — how a workspace's template.json is refreshed; Form.io does not store project-level access with a tag, so that comes from the project's current access.

NameTypeReqDescription
cwdstring–Optional. Directory whose project to use; defaults to the client's workspace root.
tagstring–A version tag from project_tag_list
NameTypeReqDescription
actionsobject––
formsobject––
resourcesobject––
rolesobject––

No examples provided.

project_get ~158

Report which Form.io project the working directory resolves to, which deployment hosts it, and which layer supplied each — the preflight before the first call that reads from or writes to a deployment. It uses the resolver every tool uses, so no shell command is needed. Branch on `status`: "ok" — proceed. "not-configured" — relay the message, ask the user for the one value it names, record it with project_set, and call this again. "base-url-unresolved" — the project IS recorded: ask for the Base URL alone, never the Project URL again. Reads only; project_set records a choice.

NameTypeReqDescription
cwdstring–Optional. Directory whose project to use; defaults to the client's workspace root.
NameTypeReqDescription
baseUrlstring––
baseUrlSourcestring––
cwdstringyes–
cwdSourcestringyes–
forcedboolean––
messagestringyes–
notesarrayyes–
projectUrlstring––
projectUrlSourcestring––
remedyobject–The fix as a call: ask the user for `supply`, add it to `arguments`, call `tool`. Absent when status is "ok" or the fix is an edit to a committed formio.json
shadowedarrayyes–
statusstringyes"ok": proceed. "not-configured": ask the user for a Project URL and record it with project_set. "base-url-unresolved": ask for the Base URL alone and do what the report names. Anything but "ok" block…
unpairedarrayyes–

No examples provided.

project_import ~114

Import a template's roles, resources, forms and actions into the project `cwd` resolves to, for a first build: build it with the formio-resource-planner skill. Each form it names is replaced, its actions deleted and recreated, and its `access` replaces the project's; change an existing project with the form, role and action tools instead.

NameTypeReqDescription
cwdstring–Optional. Directory whose project to use; defaults to the client's workspace root.
templateobjectyesThe template JSON object to import
NameTypeReqDescription
messagestringyes–
okbooleanyes–

No examples provided.

project_set ~367

Set the active Form.io project for a directory: records its Project URL in ~/.formio/projects.json, keyed by the directory `cwd` resolves to. Call it whenever the user asks to set, change, or switch the project; acknowledging in text persists nothing. No restart is needed. Resolution precedence: a committed formio.json, then this mapping, then FORMIO_PROJECT_URL in the environment, the weakest — so a mapping written here DOES override the environment. `ok` and `projectUrl` on the result report the pair that resolves. Pass projectUrl alone: the Base URL is derived — https://api.form.io for a form.io host, the parent path for a sub-directory project. Pass baseUrl only when the server reports it cannot be derived. A committed formio.json ({"projectUrl": "..."}, plus "baseUrl" only when it cannot be derived) is written by hand in the application's folder; this server reads it and never writes it.

NameTypeReqDescription
baseUrlstring–The deployment hosting the project; omit it unless the server reports it cannot be derived. May carry a sub-path; refused for a form.io host. Omitted, this directory's mapped value is kept unless the…
cwdstring–Optional. Directory whose mapping to write; defaults to the client's workspace root.
projectUrlstring–Full Project URL, e.g. https://examples.form.io or https://forms.mysite.com/myproject; never https://api.form.io. Omit it only to add a baseUrl to THIS DIRECTORY'S OWN mapping: where a committed form…
NameTypeReqDescription
baseUrlstring––
changedbooleanyes–
cwdstringyes–
forcedboolean––
messagestringyes–
okbooleanyesFalse: the record WAS written but the directory still needs attention; do what `message` names, and do not retry this call
projectUrlstringyes–

No examples provided.

project_tag_create ~127

Version the project `cwd` resolves to: Form.io snapshots its current state under a semver `tag` with a `description`, and the project is then at that version. Ask the user before calling. Export the version with project_export `tag`.

NameTypeReqDescription
cwdstring–Optional. Directory whose project to use; defaults to the client's workspace root.
descriptionstringyesWhat changed in this version (at most 256 characters)
tagstringyesThe next semver version, e.g. 1.3.0 (at most 32 characters)
NameTypeReqDescription
createdstring––
descriptionstring––
tagstringyes–

No examples provided.

project_tag_list ~99

Report the version the project `cwd` resolves to is at (`current`) and its version tags, newest first. With `compare: true`, also report the roles, resources, forms and actions changed since `current` — changes made outside the agent.

NameTypeReqDescription
compareboolean–Compare the project with its current tag (two template transfers)
cwdstring–Optional. Directory whose project to use; defaults to the client's workspace root.
NameTypeReqDescription
comparisonobject––
currentstring––
tagsarrayyes–

No examples provided.

role_create ~53

Create a new role in the project `cwd` resolves to.

NameTypeReqDescription
cwdstring–Optional. Directory whose project to use; defaults to the client's workspace root.
roleobjectyesThe role to create
NameTypeReqDescription
_idstring––
adminboolean––
defaultboolean––
titlestring––

No examples provided.

role_list ~106

List the roles defined in the project `cwd` resolves to, one page at a time.

NameTypeReqDescription
cwdstring–Optional. Directory whose project to use; defaults to the client's workspace root.
limitinteger–Page size
selectstring–Comma-separated fields to return
skipinteger–Items to skip; page while `hasMore`
sortstring–Form.io sort, e.g. "-modified" for newest first
NameTypeReqDescription
hasMorebooleanyesTrue when items remain; fetch them with a larger `skip`
rolesarrayyes–
totalnumber–Items Form.io holds for this query, across all pages; absent when Form.io does not report one

No examples provided.

role_update ~95

Update an existing role in the project `cwd` resolves to. Sent fields overwrite, arrays and objects whole; top-level fields left out keep their value.

NameTypeReqDescription
cwdstring–Optional. Directory whose project to use; defaults to the client's workspace root.
roleobjectyesRole document with updated fields
roleIdstringyesThe _id of the role to update, a 24-character ObjectId
NameTypeReqDescription
_idstring––
adminboolean––
defaultboolean––
titlestring––

No examples provided.

server_status ~70

Report this server's name and version and how `cwd` resolves to a project, as project_get does. It makes no Form.io request and needs no credentials: call it first when other tools fail.

NameTypeReqDescription
cwdstring–Optional. Directory whose project to use; defaults to the client's workspace root.
NameTypeReqDescription
baseUrlstring––
baseUrlSourcestring––
cwdstringyes–
cwdSourcestringyes–
messagestringyes–
namestringyes–
projectUrlstring––
projectUrlSourcestring––
statusstringyesAs project_get's `status`
versionstringyes–

No examples provided.

Install

How do I install the io.form/formio-mcp server?

io.form/formio-mcp runs locally as an npm package, launched with npx -y @formio/mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · @formio/mcp

# add to Claude Code
claude mcp add io-form-formio-mcp -- npx -y @formio/mcp
Common questions

What is the io.form/formio-mcp server?

io.form/formio-mcp is listed in the public MCP registry as io.form/formio-mcp. Create and manage Form.io forms, resources, actions, roles, and projects from your AI agent. This page covers its npm package (@formio/mcp).

Is the io.form/formio-mcp server safe to use?

io.form/formio-mcp scores 89 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.form/formio-mcp server expose?

io.form/formio-mcp exposes 25 tools: server_status, form_create, form_get, form_list, form_revision_get, and 20 more. Their descriptions and schemas cost roughly 3,347 tokens of context every time the server is loaded.

Is the io.form/formio-mcp server still maintained?

io.form/formio-mcp is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the io.form/formio-mcp server under?

io.form/formio-mcp declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

What did VerifyMCP test on the io.form/formio-mcp server?

VerifyMCP ran 16 checks on io.form/formio-mcp, covering Malware scan, Known CVEs, Install scripts, Dependency health and 12 more. Endpoint Security and Transport & Reachability do not apply to an npm package, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.