{"_id":"@formio/mcp","_rev":"23-7caa4c7872027d75ffc121ab8f10bcb9","name":"@formio/mcp","dist-tags":{"latest":"0.14.0"},"versions":{"0.1.0":{"name":"@formio/mcp","version":"0.1.0","license":"MIT","_id":"@formio/mcp@0.1.0","maintainers":[{"name":"edwinanciani","email":"edwinanciani@gmail.com"},{"name":"travist","email":"travis@form.io"},{"name":"lane-formio","email":"lane@form.io"},{"name":"tanyagashtold","email":"tanya@form.io"},{"name":"alexeynikipelau","email":"alexey.nikipelau@form.io"},{"name":"brendanbond","email":"brendanbond@gmail.com"},{"name":"johnformio","email":"johnt@form.io"}],"homepage":"https://github.com/formio/ai#readme","bugs":{"url":"https://github.com/formio/ai/issues"},"bin":{"formio-mcp":"dist/stdio.js"},"dist":{"shasum":"fdc7929b187082e5db2b69bad2a4c3fa972eba2b","tarball":"https://registry.npmjs.org/@formio/mcp/-/mcp-0.1.0.tgz","fileCount":69,"integrity":"sha512-2LJv4b8BoQXC4x+fKi7mfML0UsMW5ch5yPzjIe+e+Cc4uDIFp8ow8nOk+GAVjsQJUKU8qRGk5oC7BrM3p24YxQ==","signatures":[{"sig":"MEUCIGxchwe9rPI+t0IpPZPQAzJ4zt4Y1zZRealmKfZ/4uRXAiEAqnUEghwCGEqMxO8mgGny7k8QiauQSqud6ugo9b8yIoY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":60654},"main":"./dist/server.js","type":"module","_from":"file:formio-mcp-0.1.0.tgz","types":"./dist/server.d.ts","engines":{"node":">=20"},"scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src && tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist coverage","start":"node dist/index.js","build:dev":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"lane-formio","email":"lane@form.io"},"_resolved":"/tmp/942c18ec9607feb143cd5ff537c3f747/formio-mcp-0.1.0.tgz","_integrity":"sha512-2LJv4b8BoQXC4x+fKi7mfML0UsMW5ch5yPzjIe+e+Cc4uDIFp8ow8nOk+GAVjsQJUKU8qRGk5oC7BrM3p24YxQ==","repository":{"url":"git+https://github.com/formio/ai.git","type":"git","directory":"packages/mcp-server"},"_npmVersion":"10.9.7","description":"Form.io MCP Server","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.3.6","express":"^4.21.2","@modelcontextprotocol/sdk":"^1.10.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vitest":"^3.1.1","fast-glob":"^3.3.3","typescript":"^5.8.2","@types/node":"^22.19.17","gray-matter":"^4.0.3","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.1.0_1777668081649_0.6844009462429708","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@formio/mcp","version":"0.2.0","license":"MIT","_id":"@formio/mcp@0.2.0","maintainers":[{"name":"edwinanciani","email":"edwinanciani@gmail.com"},{"name":"travist","email":"travis@form.io"},{"name":"lane-formio","email":"lane@form.io"},{"name":"tanyagashtold","email":"tanya@form.io"},{"name":"alexeynikipelau","email":"alexey.nikipelau@form.io"},{"name":"brendanbond","email":"brendanbond@gmail.com"},{"name":"johnformio","email":"johnt@form.io"}],"homepage":"https://github.com/formio/ai#readme","bugs":{"url":"https://github.com/formio/ai/issues"},"bin":{"formio-mcp":"dist/stdio.js"},"dist":{"shasum":"0ff1a8d8ddfcd2a0360a8238102e5dda4935923d","tarball":"https://registry.npmjs.org/@formio/mcp/-/mcp-0.2.0.tgz","fileCount":84,"integrity":"sha512-zPlBSkKKZjdijl271C8HUUPFJYHfBoG2fdH25okJ7tS/5DtDOoseFh8Ys0NRVoB3gE9hbvOAkRoHQkKrGen6Lw==","signatures":[{"sig":"MEYCIQDEP7bIu2SnfU2wTe65lpaRNWGBXEN+SW6HCoilhiJo4QIhAPhjbR5CBFWdn48DCy5v8LhlowGfQkba7lIbg35Iwcsj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98610},"main":"./dist/server.js","type":"module","_from":"file:formio-mcp-0.2.0.tgz","types":"./dist/server.d.ts","engines":{"node":">=20"},"scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src && tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist coverage","start":"node dist/index.js","build:dev":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"lane-formio","email":"lane@form.io"},"_resolved":"/tmp/5c8c22c98061e1dbaab142016cabc9a2/formio-mcp-0.2.0.tgz","_integrity":"sha512-zPlBSkKKZjdijl271C8HUUPFJYHfBoG2fdH25okJ7tS/5DtDOoseFh8Ys0NRVoB3gE9hbvOAkRoHQkKrGen6Lw==","repository":{"url":"git+https://github.com/formio/ai.git","type":"git","directory":"packages/mcp-server"},"_npmVersion":"10.9.8","description":"Form.io MCP Server","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.3.6","express":"^4.21.2","@modelcontextprotocol/sdk":"^1.10.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vitest":"^3.1.1","fast-glob":"^3.3.3","typescript":"^5.8.2","@types/node":"^22.19.17","gray-matter":"^4.0.3","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.0_1780082492461_0.28912982113783925","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@formio/mcp","version":"0.3.0","license":"MIT","_id":"@formio/mcp@0.3.0","maintainers":[{"name":"edwinanciani","email":"edwinanciani@gmail.com"},{"name":"travist","email":"travis@form.io"},{"name":"lane-formio","email":"lane@form.io"},{"name":"tanyagashtold","email":"tanya@form.io"},{"name":"alexeynikipelau","email":"alexey.nikipelau@form.io"},{"name":"brendanbond","email":"brendanbond@gmail.com"},{"name":"johnformio","email":"johnt@form.io"}],"homepage":"https://github.com/formio/ai#readme","bugs":{"url":"https://github.com/formio/ai/issues"},"bin":{"formio-mcp":"dist/stdio.js"},"dist":{"shasum":"90ff9dc016c4b3569cbd78a50c3e08bb1ee6c30f","tarball":"https://registry.npmjs.org/@formio/mcp/-/mcp-0.3.0.tgz","fileCount":84,"integrity":"sha512-cw+1oycnM5gZ85uFTQuByk6AYBosDoGA7cBNkD6aMB1dL3DvUt9njXvaELn7i6SmousJQCk8oDQMOpXrIfG/bg==","signatures":[{"sig":"MEQCICLSYoA5q92UtI45dnLfHI+4DvMffFzMyNczusc0ncfSAiB+nd2pwLLrr4niamZv+OX2Co66i9IDT6UGDfAJQeExhA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99085},"main":"./dist/server.js","type":"module","_from":"file:formio-mcp-0.3.0.tgz","types":"./dist/server.d.ts","engines":{"node":">=20"},"scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src && tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist coverage","start":"node dist/index.js","build:dev":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"lane-formio","email":"lane@form.io"},"_resolved":"/tmp/253c46cf56bfa6b79a60e66a32fcc20c/formio-mcp-0.3.0.tgz","_integrity":"sha512-cw+1oycnM5gZ85uFTQuByk6AYBosDoGA7cBNkD6aMB1dL3DvUt9njXvaELn7i6SmousJQCk8oDQMOpXrIfG/bg==","repository":{"url":"git+https://github.com/formio/ai.git","type":"git","directory":"packages/mcp-server"},"_npmVersion":"10.9.8","description":"Form.io MCP Server","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.3.6","express":"^4.21.2","@modelcontextprotocol/sdk":"^1.10.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vitest":"^3.1.1","fast-glob":"^3.3.3","typescript":"^5.8.2","@types/node":"^22.19.17","gray-matter":"^4.0.3","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.3.0_1780403405866_0.32394477749861084","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@formio/mcp","version":"0.4.0","license":"MIT","_id":"@formio/mcp@0.4.0","maintainers":[{"name":"edwinanciani","email":"edwinanciani@gmail.com"},{"name":"travist","email":"travis@form.io"},{"name":"lane-formio","email":"lane@form.io"},{"name":"tanyagashtold","email":"tanya@form.io"},{"name":"alexeynikipelau","email":"alexey.nikipelau@form.io"},{"name":"brendanbond","email":"brendanbond@gmail.com"},{"name":"johnformio","email":"johnt@form.io"}],"homepage":"https://github.com/formio/ai#readme","bugs":{"url":"https://github.com/formio/ai/issues"},"bin":{"formio-mcp":"dist/stdio.js"},"dist":{"shasum":"566618b11b652540349c3f3af97e4b0a4fff3b7b","tarball":"https://registry.npmjs.org/@formio/mcp/-/mcp-0.4.0.tgz","fileCount":84,"integrity":"sha512-GlyirLxhuvh6GLtUW+W2V5HFQaZ1I1qZuzcDAx65KxFG5Xoy0cbgtL4OZWHtnewrpb7eIPLfxIGzFs5TN+URIw==","signatures":[{"sig":"MEUCIDPdzbugwL8lxNWxrPBuoSXeNP32b1n12dobi+lqnb0oAiEAkgoiBOuMPHNqzRvtLsX75Tt388HXm0IpqF2eH9PylqE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99085},"main":"./dist/server.js","type":"module","_from":"file:formio-mcp-0.4.0.tgz","types":"./dist/server.d.ts","engines":{"node":">=20"},"scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src && tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist coverage","start":"node dist/index.js","build:dev":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"lane-formio","email":"lane@form.io"},"_resolved":"/tmp/8cdddcbe5f7e9fb5fb737452db64afd4/formio-mcp-0.4.0.tgz","_integrity":"sha512-GlyirLxhuvh6GLtUW+W2V5HFQaZ1I1qZuzcDAx65KxFG5Xoy0cbgtL4OZWHtnewrpb7eIPLfxIGzFs5TN+URIw==","repository":{"url":"git+https://github.com/formio/ai.git","type":"git","directory":"packages/mcp-server"},"_npmVersion":"10.9.8","description":"Form.io MCP Server","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.3.6","express":"^4.21.2","@modelcontextprotocol/sdk":"^1.10.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vitest":"^3.1.1","fast-glob":"^3.3.3","typescript":"^5.8.2","@types/node":"^22.19.17","gray-matter":"^4.0.3","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.4.0_1780417244174_0.18258548226415905","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@formio/mcp","version":"0.4.1","license":"MIT","_id":"@formio/mcp@0.4.1","maintainers":[{"name":"edwinanciani","email":"edwinanciani@gmail.com"},{"name":"travist","email":"travis@form.io"},{"name":"lane-formio","email":"lane@form.io"},{"name":"tanyagashtold","email":"tanya@form.io"},{"name":"alexeynikipelau","email":"alexey.nikipelau@form.io"},{"name":"brendanbond","email":"brendanbond@gmail.com"},{"name":"johnformio","email":"johnt@form.io"}],"homepage":"https://github.com/formio/ai#readme","bugs":{"url":"https://github.com/formio/ai/issues"},"bin":{"formio-mcp":"dist/stdio.js"},"dist":{"shasum":"126079d3efe99c5b5aa4d5876b7fe4ebb9aa55a7","tarball":"https://registry.npmjs.org/@formio/mcp/-/mcp-0.4.1.tgz","fileCount":86,"integrity":"sha512-HjDTGF6wwXtUJfKbZTRlpS3Vb9EfIlZZ2JtvtVqJcoSXfRGvhq/59no8y8kvXYMniLit7NqoMxMQ9An3o5fsSQ==","signatures":[{"sig":"MEUCIQCODFryDUmF4uEPZ6MTE969EfpwO8OqsnrNWKL+M3qrlgIgbPUtEL22QCGetR8+q+Wxf3aI8dOtiYInIS7FT6TjVSE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103203},"main":"./dist/server.js","type":"module","_from":"file:formio-mcp-0.4.1.tgz","types":"./dist/server.d.ts","engines":{"node":">=20"},"scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src && tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist coverage","start":"node dist/index.js","build:dev":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"lane-formio","email":"lane@form.io"},"_resolved":"/tmp/97626befb4e09f749e6ca1142a923867/formio-mcp-0.4.1.tgz","_integrity":"sha512-HjDTGF6wwXtUJfKbZTRlpS3Vb9EfIlZZ2JtvtVqJcoSXfRGvhq/59no8y8kvXYMniLit7NqoMxMQ9An3o5fsSQ==","repository":{"url":"git+https://github.com/formio/ai.git","type":"git","directory":"packages/mcp-server"},"_npmVersion":"10.9.8","description":"Form.io MCP Server","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.3.6","express":"^4.21.2","@modelcontextprotocol/sdk":"^1.10.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vitest":"^3.1.1","fast-glob":"^3.3.3","typescript":"^5.8.2","@types/node":"^22.19.17","gray-matter":"^4.0.3","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.4.1_1782240531512_0.41338714552676725","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@formio/mcp","version":"0.5.0","keywords":["formio","form.io","mcp","model-context-protocol","mcp-server","forms","claude","ai","agent"],"license":"MIT","_id":"@formio/mcp@0.5.0","maintainers":[{"name":"edwinanciani","email":"edwinanciani@gmail.com"},{"name":"travist","email":"travis@form.io"},{"name":"lane-formio","email":"lane@form.io"},{"name":"tanyagashtold","email":"tanya@form.io"},{"name":"alexeynikipelau","email":"alexey.nikipelau@form.io"},{"name":"brendanbond","email":"brendanbond@gmail.com"},{"name":"johnformio","email":"johnt@form.io"}],"homepage":"https://github.com/formio/ai#readme","bugs":{"url":"https://github.com/formio/ai/issues"},"bin":{"formio-mcp":"dist/stdio.js"},"dist":{"shasum":"d4436643cbdb0d53e72c6fbe1f8d4f515c8ac712","tarball":"https://registry.npmjs.org/@formio/mcp/-/mcp-0.5.0.tgz","fileCount":86,"integrity":"sha512-GQgs/IQKzbXqj5XIWV7oW86OiokR+pG/wwDiF4mJ73zMGEImk9ysyjGn0YxC+zDpZeOqrAjkpKc+xTfwQ2oLHg==","signatures":[{"sig":"MEYCIQD/cgpql9onkssJgnP6O76q2MWgB7IIsMZ7G9taO3PO2QIhAIBYX5azWEEb1qJjVKl6/GRxjkSFfS78EH17j7x1YBG6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103361},"main":"./dist/server.js","type":"module","_from":"file:formio-mcp-0.5.0.tgz","types":"./dist/server.d.ts","engines":{"node":">=20"},"scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src && tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist coverage","start":"node dist/index.js","build:dev":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"lane-formio","email":"lane@form.io"},"_resolved":"/tmp/578c590e0814f4ea25a6da5cf595088e/formio-mcp-0.5.0.tgz","_integrity":"sha512-GQgs/IQKzbXqj5XIWV7oW86OiokR+pG/wwDiF4mJ73zMGEImk9ysyjGn0YxC+zDpZeOqrAjkpKc+xTfwQ2oLHg==","repository":{"url":"git+https://github.com/formio/ai.git","type":"git","directory":"packages/mcp-server"},"_npmVersion":"10.9.8","description":"Form.io MCP Server","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.3.6","express":"^4.21.2","@modelcontextprotocol/sdk":"^1.10.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vitest":"^3.1.1","fast-glob":"^3.3.3","typescript":"^5.8.2","@types/node":"^22.19.17","gray-matter":"^4.0.3","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.5.0_1784743325573_0.794799689578662","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@formio/mcp","version":"0.5.1","keywords":["formio","form.io","mcp","model-context-protocol","mcp-server","forms","claude","ai","agent"],"license":"MIT","_id":"@formio/mcp@0.5.1","maintainers":[{"name":"edwinanciani","email":"edwinanciani@gmail.com"},{"name":"travist","email":"travis@form.io"},{"name":"lane-formio","email":"lane@form.io"},{"name":"tanyagashtold","email":"tanya@form.io"},{"name":"alexeynikipelau","email":"alexey.nikipelau@form.io"},{"name":"brendanbond","email":"brendanbond@gmail.com"},{"name":"johnformio","email":"johnt@form.io"}],"homepage":"https://github.com/formio/ai#readme","bugs":{"url":"https://github.com/formio/ai/issues"},"bin":{"formio-mcp":"dist/stdio.js"},"dist":{"shasum":"6452186ca0f11cceeb97fa67d2b944877443984a","tarball":"https://registry.npmjs.org/@formio/mcp/-/mcp-0.5.1.tgz","fileCount":86,"integrity":"sha512-Tx9pWwnMS8nhzRNnNsG6U0O3CVcoUzWX9qJxJQw/+1k/l5v/GIChCJXA1B8N/b3s4tPuiWWH1N3yPAd2u0NVgA==","signatures":[{"sig":"MEUCIQDsBJ9GcYrc6fBCHOK3NDR75wTCvNZGWWHpASfQKbeo4AIgZZKyvM52Lw0PKO4hEBy183O3a01QFGuRbsI8naIVaVY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@formio%2fmcp@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":103396},"main":"./dist/server.js","type":"module","_from":"file:formio-mcp-0.5.1.tgz","types":"./dist/server.d.ts","engines":{"node":">=20"},"mcpName":"io.form/formio-mcp","scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src && tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist coverage","start":"node dist/index.js","build:dev":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e795c241-21c6-46a0-ac0d-a4060e4b1801"}},"_resolved":"/tmp/b7d20bb00534b7052241db6c7323438e/formio-mcp-0.5.1.tgz","_integrity":"sha512-Tx9pWwnMS8nhzRNnNsG6U0O3CVcoUzWX9qJxJQw/+1k/l5v/GIChCJXA1B8N/b3s4tPuiWWH1N3yPAd2u0NVgA==","repository":{"url":"git+https://github.com/formio/ai.git","type":"git","directory":"packages/mcp-server"},"_npmVersion":"12.0.1","description":"Form.io MCP Server","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.3.6","express":"^4.21.2","@modelcontextprotocol/sdk":"^1.10.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vitest":"^3.1.1","fast-glob":"^3.3.3","typescript":"^5.8.2","@types/node":"^22.19.17","gray-matter":"^4.0.3","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.5.1_1785283560166_0.9186362179324197","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@formio/mcp","version":"0.6.0","keywords":["formio","form.io","mcp","model-context-protocol","mcp-server","forms","claude","ai","agent"],"license":"MIT","_id":"@formio/mcp@0.6.0","maintainers":[{"name":"edwinanciani","email":"edwinanciani@gmail.com"},{"name":"travist","email":"travis@form.io"},{"name":"lane-formio","email":"lane@form.io"},{"name":"tanyagashtold","email":"tanya@form.io"},{"name":"alexeynikipelau","email":"alexey.nikipelau@form.io"},{"name":"brendanbond","email":"brendanbond@gmail.com"},{"name":"johnformio","email":"johnt@form.io"}],"homepage":"https://github.com/formio/ai#readme","bugs":{"url":"https://github.com/formio/ai/issues"},"bin":{"formio-mcp":"dist/stdio.js"},"dist":{"shasum":"e94a8b319eee7b3a71734c996eaf4cf645452c0d","tarball":"https://registry.npmjs.org/@formio/mcp/-/mcp-0.6.0.tgz","fileCount":86,"integrity":"sha512-/OHmuJnK2C2jm/V2Z0LI3zug8ebU7v8V0o55c68dUgP1PW7Vg2YPmk7P81hoeB9w3XmFiipMRq9aDWRgl0H4TA==","signatures":[{"sig":"MEQCIAq8kXfA4wddjXhMFHJ4xtxft1L8blbLtOBjOyeDn/rAAiBn2rHKgZZ6B4E0FXmg0dbTHROY6B9ffOohmek8LmwJ3g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@formio%2fmcp@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":112679},"main":"./dist/server.js","type":"module","_from":"file:formio-mcp-0.6.0.tgz","types":"./dist/server.d.ts","engines":{"node":">=20"},"mcpName":"io.form/formio-mcp","scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src && tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist coverage","start":"node dist/index.js","build:dev":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e795c241-21c6-46a0-ac0d-a4060e4b1801"}},"_resolved":"/tmp/5e6d9aa5e18269bde800b5d1798d59c0/formio-mcp-0.6.0.tgz","_integrity":"sha512-/OHmuJnK2C2jm/V2Z0LI3zug8ebU7v8V0o55c68dUgP1PW7Vg2YPmk7P81hoeB9w3XmFiipMRq9aDWRgl0H4TA==","repository":{"url":"git+https://github.com/formio/ai.git","type":"git","directory":"packages/mcp-server"},"_npmVersion":"12.0.1","description":"Form.io MCP Server","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.3.6","express":"^4.21.2","@modelcontextprotocol/sdk":"^1.10.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vitest":"^3.1.1","fast-glob":"^3.3.3","typescript":"^5.8.2","@types/node":"^22.19.17","gray-matter":"^4.0.3","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.6.0_1785352666309_0.009539118171742134","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@formio/mcp","version":"0.7.0","keywords":["formio","form.io","mcp","model-context-protocol","mcp-server","forms","claude","ai","agent"],"license":"MIT","_id":"@formio/mcp@0.7.0","maintainers":[{"name":"edwinanciani","email":"edwinanciani@gmail.com"},{"name":"travist","email":"travis@form.io"},{"name":"lane-formio","email":"lane@form.io"},{"name":"tanyagashtold","email":"tanya@form.io"},{"name":"alexeynikipelau","email":"alexey.nikipelau@form.io"},{"name":"brendanbond","email":"brendanbond@gmail.com"},{"name":"johnformio","email":"johnt@form.io"}],"homepage":"https://github.com/formio/ai#readme","bugs":{"url":"https://github.com/formio/ai/issues"},"bin":{"formio-mcp":"dist/stdio.js"},"dist":{"shasum":"8f984fde790047e00a8d2cc6c1e27d33cc885c4f","tarball":"https://registry.npmjs.org/@formio/mcp/-/mcp-0.7.0.tgz","fileCount":86,"integrity":"sha512-8bN64JF87FZCP49juzJ0IhmrMQC9ZhKU77wiYUFo4B1KaVvNNgZKL20zgPDoOKX9Dw6CaLaKXd+SShwmBdBe7w==","signatures":[{"sig":"MEUCICsopetpdD8T7A+iqzRJSExS9+qzRjPhHV+1WIrYnWYiAiEApd2g2PR5ugXDQQ4ZdqG2EHlNlyVnvejFSfJXwUyKdI4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@formio%2fmcp@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":114153},"main":"./dist/server.js","type":"module","_from":"file:formio-mcp-0.7.0.tgz","types":"./dist/server.d.ts","engines":{"node":">=20"},"mcpName":"io.form/formio-mcp","scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src && tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist coverage","start":"node dist/index.js","build:dev":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e795c241-21c6-46a0-ac0d-a4060e4b1801"}},"_resolved":"/tmp/64e0a6b493845d0b0616176ddc19f6b7/formio-mcp-0.7.0.tgz","_integrity":"sha512-8bN64JF87FZCP49juzJ0IhmrMQC9ZhKU77wiYUFo4B1KaVvNNgZKL20zgPDoOKX9Dw6CaLaKXd+SShwmBdBe7w==","repository":{"url":"git+https://github.com/formio/ai.git","type":"git","directory":"packages/mcp-server"},"_npmVersion":"12.0.1","description":"Form.io MCP Server","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.3.6","express":"^4.21.2","@modelcontextprotocol/sdk":"^1.10.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vitest":"^3.1.1","fast-glob":"^3.3.3","typescript":"^5.8.2","@types/node":"^22.19.17","gray-matter":"^4.0.3","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.7.0_1785358017815_0.42435553913477775","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@formio/mcp","version":"0.8.0","keywords":["formio","form.io","mcp","model-context-protocol","mcp-server","forms","claude","ai","agent"],"license":"MIT","_id":"@formio/mcp@0.8.0","maintainers":[{"name":"edwinanciani","email":"edwinanciani@gmail.com"},{"name":"travist","email":"travis@form.io"},{"name":"lane-formio","email":"lane@form.io"},{"name":"tanyagashtold","email":"tanya@form.io"},{"name":"alexeynikipelau","email":"alexey.nikipelau@form.io"},{"name":"brendanbond","email":"brendanbond@gmail.com"},{"name":"johnformio","email":"johnt@form.io"}],"homepage":"https://github.com/formio/ai#readme","bugs":{"url":"https://github.com/formio/ai/issues"},"bin":{"formio-mcp":"dist/stdio.js"},"dist":{"shasum":"5dcf9c0aa1e300a88f621a9d358af90f9dc3a3b2","tarball":"https://registry.npmjs.org/@formio/mcp/-/mcp-0.8.0.tgz","fileCount":90,"integrity":"sha512-e9cqqXV1mXCAUIfI7gGYrd0d/Kh4Sev5Cr0qYrtpUp7D5isEnaD3YBlIbA7PBajJM+Pt2Kaf/jmpDHBsjUyCUQ==","signatures":[{"sig":"MEQCIAs1zy1RgXjopAoJZSluFBgm70Htb5XkXBZjNdlng/3gAiBJ2xoIgA4c3CISMUAjtJSTSMIpRk/Fe/WxCC/haFsOaQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@formio%2fmcp@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":151084},"main":"./dist/server.js","type":"module","_from":"file:formio-mcp-0.8.0.tgz","types":"./dist/server.d.ts","engines":{"node":">=20"},"mcpName":"io.form/formio-mcp","scripts":{"dev":"tsx watch src/stdio.ts","lint":"eslint src && tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist coverage","start":"node dist/stdio.js","build:dev":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e795c241-21c6-46a0-ac0d-a4060e4b1801"}},"_resolved":"/tmp/c5f2fe4f397736fe20774697c214c35c/formio-mcp-0.8.0.tgz","_integrity":"sha512-e9cqqXV1mXCAUIfI7gGYrd0d/Kh4Sev5Cr0qYrtpUp7D5isEnaD3YBlIbA7PBajJM+Pt2Kaf/jmpDHBsjUyCUQ==","repository":{"url":"git+https://github.com/formio/ai.git","type":"git","directory":"packages/mcp-server"},"_npmVersion":"12.0.2","description":"Form.io MCP Server","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.3.6","express":"^4.21.2","@modelcontextprotocol/sdk":"^1.10.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vitest":"^3.1.1","fast-glob":"^3.3.3","typescript":"^5.8.2","@types/node":"^22.19.17","gray-matter":"^4.0.3","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.8.0_1785855223220_0.360535683016904","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"@formio/mcp","version":"0.8.1","keywords":["formio","form.io","mcp","model-context-protocol","mcp-server","forms","claude","ai","agent"],"license":"MIT","_id":"@formio/mcp@0.8.1","maintainers":[{"name":"edwinanciani","email":"edwinanciani@gmail.com"},{"name":"travist","email":"travis@form.io"},{"name":"lane-formio","email":"lane@form.io"},{"name":"tanyagashtold","email":"tanya@form.io"},{"name":"alexeynikipelau","email":"alexey.nikipelau@form.io"},{"name":"brendanbond","email":"brendanbond@gmail.com"},{"name":"johnformio","email":"johnt@form.io"}],"homepage":"https://github.com/formio/ai#readme","bugs":{"url":"https://github.com/formio/ai/issues"},"bin":{"formio-mcp":"dist/stdio.js"},"dist":{"shasum":"07bb39c407b919c3c256789db01e508f642c5b10","tarball":"https://registry.npmjs.org/@formio/mcp/-/mcp-0.8.1.tgz","fileCount":90,"integrity":"sha512-6kFphHSJwzKR727mCi0zTAfS9G3coGKrzYfF+qqff+iNmqmljSwkg+9lT6Nm8DMC3f6NNnb+O/6TQOTqL7/Bnw==","signatures":[{"sig":"MEQCIAS+5du0F6Yl9i4dngJLByHrfMjKmdeVqjbLsuupa+OiAiBAOJ1ce7gGDa0MuDIrpPtGWL7D1x8iFttqh09cishaXA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@formio%2fmcp@0.8.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":151084},"main":"./dist/server.js","type":"module","_from":"file:formio-mcp-0.8.1.tgz","types":"./dist/server.d.ts","engines":{"node":">=20"},"mcpName":"io.form/formio-mcp","scripts":{"dev":"tsx watch src/stdio.ts","lint":"eslint src && tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist coverage","start":"node dist/stdio.js","build:dev":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e795c241-21c6-46a0-ac0d-a4060e4b1801"}},"_resolved":"/tmp/d1256ab8b5ac69e05fcdb0ddba3bb599/formio-mcp-0.8.1.tgz","_integrity":"sha512-6kFphHSJwzKR727mCi0zTAfS9G3coGKrzYfF+qqff+iNmqmljSwkg+9lT6Nm8DMC3f6NNnb+O/6TQOTqL7/Bnw==","repository":{"url":"git+https://github.com/formio/ai.git","type":"git","directory":"packages/mcp-server"},"_npmVersion":"12.0.2","description":"Form.io MCP Server","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.3.6","express":"^4.21.2","@modelcontextprotocol/sdk":"^1.10.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vitest":"^3.1.1","fast-glob":"^3.3.3","typescript":"^5.8.2","@types/node":"^22.19.17","gray-matter":"^4.0.3","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.8.1_1785856897138_0.21890917345396965","host":"s3://npm-registry-packages-npm-production"}},"0.8.2":{"name":"@formio/mcp","version":"0.8.2","keywords":["formio","form.io","mcp","model-context-protocol","mcp-server","forms","claude","ai","agent"],"license":"MIT","_id":"@formio/mcp@0.8.2","maintainers":[{"name":"edwinanciani","email":"edwinanciani@gmail.com"},{"name":"travist","email":"travis@form.io"},{"name":"lane-formio","email":"lane@form.io"},{"name":"tanyagashtold","email":"tanya@form.io"},{"name":"alexeynikipelau","email":"alexey.nikipelau@form.io"},{"name":"brendanbond","email":"brendanbond@gmail.com"},{"name":"johnformio","email":"johnt@form.io"}],"homepage":"https://github.com/formio/ai#readme","bugs":{"url":"https://github.com/formio/ai/issues"},"bin":{"formio-mcp":"dist/stdio.js"},"dist":{"shasum":"01c60b0c48d32d21cadec78cb1135050aa1450b9","tarball":"https://registry.npmjs.org/@formio/mcp/-/mcp-0.8.2.tgz","fileCount":90,"integrity":"sha512-+a/HwT3iq8GcqjUEx8qhAEslR89MtDvQYLrpLlHfQ5TzASVVgh3Qvd/8TIEmo6LygstHu6TRackJe37rZRJozQ==","signatures":[{"sig":"MEYCIQDzssBD9geS4FWoUbaJsUndBzVIFFoI0PKCS2p6FOwlRgIhALlnQuTUMrJbDKZX7x4+u5dzWzTxwn+Zm/iSk5a6gIIE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@formio%2fmcp@0.8.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":151084},"main":"./dist/server.js","type":"module","_from":"file:formio-mcp-0.8.2.tgz","types":"./dist/server.d.ts","engines":{"node":">=20"},"mcpName":"io.form/formio-mcp","scripts":{"dev":"tsx watch src/stdio.ts","lint":"eslint src && tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist coverage","start":"node dist/stdio.js","build:dev":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e795c241-21c6-46a0-ac0d-a4060e4b1801"}},"_resolved":"/tmp/30f5a0e5e715e3e213e5f2d23407eb43/formio-mcp-0.8.2.tgz","_integrity":"sha512-+a/HwT3iq8GcqjUEx8qhAEslR89MtDvQYLrpLlHfQ5TzASVVgh3Qvd/8TIEmo6LygstHu6TRackJe37rZRJozQ==","repository":{"url":"git+https://github.com/formio/ai.git","type":"git","directory":"packages/mcp-server"},"_npmVersion":"12.0.2","description":"Form.io MCP Server","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.3.6","express":"^4.21.2","@modelcontextprotocol/sdk":"^1.10.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vitest":"^3.1.1","fast-glob":"^3.3.3","typescript":"^5.8.2","@types/node":"^22.19.17","gray-matter":"^4.0.3","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.8.2_1785857807848_0.34734469935980306","host":"s3://npm-registry-packages-npm-production"}},"0.8.3":{"name":"@formio/mcp","version":"0.8.3","keywords":["formio","form.io","mcp","model-context-protocol","mcp-server","forms","claude","ai","agent"],"license":"MIT","_id":"@formio/mcp@0.8.3","maintainers":[{"name":"edwinanciani","email":"edwinanciani@gmail.com"},{"name":"travist","email":"travis@form.io"},{"name":"lane-formio","email":"lane@form.io"},{"name":"tanyagashtold","email":"tanya@form.io"},{"name":"alexeynikipelau","email":"alexey.nikipelau@form.io"},{"name":"brendanbond","email":"brendanbond@gmail.com"},{"name":"johnformio","email":"johnt@form.io"}],"homepage":"https://github.com/formio/ai#readme","bugs":{"url":"https://github.com/formio/ai/issues"},"bin":{"formio-mcp":"dist/stdio.js"},"dist":{"shasum":"b5083bdecb2232d1b6078d5e6e8099552db643d3","tarball":"https://registry.npmjs.org/@formio/mcp/-/mcp-0.8.3.tgz","fileCount":90,"integrity":"sha512-FG9zD0UtWFIgFMUojxd8rgf3dRC1vpU18pbmiwxcXXzywbI3w6kTGjolc756sT9Y46M0FhUfA0Jqznybzeecrw==","signatures":[{"sig":"MEUCIQCfBL+vc2QoAxKlOE7BRkA/M3kNHM1hU3gTEVNlieVoXgIgLOtraI8fB/jjDKhzWXzP/h6Z9DpmPUwnu9TGC9t1EpE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@formio%2fmcp@0.8.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":151084},"main":"./dist/server.js","type":"module","_from":"file:formio-mcp-0.8.3.tgz","types":"./dist/server.d.ts","engines":{"node":">=20"},"mcpName":"io.form/formio-mcp","scripts":{"dev":"tsx watch src/stdio.ts","lint":"eslint src && tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist coverage","start":"node dist/stdio.js","build:dev":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e795c241-21c6-46a0-ac0d-a4060e4b1801"}},"_resolved":"/tmp/2003d10208c71d03bade65a4ecadc7e3/formio-mcp-0.8.3.tgz","_integrity":"sha512-FG9zD0UtWFIgFMUojxd8rgf3dRC1vpU18pbmiwxcXXzywbI3w6kTGjolc756sT9Y46M0FhUfA0Jqznybzeecrw==","repository":{"url":"git+https://github.com/formio/ai.git","type":"git","directory":"packages/mcp-server"},"_npmVersion":"12.0.2","description":"Form.io MCP Server","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.3.6","express":"^4.21.2","@modelcontextprotocol/sdk":"^1.10.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vitest":"^3.1.1","fast-glob":"^3.3.3","typescript":"^5.8.2","@types/node":"^22.19.17","gray-matter":"^4.0.3","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.8.3_1785859562403_0.3130348565096872","host":"s3://npm-registry-packages-npm-production"}},"0.8.4":{"name":"@formio/mcp","version":"0.8.4","keywords":["formio","form.io","mcp","model-context-protocol","mcp-server","forms","claude","ai","agent"],"license":"MIT","_id":"@formio/mcp@0.8.4","maintainers":[{"name":"edwinanciani","email":"edwinanciani@gmail.com"},{"name":"travist","email":"travis@form.io"},{"name":"lane-formio","email":"lane@form.io"},{"name":"tanyagashtold","email":"tanya@form.io"},{"name":"alexeynikipelau","email":"alexey.nikipelau@form.io"},{"name":"brendanbond","email":"brendanbond@gmail.com"},{"name":"johnformio","email":"johnt@form.io"}],"homepage":"https://github.com/formio/ai#readme","bugs":{"url":"https://github.com/formio/ai/issues"},"bin":{"formio-mcp":"dist/stdio.js"},"dist":{"shasum":"de4c3213d245768973281bba3cbc3edf91b430ce","tarball":"https://registry.npmjs.org/@formio/mcp/-/mcp-0.8.4.tgz","fileCount":90,"integrity":"sha512-eQkqyBjmAkQa9qrVGJCWwmfSYeOX5fOpqdOoHPS7HUHboYKMwTTzDd8OUdVq0FcZz3IACFc2ti4X2AkGtxlghQ==","signatures":[{"sig":"MEQCIDDVODBmtMHPu+WMYkAbethPq8pO73VlepaHwaNr/B+mAiBWGaVl6NWmSR82e+wxq4xbdx2WqNoVN4D2YkxYo9esHA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@formio%2fmcp@0.8.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":151485},"main":"./dist/server.js","type":"module","_from":"file:formio-mcp-0.8.4.tgz","types":"./dist/server.d.ts","engines":{"node":">=20"},"mcpName":"io.form/formio-mcp","scripts":{"dev":"tsx watch src/stdio.ts","lint":"eslint src && tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist coverage","start":"node dist/stdio.js","build:dev":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e795c241-21c6-46a0-ac0d-a4060e4b1801"}},"_resolved":"/tmp/0f21517aca45580893bf6c8999b05fd8/formio-mcp-0.8.4.tgz","_integrity":"sha512-eQkqyBjmAkQa9qrVGJCWwmfSYeOX5fOpqdOoHPS7HUHboYKMwTTzDd8OUdVq0FcZz3IACFc2ti4X2AkGtxlghQ==","repository":{"url":"git+https://github.com/formio/ai.git","type":"git","directory":"packages/mcp-server"},"_npmVersion":"12.0.2","description":"Form.io MCP Server","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.3.6","express":"^4.21.2","@modelcontextprotocol/sdk":"^1.10.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vitest":"^3.1.1","fast-glob":"^3.3.3","typescript":"^5.8.2","@types/node":"^22.19.17","gray-matter":"^4.0.3","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.8.4_1785938604677_0.15849121767929852","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@formio/mcp","version":"0.9.0","keywords":["formio","form.io","mcp","model-context-protocol","mcp-server","forms","claude","ai","agent"],"license":"MIT","_id":"@formio/mcp@0.9.0","maintainers":[{"name":"edwinanciani","email":"edwinanciani@gmail.com"},{"name":"travist","email":"travis@form.io"},{"name":"lane-formio","email":"lane@form.io"},{"name":"tanyagashtold","email":"tanya@form.io"},{"name":"alexeynikipelau","email":"alexey.nikipelau@form.io"},{"name":"brendanbond","email":"brendanbond@gmail.com"},{"name":"johnformio","email":"johnt@form.io"}],"homepage":"https://github.com/formio/ai#readme","bugs":{"url":"https://github.com/formio/ai/issues"},"bin":{"formio-mcp":"dist/stdio.js"},"dist":{"shasum":"214fff074c475f3bd44f5f19d70ec43d73078ee3","tarball":"https://registry.npmjs.org/@formio/mcp/-/mcp-0.9.0.tgz","fileCount":94,"integrity":"sha512-jDeRoihB8QwnGTeUWLMVxp/quyCE1diT+9JXAR06fWMs+Kel7gRgSNdLJf3HY+/kbkMZTFmEiw+i0iJ/m7zA6Q==","signatures":[{"sig":"MEQCIDuVvjSt0xTbV/I6D/PFkZHF5Dv+wpm83dfd5xWERo1gAiBpV+ZGN8xODKLeb1MhbqegMwQBSe4nGANj8D6RT/44+w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@formio%2fmcp@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":196263},"main":"./dist/server.js","type":"module","_from":"file:formio-mcp-0.9.0.tgz","types":"./dist/server.d.ts","engines":{"node":">=20"},"mcpName":"io.form/formio-mcp","scripts":{"dev":"tsx watch src/stdio.ts","lint":"eslint src && tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist coverage","start":"node dist/stdio.js","build:dev":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e795c241-21c6-46a0-ac0d-a4060e4b1801"}},"_resolved":"/tmp/03949d51e6456692bb4ada28f0b0958d/formio-mcp-0.9.0.tgz","_integrity":"sha512-jDeRoihB8QwnGTeUWLMVxp/quyCE1diT+9JXAR06fWMs+Kel7gRgSNdLJf3HY+/kbkMZTFmEiw+i0iJ/m7zA6Q==","repository":{"url":"git+https://github.com/formio/ai.git","type":"git","directory":"packages/mcp-server"},"_npmVersion":"12.0.2","description":"Form.io MCP Server","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.3.6","express":"^4.21.2","@modelcontextprotocol/sdk":"^1.10.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vitest":"^3.1.1","fast-glob":"^3.3.3","typescript":"^5.8.2","@types/node":"^22.19.17","gray-matter":"^4.0.3","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.9.0_1786992984713_0.05795736248132366","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@formio/mcp","version":"0.10.0","keywords":["formio","form.io","mcp","model-context-protocol","mcp-server","forms","claude","ai","agent"],"license":"MIT","_id":"@formio/mcp@0.10.0","maintainers":[{"name":"edwinanciani","email":"edwinanciani@gmail.com"},{"name":"travist","email":"travis@form.io"},{"name":"lane-formio","email":"lane@form.io"},{"name":"tanyagashtold","email":"tanya@form.io"},{"name":"alexeynikipelau","email":"alexey.nikipelau@form.io"},{"name":"brendanbond","email":"brendanbond@gmail.com"},{"name":"johnformio","email":"johnt@form.io"}],"homepage":"https://github.com/formio/ai#readme","bugs":{"url":"https://github.com/formio/ai/issues"},"bin":{"formio-mcp":"dist/stdio.js"},"dist":{"shasum":"81e2ab2c95b64c9ba9479dec40f50be4d2fb63c4","tarball":"https://registry.npmjs.org/@formio/mcp/-/mcp-0.10.0.tgz","fileCount":94,"integrity":"sha512-Fmb3kBUf2XZ1v9We5nlRX3M9e7HJKA18lnMbJ3MsFSentdk+fA5Q15ELyyKJOvFWdkSX3x/Fb5uP/g3pqtnBZA==","signatures":[{"sig":"MEUCIQDQRob8cm5rcaptImhStON6Bn+Gj+vj/tUXzRqnT57TDQIgHSDq7pBjhPloYmFeGTlzBummfY/tYIyz5Gih7SURjnU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@formio%2fmcp@0.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":200929},"main":"./dist/server.js","type":"module","_from":"file:formio-mcp-0.10.0.tgz","types":"./dist/server.d.ts","engines":{"node":">=20"},"mcpName":"io.form/formio-mcp","scripts":{"dev":"tsx watch src/stdio.ts","lint":"eslint src && tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist coverage","start":"node dist/stdio.js","build:dev":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e795c241-21c6-46a0-ac0d-a4060e4b1801"}},"_resolved":"/tmp/9cedc5325747109e1ec879c8884e21f9/formio-mcp-0.10.0.tgz","_integrity":"sha512-Fmb3kBUf2XZ1v9We5nlRX3M9e7HJKA18lnMbJ3MsFSentdk+fA5Q15ELyyKJOvFWdkSX3x/Fb5uP/g3pqtnBZA==","repository":{"url":"git+https://github.com/formio/ai.git","type":"git","directory":"packages/mcp-server"},"_npmVersion":"12.0.2","description":"Form.io MCP Server","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.3.6","express":"^4.21.2","@modelcontextprotocol/sdk":"^1.10.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vitest":"^3.1.1","fast-glob":"^3.3.3","typescript":"^5.8.2","@types/node":"^22.19.17","gray-matter":"^4.0.3","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.10.0_1787084209786_0.9450280210062676","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@formio/mcp","version":"0.11.0","keywords":["formio","form.io","mcp","model-context-protocol","mcp-server","forms","claude","ai","agent"],"license":"MIT","_id":"@formio/mcp@0.11.0","maintainers":[{"name":"edwinanciani","email":"edwinanciani@gmail.com"},{"name":"travist","email":"travis@form.io"},{"name":"lane-formio","email":"lane@form.io"},{"name":"tanyagashtold","email":"tanya@form.io"},{"name":"alexeynikipelau","email":"alexey.nikipelau@form.io"},{"name":"brendanbond","email":"brendanbond@gmail.com"},{"name":"johnformio","email":"johnt@form.io"}],"homepage":"https://github.com/formio/ai#readme","bugs":{"url":"https://github.com/formio/ai/issues"},"bin":{"formio-mcp":"dist/stdio.js"},"dist":{"shasum":"562d309e8bebc0c526ab3a5a699e1eb8741100bf","tarball":"https://registry.npmjs.org/@formio/mcp/-/mcp-0.11.0.tgz","fileCount":98,"integrity":"sha512-wBTZZmPkAAZQjRnaJpErPOm4OtaW54vlTcdNDlZbxcuqdH+ovdzLqqYNdZFwmvok1WtbJHwZdF7pLS5om3kJwA==","signatures":[{"sig":"MEUCIQDmPBkM2rigVzxyQ1Wxgee9IAU0VlJijFrthWzMfYWIbAIgQxyco8t2LcEKidaRP60p5WROXFT5j9qTL9P5nPnZigk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@formio%2fmcp@0.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":257540},"main":"./dist/server.js","type":"module","_from":"file:formio-mcp-0.11.0.tgz","types":"./dist/server.d.ts","engines":{"node":">=20"},"mcpName":"io.form/formio-mcp","scripts":{"dev":"tsx watch src/stdio.ts","lint":"eslint src && tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist coverage","start":"node dist/stdio.js","build:dev":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e795c241-21c6-46a0-ac0d-a4060e4b1801"}},"_resolved":"/tmp/6dd22ef3d482cccadcdcf2dec808f3f5/formio-mcp-0.11.0.tgz","_integrity":"sha512-wBTZZmPkAAZQjRnaJpErPOm4OtaW54vlTcdNDlZbxcuqdH+ovdzLqqYNdZFwmvok1WtbJHwZdF7pLS5om3kJwA==","repository":{"url":"git+https://github.com/formio/ai.git","type":"git","directory":"packages/mcp-server"},"_npmVersion":"12.0.2","description":"Form.io MCP Server","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.3.6","express":"^4.21.2","@modelcontextprotocol/sdk":"^1.10.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vitest":"^3.1.1","fast-glob":"^3.3.3","typescript":"^5.8.2","@types/node":"^22.19.17","gray-matter":"^4.0.3","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.11.0_1787314303495_0.8260063534475932","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"@formio/mcp","version":"0.12.0","keywords":["formio","form.io","mcp","model-context-protocol","mcp-server","forms","claude","ai","agent"],"license":"MIT","_id":"@formio/mcp@0.12.0","maintainers":[{"name":"edwinanciani","email":"edwinanciani@gmail.com"},{"name":"travist","email":"travis@form.io"},{"name":"lane-formio","email":"lane@form.io"},{"name":"tanyagashtold","email":"tanya@form.io"},{"name":"alexeynikipelau","email":"alexey.nikipelau@form.io"},{"name":"brendanbond","email":"brendanbond@gmail.com"},{"name":"johnformio","email":"johnt@form.io"}],"homepage":"https://github.com/formio/ai#readme","bugs":{"url":"https://github.com/formio/ai/issues"},"bin":{"formio-mcp":"dist/stdio.js"},"dist":{"shasum":"c4bcdea55ee7d25ba556d2496c9d300981e21985","tarball":"https://registry.npmjs.org/@formio/mcp/-/mcp-0.12.0.tgz","fileCount":110,"integrity":"sha512-2qQoT0ktX4oEl+ZHEm2Mcn81L7DiE9Od8+FIUL/4RR+0jRoaBhG+P3FxvNCqotALFgKRs6+btFayujRASBdPEg==","signatures":[{"sig":"MEUCIDMMyWNIQjljDmfAAg73WSmsjeX0TAuiC8CUI2ask7EGAiEA6BAfAqTWkpwD8rScL8ZPVuNujT8m7Q140LbzVstUOJc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@formio%2fmcp@0.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":367205},"main":"./dist/server.js","type":"module","_from":"file:formio-mcp-0.12.0.tgz","types":"./dist/server.d.ts","engines":{"node":">=20"},"mcpName":"io.form/formio-mcp","scripts":{"dev":"tsx watch src/stdio.ts","lint":"eslint src && tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist coverage","start":"node dist/stdio.js","build:dev":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e795c241-21c6-46a0-ac0d-a4060e4b1801"}},"_resolved":"/tmp/e45dac9aa9c011d1a110bf9e5578d4a8/formio-mcp-0.12.0.tgz","_integrity":"sha512-2qQoT0ktX4oEl+ZHEm2Mcn81L7DiE9Od8+FIUL/4RR+0jRoaBhG+P3FxvNCqotALFgKRs6+btFayujRASBdPEg==","repository":{"url":"git+https://github.com/formio/ai.git","type":"git","directory":"packages/mcp-server"},"_npmVersion":"12.0.2","description":"Form.io MCP Server","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.3.6","express":"^4.21.2","@modelcontextprotocol/sdk":"^1.10.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vitest":"^3.1.1","fast-glob":"^3.3.3","typescript":"^5.8.2","@types/node":"^22.19.17","gray-matter":"^4.0.3","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.12.0_1787935253591_0.7218083797026769","host":"s3://npm-registry-packages-npm-production"}},"0.12.1":{"name":"@formio/mcp","version":"0.12.1","keywords":["formio","form.io","mcp","model-context-protocol","mcp-server","forms","claude","ai","agent"],"license":"MIT","_id":"@formio/mcp@0.12.1","maintainers":[{"name":"edwinanciani","email":"edwinanciani@gmail.com"},{"name":"travist","email":"travis@form.io"},{"name":"lane-formio","email":"lane@form.io"},{"name":"tanyagashtold","email":"tanya@form.io"},{"name":"alexeynikipelau","email":"alexey.nikipelau@form.io"},{"name":"brendanbond","email":"brendanbond@gmail.com"},{"name":"johnformio","email":"johnt@form.io"}],"homepage":"https://github.com/formio/ai#readme","bugs":{"url":"https://github.com/formio/ai/issues"},"bin":{"formio-mcp":"dist/stdio.js"},"dist":{"shasum":"3597684d19c627631bfa776e1482700e700871e1","tarball":"https://registry.npmjs.org/@formio/mcp/-/mcp-0.12.1.tgz","fileCount":110,"integrity":"sha512-YHkHN7m4HapAOOl2LURUztGuTo5mNfbfnL/shjzyTNS9hPXuim5kDNhWY8KSIzBg0GoBJ5IusaAsqxqC2oIkmQ==","signatures":[{"sig":"MEUCIHTNZK4cXSJ4fzadbWs/fyQF9oCr6YTRoRnoRGlu3U57AiEAtjmQRly9PSOGOJjZDcnkKCHvARPBTWBf1kmQ6mAHO74=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@formio%2fmcp@0.12.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":370257},"main":"./dist/server.js","type":"module","_from":"file:formio-mcp-0.12.1.tgz","types":"./dist/server.d.ts","engines":{"node":">=20"},"mcpName":"io.form/formio-mcp","scripts":{"dev":"tsx watch src/stdio.ts","lint":"eslint src && tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist coverage","start":"node dist/stdio.js","build:dev":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e795c241-21c6-46a0-ac0d-a4060e4b1801"}},"_resolved":"/tmp/ea5826d376aacf51ee5b07d011194e9c/formio-mcp-0.12.1.tgz","_integrity":"sha512-YHkHN7m4HapAOOl2LURUztGuTo5mNfbfnL/shjzyTNS9hPXuim5kDNhWY8KSIzBg0GoBJ5IusaAsqxqC2oIkmQ==","repository":{"url":"git+https://github.com/formio/ai.git","type":"git","directory":"packages/mcp-server"},"_npmVersion":"12.0.2","description":"Form.io MCP Server","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.3.6","express":"^4.21.2","@modelcontextprotocol/sdk":"^1.10.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vitest":"^3.1.1","fast-glob":"^3.3.3","typescript":"^5.8.2","@types/node":"^22.19.17","gray-matter":"^4.0.3","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.12.1_1787937631737_0.09925910702427876","host":"s3://npm-registry-packages-npm-production"}},"0.12.2":{"name":"@formio/mcp","version":"0.12.2","keywords":["formio","form.io","mcp","model-context-protocol","mcp-server","forms","claude","ai","agent"],"license":"MIT","_id":"@formio/mcp@0.12.2","maintainers":[{"name":"edwinanciani","email":"edwinanciani@gmail.com"},{"name":"travist","email":"travis@form.io"},{"name":"lane-formio","email":"lane@form.io"},{"name":"tanyagashtold","email":"tanya@form.io"},{"name":"alexeynikipelau","email":"alexey.nikipelau@form.io"},{"name":"brendanbond","email":"brendanbond@gmail.com"},{"name":"johnformio","email":"johnt@form.io"}],"homepage":"https://github.com/formio/ai#readme","bugs":{"url":"https://github.com/formio/ai/issues"},"bin":{"formio-mcp":"dist/stdio.js"},"dist":{"shasum":"3b2b9b7d0717bcc60180440bb8acc30fc4c41878","tarball":"https://registry.npmjs.org/@formio/mcp/-/mcp-0.12.2.tgz","fileCount":110,"integrity":"sha512-4tJb0lMdZ+XO4ivJVpQxhXxr1lqerXyuWFTij5o7Rk9eqZAI3IzedfeJ4l2YSgRjh/M0Ypu7RVLUhu2yPuRsGg==","signatures":[{"sig":"MEYCIQDa2LVFO7CLn4wRqdIJfNXyQ+3KbAb67RoyYfYa8iFtiQIhAItGpssoAp18cYf/icekGT6wmcZxUbD7zKCZJNukVlZF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@formio%2fmcp@0.12.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":370507},"main":"./dist/server.js","type":"module","_from":"file:formio-mcp-0.12.2.tgz","types":"./dist/server.d.ts","engines":{"node":">=20"},"mcpName":"io.form/formio-mcp","scripts":{"dev":"tsx watch src/stdio.ts","lint":"eslint src && tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist coverage","start":"node dist/stdio.js","build:dev":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e795c241-21c6-46a0-ac0d-a4060e4b1801"}},"_resolved":"/tmp/567878d84f683844184ff638d18661e5/formio-mcp-0.12.2.tgz","_integrity":"sha512-4tJb0lMdZ+XO4ivJVpQxhXxr1lqerXyuWFTij5o7Rk9eqZAI3IzedfeJ4l2YSgRjh/M0Ypu7RVLUhu2yPuRsGg==","repository":{"url":"git+https://github.com/formio/ai.git","type":"git","directory":"packages/mcp-server"},"_npmVersion":"12.0.2","description":"Form.io MCP Server","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.3.6","express":"^4.21.2","@modelcontextprotocol/sdk":"^1.10.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vitest":"^3.1.1","fast-glob":"^3.3.3","typescript":"^5.8.2","@types/node":"^22.19.17","gray-matter":"^4.0.3","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.12.2_1788116240359_0.88635198420112","host":"s3://npm-registry-packages-npm-production"}},"0.12.3":{"name":"@formio/mcp","version":"0.12.3","keywords":["formio","form.io","mcp","model-context-protocol","mcp-server","forms","claude","ai","agent"],"license":"MIT","_id":"@formio/mcp@0.12.3","maintainers":[{"name":"edwinanciani","email":"edwinanciani@gmail.com"},{"name":"travist","email":"travis@form.io"},{"name":"lane-formio","email":"lane@form.io"},{"name":"tanyagashtold","email":"tanya@form.io"},{"name":"alexeynikipelau","email":"alexey.nikipelau@form.io"},{"name":"brendanbond","email":"brendanbond@gmail.com"},{"name":"johnformio","email":"johnt@form.io"}],"homepage":"https://github.com/formio/ai#readme","bugs":{"url":"https://github.com/formio/ai/issues"},"bin":{"formio-mcp":"dist/stdio.js"},"dist":{"shasum":"e396f1df967baa476f10dd843987630a71448461","tarball":"https://registry.npmjs.org/@formio/mcp/-/mcp-0.12.3.tgz","fileCount":110,"integrity":"sha512-CyZn83mDSCfI8WLvjKUWvicJS+VW4u/6DwZk2pIbh1RvnPQRPH9kZnNt9f4q1VHazD2+Z7cOV3/yIkjpwUPn2A==","signatures":[{"sig":"MEUCIFMQfmMyHZseiqdKCSQ3xHMvGPx1O7CLK039RcWaKXz3AiEA+eRs1tmNARHaVfkyDtD1wnFQYFLHCGC5VnFSOfH/9+k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@formio%2fmcp@0.12.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":370796},"main":"./dist/server.js","type":"module","_from":"file:formio-mcp-0.12.3.tgz","types":"./dist/server.d.ts","engines":{"node":">=20"},"mcpName":"io.form/formio-mcp","scripts":{"dev":"tsx watch src/stdio.ts","lint":"eslint src && tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist coverage","start":"node dist/stdio.js","build:dev":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e795c241-21c6-46a0-ac0d-a4060e4b1801"}},"_resolved":"/tmp/a20956931f7432aa160fc88b71fdb1a3/formio-mcp-0.12.3.tgz","_integrity":"sha512-CyZn83mDSCfI8WLvjKUWvicJS+VW4u/6DwZk2pIbh1RvnPQRPH9kZnNt9f4q1VHazD2+Z7cOV3/yIkjpwUPn2A==","repository":{"url":"git+https://github.com/formio/ai.git","type":"git","directory":"packages/mcp-server"},"_npmVersion":"12.0.2","description":"Form.io MCP Server","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.3.6","express":"^4.21.2","@modelcontextprotocol/sdk":"^1.10.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vitest":"^3.1.1","fast-glob":"^3.3.3","typescript":"^5.8.2","@types/node":"^22.19.17","gray-matter":"^4.0.3","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.12.3_1788180773696_0.7121083575152001","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"@formio/mcp","version":"0.13.0","keywords":["formio","form.io","mcp","model-context-protocol","mcp-server","forms","claude","ai","agent"],"license":"MIT","_id":"@formio/mcp@0.13.0","maintainers":[{"name":"edwinanciani","email":"edwinanciani@gmail.com"},{"name":"travist","email":"travis@form.io"},{"name":"lane-formio","email":"lane@form.io"},{"name":"tanyagashtold","email":"tanya@form.io"},{"name":"alexeynikipelau","email":"alexey.nikipelau@form.io"},{"name":"brendanbond","email":"brendanbond@gmail.com"},{"name":"johnformio","email":"johnt@form.io"}],"homepage":"https://github.com/formio/ai#readme","bugs":{"url":"https://github.com/formio/ai/issues"},"bin":{"formio-mcp":"dist/stdio.js"},"dist":{"shasum":"775e6a25fa59aa92e10bd8e56a164622cfd2f797","tarball":"https://registry.npmjs.org/@formio/mcp/-/mcp-0.13.0.tgz","fileCount":110,"integrity":"sha512-ltq4HhcPIN6JxjMDWnENwkPSG3GD1EzqYqlfQ2FWKpI8Q6uEww9rnEx7GzoMy4Q+DTGjfnILPrxx/T2hrOqVxQ==","signatures":[{"sig":"MEYCIQCcz2KzR8WqN7nVtr1O1uEuMP542KmUR3kjheGFXP1qowIhAM61BxHV27+0xBGEO4KF5iInnEtORvRq18k8a53asuB3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@formio%2fmcp@0.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":401963},"main":"./dist/server.js","type":"module","_from":"file:formio-mcp-0.13.0.tgz","types":"./dist/server.d.ts","engines":{"node":">=20"},"mcpName":"io.form/formio-mcp","scripts":{"dev":"tsx watch src/stdio.ts","lint":"eslint src && tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist coverage","start":"node dist/stdio.js","build:dev":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e795c241-21c6-46a0-ac0d-a4060e4b1801"}},"_resolved":"/tmp/ea1a7a3ab2279578fc3fb950f9377908/formio-mcp-0.13.0.tgz","_integrity":"sha512-ltq4HhcPIN6JxjMDWnENwkPSG3GD1EzqYqlfQ2FWKpI8Q6uEww9rnEx7GzoMy4Q+DTGjfnILPrxx/T2hrOqVxQ==","repository":{"url":"git+https://github.com/formio/ai.git","type":"git","directory":"packages/mcp-server"},"_npmVersion":"12.0.2","description":"Form.io MCP Server","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.3.6","express":"^4.21.2","@modelcontextprotocol/sdk":"^1.10.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vitest":"^3.1.1","fast-glob":"^3.3.3","typescript":"^5.8.2","@types/node":"^22.19.17","gray-matter":"^4.0.3","@types/express":"^4.17.21"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.13.0_1788957673241_0.7115228446060877","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"_id":"@formio/mcp@0.14.0","bin":{"formio-mcp":"dist/stdio.js"},"bugs":{"url":"https://github.com/formio/ai/issues"},"dist":{"shasum":"8caae7d2674743e88652a4fe22eef4984a0a137e","tarball":"https://registry.npmjs.org/@formio/mcp/-/mcp-0.14.0.tgz","fileCount":110,"integrity":"sha512-uiPkLjzlGEjfu7czwgbANCVqplcsaiBYf7kQrbeaU7uwq6qiPSNh0h8ngFEJejNVNtYIBeC3x84A45EGGXUaiw==","signatures":[{"sig":"MEUCIETYKGZo3MByPGbo9N9y+1SuBsEA/l3RzCi/yK3CAwfYAiEAgZPG62z3h16YRxWag2TPtiD5MY6mgsnoKMBZQDgQWh8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCEHXxdwWzRhre5SrH5oZDSY3eEs4vdpWcSUTJbOlkrLgIhAK5gBhQT50u7hv0xoPboy+PVQboW1YxI7qW6k8JouIeH"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@formio%2fmcp@0.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":403162},"main":"./dist/server.js","name":"@formio/mcp","type":"module","_from":"file:formio-mcp-0.14.0.tgz","types":"./dist/server.d.ts","engines":{"node":">=22.12"},"license":"MIT","mcpName":"io.form/formio-mcp","scripts":{"dev":"tsx watch src/stdio.ts","lint":"eslint src && tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist coverage","start":"node dist/stdio.js","build:dev":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest"},"version":"0.14.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"e795c241-21c6-46a0-ac0d-a4060e4b1801"}},"homepage":"https://github.com/formio/ai#readme","keywords":["formio","form.io","mcp","model-context-protocol","mcp-server","forms","claude","ai","agent"],"_resolved":"/tmp/13bfd226dd469c7da6fb373f35177ddc/formio-mcp-0.14.0.tgz","_integrity":"sha512-uiPkLjzlGEjfu7czwgbANCVqplcsaiBYf7kQrbeaU7uwq6qiPSNh0h8ngFEJejNVNtYIBeC3x84A45EGGXUaiw==","repository":{"url":"git+https://github.com/formio/ai.git","type":"git","directory":"packages/mcp-server"},"_npmVersion":"12.1.0","description":"Form.io MCP Server","directories":{},"maintainers":[{"name":"edwinanciani","email":"edwinanciani@gmail.com"},{"name":"travist","email":"travis@form.io"},{"name":"lane-formio","email":"lane@form.io"},{"name":"tanyagashtold","email":"tanya@form.io"},{"name":"alexeynikipelau","email":"alexey.nikipelau@form.io"},{"name":"brendanbond","email":"brendanbond@gmail.com"},{"name":"johnformio","email":"johnt@form.io"}],"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.6.5","express":"^5.2.1","@modelcontextprotocol/sdk":"^1.30.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.15","vite":"^8.3.1","vitest":"^5.0.2","fast-glob":"^3.3.3","typescript":"^6.0.3","@types/node":"^22.20.4","gray-matter":"^4.0.3","@types/express":"^5.0.6"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp_0.14.0_1790628445645_0.09777410952027843"}}},"time":{"created":"2026-05-01T20:41:21.459Z","modified":"2026-09-28T20:47:26.121Z","0.1.0":"2026-05-01T20:41:21.825Z","0.2.0":"2026-05-29T19:21:32.605Z","0.3.0":"2026-06-02T12:30:06.000Z","0.4.0":"2026-06-02T16:20:44.309Z","0.4.1":"2026-06-23T18:48:51.657Z","0.5.0":"2026-07-22T18:02:05.758Z","0.5.1":"2026-07-29T00:06:00.314Z","0.6.0":"2026-07-29T19:17:46.449Z","0.7.0":"2026-07-29T20:46:57.957Z","0.8.0":"2026-08-04T14:53:43.374Z","0.8.1":"2026-08-04T15:21:37.328Z","0.8.2":"2026-08-04T15:36:47.973Z","0.8.3":"2026-08-04T16:06:02.564Z","0.8.4":"2026-08-05T14:03:24.800Z","0.9.0":"2026-08-17T18:56:24.932Z","0.10.0":"2026-08-18T20:16:49.985Z","0.11.0":"2026-08-21T12:11:43.631Z","0.12.0":"2026-08-28T16:40:53.739Z","0.12.1":"2026-08-28T17:20:31.895Z","0.12.2":"2026-08-30T18:57:20.523Z","0.12.3":"2026-08-31T12:52:53.859Z","0.13.0":"2026-09-09T12:41:13.374Z","0.14.0":"2026-09-28T20:47:25.738Z"},"bugs":{"url":"https://github.com/formio/ai/issues"},"license":"MIT","homepage":"https://github.com/formio/ai#readme","keywords":["formio","form.io","mcp","model-context-protocol","mcp-server","forms","claude","ai","agent"],"repository":{"url":"git+https://github.com/formio/ai.git","type":"git","directory":"packages/mcp-server"},"description":"Form.io MCP Server","maintainers":[{"name":"edwinanciani","email":"edwinanciani@gmail.com"},{"name":"travist","email":"travis@form.io"},{"name":"lane-formio","email":"lane@form.io"},{"name":"tanyagashtold","email":"tanya@form.io"},{"name":"alexeynikipelau","email":"alexey.nikipelau@form.io"},{"name":"brendanbond","email":"brendanbond@gmail.com"},{"name":"johnformio","email":"johnt@form.io"}],"readme":"## Formio MCP server\n\n[![npm: @formio/mcp](https://img.shields.io/npm/v/%40formio%2Fmcp?label=%40formio%2Fmcp)](https://www.npmjs.com/package/@formio/mcp)\n[![Smithery](https://img.shields.io/badge/Smithery-formio%2Fmcp-blue)](https://smithery.ai/servers/formio/mcp)\n[![MCP Registry](https://img.shields.io/badge/MCP%20Registry-io.form%2Fformio--mcp-blue)](https://registry.modelcontextprotocol.io/v0/servers?search=io.form/formio-mcp)\n\nThe MCP server (`@formio/mcp`) is independently usable from any MCP-aware client. It speaks **stdio**: the client spawns it and owns stdin/stdout. There is no port to open and nothing to start by hand.\n\nFrom a clone of this repo, the entry point is `src/stdio.ts`:\n\n```bash\npnpm install\npnpm --filter @formio/mcp exec tsx src/stdio.ts\n```\n\nRun that way it waits for MCP traffic on stdin, which only tells you it starts cleanly — point a client at the command instead. A built package exposes the same entry point as the `formio-mcp` bin and as `dist/stdio.js`.\n\n### Transport\n\n| Transport | Command | Compatible with |\n| --- | --- | --- |\n| stdio | `npx -y @formio/mcp@0.14.0` (or `node dist/stdio.js`) | Claude Code, Claude Desktop, Cursor, VS Code, Codex, Windsurf, Cline — anything that speaks MCP over stdio |\n\nThere is no HTTP or SSE transport. The server's only HTTP listener is the temporary browser-login page described under [Authentication](#authentication), which carries no MCP traffic.\n\n### Connect a client\n\nThe same stdio entry works everywhere, but the file it goes in **and the key it goes under** both vary by client — `.mcp.json` under `mcpServers` for Claude Code, `.cursor/mcp.json` under `mcpServers` for Cursor, `.vscode/mcp.json` under **`servers`** for VS Code, and `.codex/config.toml` as TOML for Codex. There is no universal `.mcp.json`. The [root README](https://github.com/formio/ai#manual-configuration) carries the full per-client table; the JSON `mcpServers` shape is:\n\n```json\n{\n  \"mcpServers\": {\n    \"formio-mcp\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@formio/mcp@0.14.0\"],\n      \"env\": {\n        \"FORMIO_PROJECT_URL\": \"https://your-project.form.io\"\n      }\n    }\n  }\n}\n```\n\nEvery tool that reaches Form.io needs a project. It can come from a committed `formio.json`, from a per-directory mapping written by the `project_set` tool, or from `FORMIO_PROJECT_URL` in the environment — in that order, narrowest scope first, so a mapping overrides the environment and a committed file overrides both. `FORMIO_BASE_URL` is optional and usually unnecessary: the base URL is derived from the project URL's shape — `https://api.form.io` for a project on a `form.io` host, the parent path for a sub-directory-routed one — and is asked for only when it cannot be derived. No plugin manifest prompts for either value; every client records them per directory with `project_set` or a committed `formio.json`, and the `.mcpb` desktop bundle is the one exception because a desktop host has no working directory to interview in.\n\nThe server starts without either one, so a client can connect and list the tools before anything is configured — the project URL is only demanded at the point a tool needs it, and `hello` works regardless.\n\n### Run in Docker\n\nThe server ships a [`Dockerfile`](./Dockerfile) and is published to Docker Hub as [`formio/mcp`](https://hub.docker.com/r/formio/mcp) for `linux/amd64` and `linux/arm64`. The image speaks stdio, so the MCP client owns stdin/stdout and the container must be run with `-i`:\n\n```bash\ndocker run -i --rm \\\n  -e FORMIO_PROJECT_URL=https://your-project.form.io \\\n  -e FORMIO_API_KEY=your-api-key \\\n  formio/mcp\n```\n\nWired into a client — the same entry as [Connect a client](#connect-a-client), with `command` and `args` pointed at Docker — that becomes (shown in the JSON `mcpServers` shape; VS Code uses `servers` and Codex uses TOML, as noted there):\n\n```json\n{\n  \"mcpServers\": {\n    \"formio-mcp\": {\n      \"command\": \"docker\",\n      \"args\": [\n        \"run\", \"-i\", \"--rm\",\n        \"-e\", \"FORMIO_PROJECT_URL\",\n        \"-e\", \"FORMIO_API_KEY\",\n        \"formio/mcp\"\n      ],\n      \"env\": {\n        \"FORMIO_PROJECT_URL\": \"https://your-project.form.io\",\n        \"FORMIO_API_KEY\": \"your-api-key\"\n      }\n    }\n  }\n}\n```\n\n#### Authentication in a container\n\n`FORMIO_API_KEY` is the recommended path — no browser, nothing interactive. Browser login also works if you publish the auth port; see [Headless environments](#headless-environments) for both.\n\nTwo container-specific notes regardless of auth mode. Prefer the `FORMIO_PROJECT_URL` environment variable over the `project_set` tool: `project_set` persists its per-directory mapping to `~/.formio/projects.json`, which lives inside the container and is discarded when it exits. And the `cwd` argument every tool takes refers to a path *inside* the container, not on your host.\n\nTo reuse a token across container runs, mount the cache directory — it must be writable, since the server rewrites the file when a token is refreshed or cleared:\n\n```bash\n-v \"$HOME/.formio:/root/.formio\"\n```\n\n#### Self-hosted deployments\n\nTwo things commonly bite when the deployment is not public:\n\n**Hostname resolution.** A private hostname won't resolve inside the container. Map it explicitly:\n\n```bash\ndocker run -i --rm --add-host forms.internal:10.0.0.5 \\\n  -e FORMIO_BASE_URL=https://forms.internal \\\n  -e FORMIO_PROJECT_URL=https://forms.internal/my-project \\\n  -e FORMIO_API_KEY=your-api-key \\\n  formio/mcp\n```\n\n**Private or self-signed certificates.** The image trusts only the standard CA bundle. A certificate your host trusts — via the macOS keychain, say — will still fail inside the container, surfacing as a bare `fetch failed` from the tool. There are two cases, and they behave differently:\n\n*Issued by a private CA.* Mount the CA certificate and point Node at it:\n\n```bash\n-v /path/to/rootCA.pem:/certs/rootCA.pem:ro -e NODE_EXTRA_CA_CERTS=/certs/rootCA.pem\n```\n\n*A fully self-signed server certificate* — one where subject and issuer are identical and there is no `CA:TRUE` basic constraint. `NODE_EXTRA_CA_CERTS` **cannot** fix this, even if you mount the server's own certificate: Node requires a trust anchor to be a CA, and rejects the chain with `DEPTH_ZERO_SELF_SIGNED_CERT`. Confirm which case you have with:\n\n```bash\necho | openssl s_client -connect your-host:443 -servername your-host 2>/dev/null \\\n  | openssl x509 -noout -subject -issuer\n```\n\nIf subject and issuer match, your only option is `FORMIO_INSECURE_TLS=1`, which skips verification entirely. Use it **for local development only** — never against a production deployment.\n\n#### Building the image locally\n\nThe build context is this directory, not the repo root — the package compiles standalone because its `tsconfig` extends nothing above it and none of its dependencies are workspace packages:\n\n```bash\ndocker build -t formio-mcp packages/mcp-server\n```\n\n### Inspect it with MCP Inspector\n\nThe [MCP Inspector](https://github.com/modelcontextprotocol/inspector) connects to the server and lets you browse and call its tools by hand — useful for confirming a config works before wiring it into an agent. Start the web portal:\n\n```bash\nnpx @modelcontextprotocol/inspector\n```\n\nIt prints a URL carrying an auth token and opens a browser. The default port is 6274; if something already holds it, move both with `CLIENT_PORT=6284 SERVER_PORT=6285`.\n\n![Importing inspector-config.json into the MCP Inspector, connecting the server, and calling form_list against a real project](https://raw.githubusercontent.com/formio/ai/main/packages/mcp-server/docs/formio-mcp-inspector.gif)\n\nCopy [`inspector-config.example.json`](./inspector-config.example.json) to `inspector-config.json`, fill in your project URL and API key, and you have the file the next step asks for. That name is gitignored, so a filled-in copy cannot be committed by accident.\n\nThe same run, step by step:\n\n**1. Choose Add Servers → Import from client config.**\n\n![Add Servers menu with Import from client config highlighted](https://raw.githubusercontent.com/formio/ai/main/packages/mcp-server/docs/images/inspector-1-add-servers.jpg)\n\n**2. Click \"From file…\".** The dialog takes a client config file or a client installed on this machine — there is nowhere to paste JSON.\n\n![Import from client config dialog offering a client dropdown and a From file button](https://raw.githubusercontent.com/formio/ai/main/packages/mcp-server/docs/images/inspector-2-import-dialog.jpg)\n\n**3. Select your `inspector-config.json`,** and the server it defines is listed as new. Confirm with \"Import 1 server\".\n\n![Dialog listing formio-mcp under New servers with an Import 1 server button](https://raw.githubusercontent.com/formio/ai/main/packages/mcp-server/docs/images/inspector-3-new-servers.jpg)\n\n**4. Enable the server with the toggle on its card.** It turns green and reports the negotiated protocol version once the container is up; the first connection is slower because Docker has to start it.\n\n![Server card for formio-mcp showing Connected and the docker command it runs](https://raw.githubusercontent.com/formio/ai/main/packages/mcp-server/docs/images/inspector-4-connected.jpg)\n\n**5. Open the Tools tab** for the tools this server exposes. Every server lists all 21 — including `project_set` and `project_get`, which are registered for every client.\n\n![Tools tab listing hello, form_create, form_get, form_list and the rest](https://raw.githubusercontent.com/formio/ai/main/packages/mcp-server/docs/images/inspector-5-tools.jpg)\n\n**6. Pick a tool, fill in its arguments, and press \"Execute Tool\".** The result appears in the middle pane and the JSON-RPC exchange in the right-hand Protocol panel. `hello` is the one tool that touches no credentials, so it isolates transport problems from auth problems; `form_list` below is a real call against a project.\n\n![form_list results showing form definitions returned from a Form.io project](https://raw.githubusercontent.com/formio/ai/main/packages/mcp-server/docs/images/inspector-6-tool-result.jpg)\n\nImporting writes the server into the inspector's own catalog at `~/.mcp-inspector/mcp.json`, so it is still there next time — remove it from the card when you are done. A tool that fails with a bare `fetch failed` is usually the deployment, not the server: see [Self-hosted deployments](#self-hosted-deployments) for hostname resolution and certificate trust inside a container.\n\n---\n\n## MCP server tools\n\nThe bundled `@formio/mcp` server exposes these tools. Skills prefer these over raw HTTP whenever an operation is covered.\n\n### Forms\n\n| Tool | Purpose |\n| --- | --- |\n| `form_create` | Create a new form. Use the `formio-form` skill first to build the JSON definition. |\n| `form_get` | Fetch a single form definition by ID or path. |\n| `form_list` | List forms with optional filtering and pagination. |\n| `form_update` | Update an existing form. Call `form_get` first, edit with `formio-form`, then update. |\n| `form_revisions_list` | List a form's saved revisions. |\n| `form_revision_get` | Fetch one revision of a form by revision id. |\n\n### Roles\n\n| Tool | Purpose |\n| --- | --- |\n| `role_create` | Create a new project role. |\n| `role_list` | List all project roles. |\n| `role_update` | Full-replacement update of a role. Include all fields you want preserved. |\n\n### Actions\n\n| Tool | Purpose |\n| --- | --- |\n| `action_types_list` | List all action types available on the server. |\n| `action_type_get` | Get an action type's settings schema. |\n| `action_create` | Attach a new action to a form. |\n| `action_list` | List actions on a form. |\n| `action_get` | Get a single action by ID. |\n| `action_update` | Update an action. |\n| `action_delete` | Detach an action from a form. |\n\n### Project\n\n| Tool | Purpose |\n| --- | --- |\n| `project_export` | Export the project's complete template (roles, resources, forms, actions) as a portable JSON document. Use before `project_import` to snapshot. |\n| `project_import` | Import a template JSON — additively merges roles, resources, forms, and actions in one call. **Same-machine-name items are overwritten in place; everything else is preserved.** |\n| `project_get` | Report which project a directory resolves to, which deployment hosts it, and which layer supplied each. The preflight to run before the first call that reads or writes — it answers from inside the server, with the same resolver every other tool uses, so no shell command is needed to ask it. Returns a `status` of `ok`, `not-configured`, or `base-url-unresolved`. |\n| `project_set` | Persist a Project URL for a directory, in `~/.formio/projects.json`. To record the target with the code instead, write a committed `formio.json` in the application's own folder — the server reads that file and never writes it. One server can serve several workspaces. Registered in every client. A mapping written here overrides `FORMIO_PROJECT_URL` in the server environment, which is the weakest source. |\n\n### Diagnostic\n\n| Tool | Purpose |\n| --- | --- |\n| `hello` | Smoke-test tool. Returns a static greeting; useful for verifying MCP wiring before any authenticated call. |\n\n---\n\n## Authentication\n\nThe MCP server supports two authentication modes:\n\n- **JWT mode (default).** A short-lived local Express server renders the Form.io portal login form; the user signs in once, the JWT comes back via a `/callback` endpoint, and `formioFetch` attaches `x-jwt-token` on every subsequent request. The flow is implicit — the **first authenticated tool call** triggers it on a cache miss. No explicit `authenticate` tool exists.\n- **API-key mode.** Set `FORMIO_API_KEY`. All requests attach `x-token`; the browser flow is skipped entirely.\n\nThe JWT is cached in `~/.formio/mcp-tokens.json` (mode `0600`), keyed by the resolved Base URL — one token covers every project on the same deployment. Tokens are valid for roughly seven days; on a cache hit the server checks expiry locally, then revalidates against the server, and falls back to a fresh login if either check fails.\n\n> **What the agent is granted.** JWT mode hands the agent **the JWT of whoever logs in**, so the agent acts with that person's permissions for the token's lifetime — sign in as an administrator and the agent inherits administrator access to the deployment. An API key is scoped to its project instead. Prefer API-key mode for unattended or shared environments, and sign in as a least-privileged user when using JWT mode.\n\n### Headless environments\n\nBy default the login page is served on an ephemeral port bound to `127.0.0.1` and the server shells out to `open`/`start`/`xdg-open`, which assumes a desktop browser on the same machine.\n\nWhere that assumption doesn't hold — a container, an SSH session, CI — you have three options:\n\n1. **Set `FORMIO_API_KEY`** and skip the browser entirely. Simplest for unattended use.\n2. **Complete the login manually.** The login URL is written to stderr on **every** login attempt, before any browser launch is tried — not only when something fails. If the launch does fail, that is reported as an additional line rather than swallowed. The URL also appears in the timeout error, which the client surfaces as tool output, so it reaches you even if you never see the server's logs.\n\n   stderr is used because with stdio transport **stdout carries the MCP protocol itself** — writing anything else there corrupts the stream.\n3. **Bind somewhere reachable.** Set `FORMIO_AUTH_HOST=0.0.0.0` and `FORMIO_AUTH_PORT` to a fixed, published port, then open the URL from your own machine:\n\n   ```bash\n   docker run -i --rm -p 43117:43117 \\\n     -e FORMIO_PROJECT_URL=https://your-project.form.io \\\n     -e FORMIO_AUTH_HOST=0.0.0.0 -e FORMIO_AUTH_PORT=43117 \\\n     formio/mcp\n   ```\n\n   `FORMIO_AUTH_HOST=0.0.0.0` exposes the login page on every interface for the duration of the login. Only use it where that is acceptable.\n\nIf no login arrives within `FORMIO_AUTH_TIMEOUT` seconds (default 900) the call fails with an error naming these options, rather than hanging until the client gives up.\n\n### Login-form auto-resolution\n\nWhen `FORMIO_LOGIN_FORM` is unset, the server probes these candidates on the first login attempt and caches the first one that responds (1.5-second timeout per candidate):\n\n1. `{baseUrl}/formio/user/login` (portal-base)\n2. `{projectUrl}/admin/login` (project admin)\n3. `{projectUrl}/user/login` (project user)\n\n`{baseUrl}` and `{projectUrl}` are the RESOLVED values — whatever `project get` reports for that directory — not the environment variables of similar name.\n\nThe probe runs lazily — only when the local auth page is actually served.\n\n---\n\n## Environment variables\n\n| Name | Required | Default | Purpose | Hosted SaaS example | Self-hosted example |\n| --- | :-: | --- | --- | --- | --- |\n| `FORMIO_PROJECT_URL` | yes\\* | — | Full URL of your Form.io project. The WEAKEST of the three sources: a committed `formio.json` found by walking up from the working directory wins, then a per-directory mapping written by `project_set`, then this. Self-hosted, it is a sub-directory of the deployment or a sub-domain of your own domain (`https://myproject.example.com`), depending on how that deployment routes projects. | `https://myproject.form.io` | `https://forms.example.com/myproject` |\n| `FORMIO_BASE_URL` | no | derived, see note | Full base URL of your Form.io deployment. Normally DERIVED from the project URL rather than set — `https://api.form.io` for a project on a `form.io` host, the parent path for a project addressed as a sub-directory. Supply it only for a project URL with no path on your own domain, whose deployment cannot be derived. The weakest of three sources: a committed `formio.json` wins, then the per-directory mapping, then this. On the hosted cloud it is always `https://api.form.io`, never a project's `*.form.io` sub-domain. | `https://api.form.io` | `https://forms.example.com` |\n| `FORMIO_API_KEY` | no | `undefined` | Long-lived project API key. When set, the server skips the browser login flow — the only way to authenticate on a host with no browser. | `CHANGEME` | `CHANGEME` |\n| `FORMIO_LOGIN_FORM` | no | Auto-resolved | Override the portal login form URL used by the JWT login flow. | `https://formio.form.io/user/login` | `https://forms.example.com/formio/user/login` |\n| `FORMIO_AUTH_HOST` | no | `127.0.0.1` | Bind address for the browser-login page. `0.0.0.0` makes it reachable from outside a container. |  |  |\n| `FORMIO_AUTH_PORT` | no | ephemeral | Fixed port for the browser-login page, so a container can publish it. | `43117` | `43117` |\n| `FORMIO_AUTH_TIMEOUT` | no | `900` | Seconds to wait for a browser login before failing the call. |  |  |\n| `FORMIO_INSECURE_TLS` | no | `undefined` | Set to `1` to skip TLS verification. Local development only — never against production. |  |  |\n| `FORMIO_FORCE_BROWSER` | no | `0` | Set to `1` to attempt the browser login even where the server detects no browser (CI, a container, SSH with no display). |  |  |\n\n<sub>\\* Not at startup — the server starts, lists every tool, and answers `hello` without it; only the tools that read or write Form.io data error, naming `project_set` and this variable. The alternative is the `project_set` tool, which maps a working directory to a project in `~/.formio/projects.json`. Resolution runs by scope, narrowest first: a committed `formio.json` found by walking up from the caller's `cwd`, then the mapping for that `cwd`, then `FORMIO_PROJECT_URL` in the environment as the weakest source, then the error. Map a directory before any client connects with `npx -y @formio/mcp@0.14.0 project set --project-url <url> --cwd <path>` — the deployment is derived from the project URL wherever it can be, so add `--base-url <url>` only when the server says it cannot be determined. Add `--force` beside both URLs to record a pair the domain rules refuse — the one shape they cannot tell from a mistake is an internal deployment served from a `*.form.io` domain; it takes both URLs in the same call, is honoured on every later read, and is a shell-only flag the `project_set` tool does not have. `project set --reset --cwd <path>` clears a directory's entry, which is how a forced pair is un-forced: a write that leaves both halves untouched keeps the override, so there is nothing for an unforced re-record to change. `project get --cwd <path>` prints what resolves and which source won. It exits `0` when it resolved, `1` when nothing is mapped for that directory, `2` when the command could not answer (a usage error, a malformed URL, an unreadable `~/.formio/projects.json`), and `3` when a project resolved but its Base URL could not be determined — so a caller can tell \"nothing here yet\" from \"this failed\" from \"half configured, and here is the one value missing\". `project set --cwd <path>` exits `0` when the directory is ready to serve a call, `1` when a named value is still missing, `2` when the command could not answer, and `3` when the record WAS written and the directory still resolves no Base URL — a committed `formio.json` governs it and supplies none, so the remedy is an edit to that file rather than another write.</sub>\n\n---\n\n## Privacy Policy\n\nForm.io's privacy policy covers the Form.io Services this server talks to: **https://form.io/privacy**\n\nWhat the server itself does with data, which is the part the policy above cannot describe:\n\n**Where your data goes.** Only to the Form.io deployment you configure. Every request targets the Project URL and Base URL that resolve for your working directory — your own SaaS project or your self-hosted server. The server sends nothing to Form.io when you are self-hosted, and there is no telemetry, analytics, or usage reporting of any kind.\n\n**What is stored on your machine.** Two files under `~/.formio/`, both written with mode `0600`:\n\n| File | Contents | Written when |\n| --- | --- | --- |\n| `mcp-tokens.json` | The JWT from the browser login, keyed by the resolved Base URL | You sign in through the browser |\n| `projects.json` | A per-directory map of project and base URLs | `project_set` runs |\n\nForm data and submissions are never written to disk — they pass through in memory to answer a tool call.\n\n**Credentials.** `FORMIO_API_KEY`, when set, is read from the environment and sent to your deployment as an authentication header; it is never written to disk. The cached JWT is valid for roughly seven days, after which the server re-authenticates. Delete `~/.formio/mcp-tokens.json` to sign out immediately.\n\n**Third parties.** The server contacts no third-party service. One exception is worth naming: the browser sign-in page is served locally, and the page it renders loads the Form.io renderer and its stylesheets from `cdn.jsdelivr.net`, a webfont from `fonts.googleapis.com`, and the Form.io logo from `portal.form.io`, so those hosts see your browser's IP address while that page is open. Everything else on the page comes from your own deployment. Set `FORMIO_API_KEY` to skip the browser flow entirely and avoid it.\n\n**Retention.** The files above persist until you delete them. Data held in your Form.io project is governed by your own deployment's retention rules, and by the policy linked above for Form.io-hosted projects.\n\nQuestions about data handling: support@form.io\n","readmeFilename":"README.md"}