{"_id":"@gravitykit/mcp","_rev":"10-4836ac521634a00d0e6889efe8145516","name":"@gravitykit/mcp","dist-tags":{"latest":"2.6.1"},"versions":{"2.0.0":{"name":"@gravitykit/mcp","version":"2.0.0","keywords":["mcp","gravity-forms","rest-api","forms","entries","wordpress","integration","automation"],"author":{"name":"GravityKit"},"license":"GPL-2.0","_id":"@gravitykit/mcp@2.0.0","maintainers":[{"name":"gravitykit","email":"admin@gravitykit.com"}],"homepage":"https://github.com/GravityKit/MCP#readme","bugs":{"url":"https://github.com/GravityKit/MCP/issues"},"bin":{"gkmcp":"src/index.js"},"mcp":{"tools":{"feeds":7,"forms":6,"entries":6,"results":1,"submissions":2,"field_filters":1,"notifications":1},"features":["Gravity Forms REST API coverage","File upload support","Advanced search and filtering","Batch operations","Delete operation protection","Comprehensive error handling","Integration testing","Security validation"],"total_tools":24,"api_coverage":"100%","authentication":["OAuth 1.0a","Basic Authentication"]},"dist":{"shasum":"fb5e14e9a1bc169650322304a5bbc53b1cb08e5e","tarball":"https://registry.npmjs.org/@gravitykit/mcp/-/mcp-2.0.0.tgz","fileCount":52,"integrity":"sha512-sXuWRyXSw1wmVSr1YCeymQs/tSON2C4OhWlxXJW+iIcAIhJ3qavagzspKJB0iKksQaciPEg+S9GHyqr7zuwP+Q==","signatures":[{"sig":"MEQCIHS0g4KVAdIoaXazVs3zzFyxQKGYa+hQBN/x/UXGG+otAiAes9unbiNrOZwaZ/4i0dYdOXXgXOLuNcpRuBr/m44mWw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":535974},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"5adc7151033461fbaf9d65df8fb98de695e53684","scripts":{"dev":"node --watch src/index.js","test":"node src/tests/integration.test.js","start":"node src/index.js","inspect":"npx @modelcontextprotocol/inspector node src/index.js","test:all":"npm run test:unit && npm run test:auth && npm run test:forms && npm run test:entries && npm run test:feeds && npm run test:submissions && npm run test:validation && npm run test:field-validation && npm run test:tools && npm test","check-env":"node scripts/check-env.js","test:auth":"node src/tests/authentication.test.js","test:unit":"node src/tests/run.js","test:feeds":"node src/tests/feeds.test.js","test:forms":"node src/tests/forms.test.js","test:tools":"node src/tests/server-tools.test.js","test:compact":"node src/tests/compact.test.js","test:entries":"node src/tests/entries.test.js","test:coverage":"echo 'Running all tests with coverage analysis' && npm run test:all","setup-test-data":"node scripts/setup-test-data.js","test:validation":"node src/tests/validation.test.js","test:submissions":"node src/tests/submissions.test.js","test:field-validation":"node src/tests/field-validation.test.js"},"_npmUser":{"name":"gravitykit","email":"admin@gravitykit.com"},"repository":{"url":"git+https://github.com/GravityKit/MCP.git","type":"git"},"_npmVersion":"10.8.2","description":"Full-featured MCP server for Gravity Forms","directories":{},"_nodeVersion":"20.20.1","dependencies":{"axios":"^1.13.6","dotenv":"^16.4.7","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp_2.0.0_1774986330041_0.4279417526698497","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@gravitykit/mcp","version":"2.1.0","keywords":["mcp","gravity-forms","rest-api","forms","entries","wordpress","integration","automation"],"author":{"name":"GravityKit"},"license":"GPL-2.0","_id":"@gravitykit/mcp@2.1.0","maintainers":[{"name":"gravitykit","email":"admin@gravitykit.com"}],"homepage":"https://github.com/GravityKit/MCP#readme","bugs":{"url":"https://github.com/GravityKit/MCP/issues"},"bin":{"gkmcp":"src/index.js"},"mcp":{"tools":{"feeds":7,"forms":6,"entries":6,"results":1,"submissions":2,"field_filters":1,"notifications":1},"features":["Gravity Forms REST API coverage","File upload support","Advanced search and filtering","Batch operations","Delete operation protection","Comprehensive error handling","Integration testing","Security validation"],"total_tools":24,"api_coverage":"100%","authentication":["OAuth 1.0a","Basic Authentication"]},"dist":{"shasum":"7a35d0aae2d4ef9bab05b3b997802b037d1d802f","tarball":"https://registry.npmjs.org/@gravitykit/mcp/-/mcp-2.1.0.tgz","fileCount":53,"integrity":"sha512-o3LjBQZxwuOr0J0zSGfWRVXMIlVdAz7wm1WvfGPVsWrCiokwZ76AfZFXMffN3kzo4o96xS1eC9KX/JFjq2lAjg==","signatures":[{"sig":"MEYCIQCpLpQqrUwlfvk1sCzo/QnfKJB8uGRMBi4tCaZQmVceZQIhAPgEf4UWcbw/AAlnNStiV5USMVxqO3HrGS6g43p63FxO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":586836},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"2815ed56eb2963a976903216084688dd176412a3","scripts":{"dev":"node --watch src/index.js","test":"node src/tests/integration.test.js","start":"node src/index.js","inspect":"npx @modelcontextprotocol/inspector node src/index.js","test:all":"npm run test:unit && npm run test:auth && npm run test:forms && npm run test:entries && npm run test:feeds && npm run test:submissions && npm run test:validation && npm run test:field-validation && npm run test:tools && npm test","check-env":"node scripts/check-env.js","test:auth":"node src/tests/authentication.test.js","test:unit":"node src/tests/run.js","test:feeds":"node src/tests/feeds.test.js","test:forms":"node src/tests/forms.test.js","test:tools":"node src/tests/server-tools.test.js","test:compact":"node src/tests/compact.test.js","test:entries":"node src/tests/entries.test.js","test:coverage":"echo 'Running all tests with coverage analysis' && npm run test:all","setup-test-data":"node scripts/setup-test-data.js","test:validation":"node src/tests/validation.test.js","test:submissions":"node src/tests/submissions.test.js","test:field-validation":"node src/tests/field-validation.test.js"},"_npmUser":{"name":"gravitykit","email":"admin@gravitykit.com"},"repository":{"url":"git+https://github.com/GravityKit/MCP.git","type":"git"},"_npmVersion":"10.8.2","description":"Full-featured MCP server for Gravity Forms","directories":{},"_nodeVersion":"20.20.1","dependencies":{"axios":"^1.13.6","dotenv":"^16.4.7","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp_2.1.0_1775015641463_0.37152558467155194","host":"s3://npm-registry-packages-npm-production"}},"2.1.1":{"name":"@gravitykit/mcp","version":"2.1.1","keywords":["mcp","gravity-forms","rest-api","forms","entries","wordpress","integration","automation"],"author":{"name":"GravityKit"},"license":"GPL-2.0","_id":"@gravitykit/mcp@2.1.1","maintainers":[{"name":"gravitykit","email":"admin@gravitykit.com"}],"homepage":"https://github.com/GravityKit/MCP#readme","bugs":{"url":"https://github.com/GravityKit/MCP/issues"},"bin":{"gkmcp":"src/index.js"},"mcp":{"tools":{"feeds":7,"forms":6,"entries":6,"results":1,"submissions":2,"field_filters":1,"notifications":1},"features":["Gravity Forms REST API coverage","File upload support","Advanced search and filtering","Batch operations","Delete operation protection","Comprehensive error handling","Integration testing","Security validation"],"total_tools":24,"api_coverage":"100%","authentication":["OAuth 1.0a","Basic Authentication"]},"dist":{"shasum":"dd3c4828715cb345676dc734c3fd915911b974d9","tarball":"https://registry.npmjs.org/@gravitykit/mcp/-/mcp-2.1.1.tgz","fileCount":53,"integrity":"sha512-r/aO8YCz46jyTVDLJHg0boxpmgDYX6n2K1LXASRdbWdCUOspF2plv+aCyQN/J/2iX4CNPOTeXOybDG5oMxOcqA==","signatures":[{"sig":"MEYCIQCFUlEbc4sjrToWNwYiE9/zMACWfulf6p6vjtjBaCztwwIhANCq8/ZzlcoN6wt16o4sjVAl6E5WWJPbVX8AjGdd5WoX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":594513},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"9541b07e5dd790f9f06b354a591ed7b8d49cfc1c","scripts":{"dev":"node --watch src/index.js","test":"node src/tests/integration.test.js","start":"node src/index.js","inspect":"npx @modelcontextprotocol/inspector node src/index.js","test:all":"npm run test:unit && npm run test:auth && npm run test:forms && npm run test:entries && npm run test:feeds && npm run test:submissions && npm run test:validation && npm run test:field-validation && npm run test:tools && npm test","check-env":"node scripts/check-env.js","test:auth":"node src/tests/authentication.test.js","test:unit":"node src/tests/run.js","test:feeds":"node src/tests/feeds.test.js","test:forms":"node src/tests/forms.test.js","test:tools":"node src/tests/server-tools.test.js","test:compact":"node src/tests/compact.test.js","test:entries":"node src/tests/entries.test.js","test:coverage":"echo 'Running all tests with coverage analysis' && npm run test:all","setup-test-data":"node scripts/setup-test-data.js","test:validation":"node src/tests/validation.test.js","test:submissions":"node src/tests/submissions.test.js","test:field-validation":"node src/tests/field-validation.test.js"},"_npmUser":{"name":"gravitykit","email":"admin@gravitykit.com"},"repository":{"url":"git+https://github.com/GravityKit/MCP.git","type":"git"},"_npmVersion":"10.8.2","description":"Full-featured MCP server for Gravity Forms","directories":{},"_nodeVersion":"20.20.2","dependencies":{"axios":"^1.13.6","dotenv":"^16.4.7","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp_2.1.1_1775231940191_0.1409958202642514","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@gravitykit/mcp","version":"2.2.0","keywords":["mcp","gravity-forms","rest-api","forms","entries","wordpress","integration","automation"],"author":{"name":"GravityKit"},"license":"GPL-2.0","_id":"@gravitykit/mcp@2.2.0","maintainers":[{"name":"gravitykit","email":"admin@gravitykit.com"}],"homepage":"https://github.com/GravityKit/MCP#readme","bugs":{"url":"https://github.com/GravityKit/MCP/issues"},"bin":{"gkmcp":"src/index.js"},"mcp":{"tools":{"feeds":7,"forms":6,"entries":6,"results":1,"submissions":2,"field_filters":1,"notifications":1},"features":["Gravity Forms REST API coverage","File upload support","Advanced search and filtering","Batch operations","Delete operation protection","Comprehensive error handling","Integration testing","Security validation"],"total_tools":24,"api_coverage":"100%","authentication":["OAuth 1.0a","Basic Authentication"]},"dist":{"shasum":"debdeb6d9ec9c82ee0d6fa31e31c4775229a1373","tarball":"https://registry.npmjs.org/@gravitykit/mcp/-/mcp-2.2.0.tgz","fileCount":33,"integrity":"sha512-do5XdtOy719dcKVFHZShVCgIM2RXiLTB6ArSUIyRMIQBjtUTAV2EHP26wAp97uSN5YpzAhoSUM6BUlyT3QB5Eg==","signatures":[{"sig":"MEUCIFYu/dFHm5/1N8vx5jD6fUNlyEhsPFELWEh0FXRwn8BOAiEAv+6yi3TVW/7vmVSUD6o1OQAQfaFDFYgLLKAwyynNM2w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gravitykit%2fmcp@2.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":390054},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"cbc2c44673ead2dd35c92c6b98e3fb8d4096b970","scripts":{"dev":"node --watch src/index.js","test":"node test/integration.test.js","start":"node src/index.js","inspect":"npx @modelcontextprotocol/inspector node src/index.js","test:all":"npm run test:unit && npm run test:node && npm run test:auth && npm run test:forms && npm run test:entries && npm run test:feeds && npm run test:submissions && npm run test:validation && npm run test:field-validation && npm run test:tools && npm run test:views && npm test","check-env":"node scripts/check-env.js","lint:docs":"node scripts/check-docs.mjs","test:auth":"node test/authentication.test.js","test:live":"node test/live/gf-live.mjs","test:node":"node --test test/field-manager.test.js test/field-registry.test.js test/field-dependencies.test.js test/field-positioner.test.js test/helpers.test.js test/ability-catalog.test.js test/user-agent.test.js test/wp-client.test.js test/server-runtime.test.js test/entries-query.test.js test/entries-wire.test.js test/client-hardening.test.js test/validation-hardening.test.js test/sanitize-hardening.test.js test/schema-hardening.test.js","test:unit":"node test/run.js","test:feeds":"node test/feeds.test.js","test:forms":"node test/forms.test.js","test:tools":"node test/server-tools.test.js","test:views":"node test/views.test.js","lint:package":"publint","test:compact":"node test/compact.test.js","test:entries":"node test/entries.test.js","test:coverage":"echo 'Running all tests with coverage analysis' && npm run test:all","prepublishOnly":"npm run test:unit && npm run test:node && npm run test:field-validation && npm run test:views && npm run lint:package && npm run lint:docs","setup-test-data":"node scripts/setup-test-data.js","test:validation":"node test/validation.test.js","test:submissions":"node test/submissions.test.js","verify:tool-names":"node scripts/verify-tool-names.mjs","test:field-validation":"node test/field-validation.test.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8bbb70e1-f6f9-448a-9cd4-07c2fbeb0b54"}},"repository":{"url":"git+https://github.com/GravityKit/MCP.git","type":"git"},"_npmVersion":"11.17.0","description":"Full-featured MCP server for Gravity Forms","directories":{},"_nodeVersion":"22.22.3","dependencies":{"axios":"^1.13.6","dotenv":"^16.4.7","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"publint":"^0.3.21"},"_npmOperationalInternal":{"tmp":"tmp/mcp_2.2.0_1781586308085_0.5571654550264422","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"@gravitykit/mcp","version":"2.3.0","keywords":["mcp","gravity-forms","rest-api","forms","entries","wordpress","integration","automation"],"author":{"name":"GravityKit"},"license":"GPL-2.0","_id":"@gravitykit/mcp@2.3.0","maintainers":[{"name":"gravitykit","email":"admin@gravitykit.com"}],"homepage":"https://github.com/GravityKit/MCP#readme","bugs":{"url":"https://github.com/GravityKit/MCP/issues"},"bin":{"gkmcp":"src/index.js"},"mcp":{"tools":{"feeds":7,"forms":6,"entries":6,"results":1,"submissions":2,"field_filters":1,"notifications":1},"features":["Gravity Forms REST API coverage","File upload support","Advanced search and filtering","Batch operations","Delete operation protection","Comprehensive error handling","Integration testing","Security validation"],"total_tools":24,"api_coverage":"100%","authentication":["OAuth 1.0a","Basic Authentication"]},"dist":{"shasum":"d9f3e44c61c32c4c78a87aa595d964165465e104","tarball":"https://registry.npmjs.org/@gravitykit/mcp/-/mcp-2.3.0.tgz","fileCount":33,"integrity":"sha512-e/IfD72MMD/+snuWNm9sZljzPxviMJD0gmcNm9tTELpMHjildeiH3gS7UkLMJiI+GpaQVrIZOMft4U169TUj3g==","signatures":[{"sig":"MEUCIQCMn071XgMMjj/iPPuEj4bpGdH7p1+X8QepzlhrDATjBAIgdMxMSoxsjh3hL+rg72xSANGeYERltBCDTcBYkujg8Ho=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gravitykit%2fmcp@2.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":392116},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"306a541dd4c1476c1c0f420d63644cf34636ab4b","scripts":{"dev":"node --watch src/index.js","test":"node test/integration.test.js","start":"node src/index.js","inspect":"npx @modelcontextprotocol/inspector node src/index.js","test:all":"npm run test:unit && npm run test:node && npm run test:auth && npm run test:forms && npm run test:entries && npm run test:feeds && npm run test:submissions && npm run test:validation && npm run test:field-validation && npm run test:tools && npm run test:views && npm test","check-env":"node scripts/check-env.js","lint:docs":"node scripts/check-docs.mjs","test:auth":"node test/authentication.test.js","test:live":"node test/live/gf-live.mjs","test:node":"node --test test/field-manager.test.js test/field-registry.test.js test/field-dependencies.test.js test/field-positioner.test.js test/helpers.test.js test/ability-catalog.test.js test/user-agent.test.js test/wp-client.test.js test/server-runtime.test.js test/entries-query.test.js test/entries-wire.test.js test/client-hardening.test.js test/validation-hardening.test.js test/sanitize-hardening.test.js test/schema-hardening.test.js test/instructions.test.js","test:unit":"node test/run.js","test:feeds":"node test/feeds.test.js","test:forms":"node test/forms.test.js","test:tools":"node test/server-tools.test.js","test:views":"node test/views.test.js","lint:package":"publint","test:compact":"node test/compact.test.js","test:entries":"node test/entries.test.js","test:coverage":"echo 'Running all tests with coverage analysis' && npm run test:all","prepublishOnly":"npm run test:unit && npm run test:node && npm run test:field-validation && npm run test:views && npm run lint:package && npm run lint:docs","setup-test-data":"node scripts/setup-test-data.js","test:validation":"node test/validation.test.js","test:submissions":"node test/submissions.test.js","verify:tool-names":"node scripts/verify-tool-names.mjs","test:field-validation":"node test/field-validation.test.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8bbb70e1-f6f9-448a-9cd4-07c2fbeb0b54"}},"repository":{"url":"git+https://github.com/GravityKit/MCP.git","type":"git"},"_npmVersion":"11.17.0","description":"Full-featured MCP server for Gravity Forms","directories":{},"_nodeVersion":"22.22.3","dependencies":{"axios":"^1.13.6","dotenv":"^16.4.7","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"publint":"^0.3.21"},"_npmOperationalInternal":{"tmp":"tmp/mcp_2.3.0_1781622444315_0.8492005597464012","host":"s3://npm-registry-packages-npm-production"}},"2.4.0":{"name":"@gravitykit/mcp","version":"2.4.0","keywords":["mcp","gravity-forms","rest-api","forms","entries","wordpress","integration","automation"],"author":{"name":"GravityKit"},"license":"GPL-2.0","_id":"@gravitykit/mcp@2.4.0","maintainers":[{"name":"gravitykit","email":"admin@gravitykit.com"}],"homepage":"https://github.com/GravityKit/MCP#readme","bugs":{"url":"https://github.com/GravityKit/MCP/issues"},"bin":{"gkmcp":"src/index.js"},"mcp":{"tools":{"feeds":7,"forms":6,"entries":6,"results":1,"submissions":2,"field_filters":1,"notifications":1},"features":["Gravity Forms REST API coverage","File upload support","Advanced search and filtering","Batch operations","Delete operation protection","Comprehensive error handling","Integration testing","Security validation"],"total_tools":24,"api_coverage":"100%","authentication":["OAuth 1.0a","Basic Authentication"]},"dist":{"shasum":"c03b961c2d9c3a77c292956aa057ec7c0d93764c","tarball":"https://registry.npmjs.org/@gravitykit/mcp/-/mcp-2.4.0.tgz","fileCount":33,"integrity":"sha512-I6FCNwjqmT+tCWuQHbldAwRpITxaDyPJDGW+l70AEkUPG4vcFbMndaG1014k5wY6Q5b8WmTYfhaD9ZogOMtApw==","signatures":[{"sig":"MEUCIDYe+R+owRSDkdC6DXHxGr6hHJIlaT1cHRd8XAcZcxWVAiEApXzbmGD0s9QJRNBsSzER46YFQ+S3MtNl1Xv16ET30lA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gravitykit%2fmcp@2.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":410118},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"8beb4ba86ce741a67b0bc6569c2d4a104fb02658","scripts":{"dev":"node --watch src/index.js","test":"node test/integration.test.js","bench":"node bench/run.mjs","start":"node src/index.js","inspect":"npx @modelcontextprotocol/inspector node src/index.js","test:all":"npm run test:unit && npm run test:node && npm run test:auth && npm run test:forms && npm run test:entries && npm run test:feeds && npm run test:submissions && npm run test:validation && npm run test:field-validation && npm run test:tools && npm run test:views && npm test","check-env":"node scripts/check-env.js","lint:docs":"node scripts/check-docs.mjs","test:auth":"node test/authentication.test.js","test:live":"node test/live/gf-live.mjs","test:node":"node --test test/field-manager.test.js test/field-registry.test.js test/field-dependencies.test.js test/field-positioner.test.js test/helpers.test.js test/ability-catalog.test.js test/user-agent.test.js test/wp-client.test.js test/server-runtime.test.js test/entries-query.test.js test/entries-wire.test.js test/client-hardening.test.js test/validation-hardening.test.js test/sanitize-hardening.test.js test/schema-hardening.test.js test/instructions.test.js test/logger-stdout.test.js test/server-lifecycle.test.js test/bench-grading.test.js test/bench-agent.test.js test/bench-cleanup.test.js","test:unit":"node test/run.js","bench:demo":"node bench/demo.mjs","test:feeds":"node test/feeds.test.js","test:forms":"node test/forms.test.js","test:tools":"node test/server-tools.test.js","test:views":"node test/views.test.js","lint:package":"publint","test:compact":"node test/compact.test.js","test:entries":"node test/entries.test.js","test:coverage":"echo 'Running all tests with coverage analysis' && npm run test:all","prepublishOnly":"npm run test:unit && npm run test:node && npm run test:field-validation && npm run test:views && npm run lint:package && npm run lint:docs","setup-test-data":"node scripts/setup-test-data.js","test:validation":"node test/validation.test.js","test:submissions":"node test/submissions.test.js","verify:tool-names":"node scripts/verify-tool-names.mjs","bench:field-output":"node bench/field-output.mjs","bench:nested-forms":"node bench/nested-forms.mjs","bench:field-storage":"node bench/field-storage.mjs","test:field-validation":"node test/field-validation.test.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8bbb70e1-f6f9-448a-9cd4-07c2fbeb0b54"}},"repository":{"url":"git+https://github.com/GravityKit/MCP.git","type":"git"},"_npmVersion":"11.17.0","description":"Full-featured MCP server for Gravity Forms","directories":{},"_nodeVersion":"22.22.3","dependencies":{"axios":"^1.13.6","dotenv":"^16.4.7","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"publint":"^0.3.21"},"_npmOperationalInternal":{"tmp":"tmp/mcp_2.4.0_1781865649112_0.3043953263974808","host":"s3://npm-registry-packages-npm-production"}},"2.4.1":{"name":"@gravitykit/mcp","version":"2.4.1","keywords":["mcp","gravity-forms","rest-api","forms","entries","wordpress","integration","automation"],"author":{"name":"GravityKit"},"license":"GPL-2.0","_id":"@gravitykit/mcp@2.4.1","maintainers":[{"name":"gravitykit","email":"admin@gravitykit.com"}],"homepage":"https://github.com/GravityKit/MCP#readme","bugs":{"url":"https://github.com/GravityKit/MCP/issues"},"bin":{"gkmcp":"src/index.js"},"mcp":{"tools":{"feeds":7,"forms":6,"entries":6,"results":1,"submissions":2,"field_filters":1,"notifications":1},"features":["Gravity Forms REST API coverage","File upload support","Advanced search and filtering","Batch operations","Delete operation protection","Comprehensive error handling","Integration testing","Security validation"],"total_tools":24,"api_coverage":"100%","authentication":["OAuth 1.0a","Basic Authentication"]},"dist":{"shasum":"238acb9663becf9c43095fcd326c2f6a5ab5e29b","tarball":"https://registry.npmjs.org/@gravitykit/mcp/-/mcp-2.4.1.tgz","fileCount":33,"integrity":"sha512-5h9rwnW2qcXgeoWGsryfpYiij5sZfoEs17I+9wFBdnsVxhheUcYHKDBSHGGzzzEa4UayeOjKOIvSQgipNoPWYg==","signatures":[{"sig":"MEUCIQCLVfOYwoBXegzzGfaY6kuVSELw04dYAqdJtdg2Sdn0DgIgZvdkZ1MGinXnc5QHLsg28BonX0WyOuqKqelcNfnTEeQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gravitykit%2fmcp@2.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":415970},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"6aa7b796c657c7e6e75a27e3677055a0665b3537","scripts":{"dev":"node --watch src/index.js","test":"node test/integration.test.js","bench":"node bench/run.mjs","start":"node src/index.js","inspect":"npx @modelcontextprotocol/inspector node src/index.js","test:all":"npm run test:unit && npm run test:node && npm run test:auth && npm run test:forms && npm run test:entries && npm run test:feeds && npm run test:submissions && npm run test:validation && npm run test:field-validation && npm run test:tools && npm run test:views && npm test","check-env":"node scripts/check-env.js","lint:docs":"node scripts/check-docs.mjs","test:auth":"node test/authentication.test.js","test:live":"node test/live/gf-live.mjs","test:node":"node --test test/field-manager.test.js test/field-registry.test.js test/field-dependencies.test.js test/field-positioner.test.js test/helpers.test.js test/ability-catalog.test.js test/user-agent.test.js test/wp-client.test.js test/server-runtime.test.js test/entries-query.test.js test/entries-wire.test.js test/client-hardening.test.js test/validation-hardening.test.js test/sanitize-hardening.test.js test/schema-hardening.test.js test/instructions.test.js test/logger-stdout.test.js test/server-lifecycle.test.js test/bench-grading.test.js test/bench-agent.test.js test/bench-cleanup.test.js","test:unit":"node test/run.js","bench:demo":"node bench/demo.mjs","test:feeds":"node test/feeds.test.js","test:forms":"node test/forms.test.js","test:tools":"node test/server-tools.test.js","test:views":"node test/views.test.js","lint:package":"publint","test:compact":"node test/compact.test.js","test:entries":"node test/entries.test.js","test:coverage":"echo 'Running all tests with coverage analysis' && npm run test:all","prepublishOnly":"npm run test:unit && npm run test:node && npm run test:field-validation && npm run test:views && npm run lint:package && npm run lint:docs","setup-test-data":"node scripts/setup-test-data.js","test:validation":"node test/validation.test.js","test:submissions":"node test/submissions.test.js","verify:tool-names":"node scripts/verify-tool-names.mjs","bench:field-output":"node bench/field-output.mjs","bench:nested-forms":"node bench/nested-forms.mjs","bench:field-storage":"node bench/field-storage.mjs","test:field-validation":"node test/field-validation.test.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8bbb70e1-f6f9-448a-9cd4-07c2fbeb0b54"}},"repository":{"url":"git+https://github.com/GravityKit/MCP.git","type":"git"},"_npmVersion":"11.17.0","description":"Full-featured MCP server for Gravity Forms","directories":{},"_nodeVersion":"22.23.0","dependencies":{"axios":"^1.13.6","dotenv":"^16.4.7","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"publint":"^0.3.21"},"_npmOperationalInternal":{"tmp":"tmp/mcp_2.4.1_1782442270866_0.038870128022096884","host":"s3://npm-registry-packages-npm-production"}},"2.5.0":{"name":"@gravitykit/mcp","version":"2.5.0","keywords":["mcp","gravity-forms","rest-api","forms","entries","wordpress","integration","automation"],"author":{"name":"GravityKit"},"license":"GPL-2.0","_id":"@gravitykit/mcp@2.5.0","maintainers":[{"name":"gravitykit","email":"admin@gravitykit.com"}],"homepage":"https://github.com/GravityKit/MCP#readme","bugs":{"url":"https://github.com/GravityKit/MCP/issues"},"bin":{"gkmcp":"src/index.js"},"mcp":{"tools":{"feeds":7,"forms":6,"entries":6,"results":1,"submissions":2,"field_filters":1,"notifications":1},"features":["Gravity Forms REST API coverage","File upload support","Advanced search and filtering","Batch operations","Delete operation protection","Comprehensive error handling","Integration testing","Security validation"],"total_tools":24,"api_coverage":"100%","authentication":["OAuth 1.0a","Basic Authentication"]},"dist":{"shasum":"a8bd0fac2c6bc5871944bc18f2a6b780bdba3a5c","tarball":"https://registry.npmjs.org/@gravitykit/mcp/-/mcp-2.5.0.tgz","fileCount":33,"integrity":"sha512-JguFAZVda0sXkN6PqwjdQMti6uL/ADzvruvVVNgCd0fg8h8tzElb1t1iNAPVMHmzGirXGrxterl+QZzxwLI2gQ==","signatures":[{"sig":"MEQCIDyxNoG3rJzqjZ6wYlkhhvLxLl+D3oIdBVRg1pq/d5XjAiA8tYYHrbdGjqn6VeGEHw60i1Wh4E6rNas1STYXt9+QAQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCoYhOtat7oEbWpS+/WPlfPemxgs9eVuDp26dpGUskqvgIgY3Iv0NxZ05VdVVvfCm7lGsbryT1MNiPAuEvQbiaSAJc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gravitykit%2fmcp@2.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":449543},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"dcf28416ad0f605a6b1d9546e68532590ef3b345","scripts":{"dev":"node --watch src/index.js","test":"node test/integration.test.js","bench":"node bench/run.mjs","start":"node src/index.js","inspect":"npx @modelcontextprotocol/inspector node src/index.js","test:all":"npm run test:unit && npm run test:node && npm run test:auth && npm run test:forms && npm run test:entries && npm run test:feeds && npm run test:submissions && npm run test:validation && npm run test:field-validation && npm run test:tools && npm run test:views && npm test","check-env":"node scripts/check-env.js","lint:docs":"node scripts/check-docs.mjs","test:auth":"node test/authentication.test.js","test:live":"node test/live/gf-live.mjs","test:node":"node --test test/field-manager.test.js test/field-registry.test.js test/field-dependencies.test.js test/field-positioner.test.js test/helpers.test.js test/ability-catalog.test.js test/user-agent.test.js test/wp-client.test.js test/server-runtime.test.js test/entries-query.test.js test/entries-wire.test.js test/feeds-wire.test.js test/error-details.test.js test/results-wire.test.js test/client-hardening.test.js test/validation-hardening.test.js test/sanitize-hardening.test.js test/schema-hardening.test.js test/instructions.test.js test/logger-stdout.test.js test/server-lifecycle.test.js test/bench-grading.test.js test/bench-agent.test.js test/bench-cleanup.test.js test/bench-search-layout.test.js test/tool-description-claims.test.js","test:unit":"node test/run.js","bench:demo":"node bench/demo.mjs","build:mcpb":"node scripts/build-mcpb.mjs","test:feeds":"node test/feeds.test.js","test:forms":"node test/forms.test.js","test:tools":"node test/server-tools.test.js","test:views":"node test/views.test.js","lint:package":"publint","test:compact":"node test/compact.test.js","test:entries":"node test/entries.test.js","test:coverage":"echo 'Running all tests with coverage analysis' && npm run test:all","prepublishOnly":"npm run test:unit && npm run test:node && npm run test:field-validation && npm run test:views && npm run lint:package && npm run lint:docs","verify:schemas":"node scripts/verify-ability-schemas.mjs","setup-test-data":"node scripts/setup-test-data.js","test:validation":"node test/validation.test.js","test:submissions":"node test/submissions.test.js","verify:tool-names":"node scripts/verify-tool-names.mjs","bench:field-output":"node bench/field-output.mjs","bench:nested-forms":"node bench/nested-forms.mjs","bench:field-storage":"node bench/field-storage.mjs","test:field-validation":"node test/field-validation.test.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8bbb70e1-f6f9-448a-9cd4-07c2fbeb0b54"}},"overrides":{"fast-uri":"4.1.3"},"repository":{"url":"git+https://github.com/GravityKit/MCP.git","type":"git"},"_npmVersion":"11.19.1","description":"Full-featured MCP server for Gravity Forms","directories":{},"_nodeVersion":"22.23.2","dependencies":{"axios":"^1.18.0","dotenv":"^16.4.7","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","publint":"^0.3.21","@anthropic-ai/mcpb":"2.1.2"},"_npmOperationalInternal":{"tmp":"tmp/mcp_2.5.0_1789689921459_0.9685408715408714","host":"s3://npm-registry-packages-npm-production"}},"2.6.0":{"name":"@gravitykit/mcp","version":"2.6.0","keywords":["mcp","gravity-forms","rest-api","forms","entries","wordpress","integration","automation"],"author":{"name":"GravityKit"},"license":"GPL-2.0","_id":"@gravitykit/mcp@2.6.0","maintainers":[{"name":"gravitykit","email":"admin@gravitykit.com"}],"homepage":"https://github.com/GravityKit/MCP#readme","bugs":{"url":"https://github.com/GravityKit/MCP/issues"},"bin":{"gkmcp":"src/index.js"},"mcp":{"tools":{"feeds":7,"forms":6,"entries":6,"results":1,"submissions":2,"field_filters":1,"notifications":1},"features":["Gravity Forms REST API coverage","File upload support","Advanced search and filtering","Batch operations","Delete operation protection","Comprehensive error handling","Integration testing","Security validation"],"total_tools":24,"api_coverage":"100%","authentication":["OAuth 1.0a","Basic Authentication"]},"dist":{"shasum":"4681f78e88f3b638cb32266b9b0b2462756da8bb","tarball":"https://registry.npmjs.org/@gravitykit/mcp/-/mcp-2.6.0.tgz","fileCount":34,"integrity":"sha512-E4BSE5pZM5IqHiWe6CL60kqjjnoUGsHgV8qfNohXJWYhUGATbi5afDaxYiMC8UlAMg4YUoFNvDXo4E3Mq+6ypQ==","signatures":[{"sig":"MEQCIFp6tIHz7sgc2+GtyqWLUos2LKgpmR1T1eTnmhCnkt9YAiAj5YNQa4j0a30hkBC2bJaz/hik6S8HTS/MsOrPY7/Hhg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDNacxD9fvEapqTefJy+0afX9pVAOLEP35eD1JmQlZ4ewIhANszyyof0Em3Potfwm87eXXh0wjipg8u+nnKvBEdc1ke","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gravitykit%2fmcp@2.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":558176},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"e6bf8f88bd5f7b742d1d468f026bb2e1b7e9d695","scripts":{"dev":"node --watch src/index.js","test":"node test/integration.test.js","bench":"node bench/run.mjs","start":"node src/index.js","inspect":"npx @modelcontextprotocol/inspector node src/index.js","test:all":"npm run test:unit && npm run test:node && npm run test:auth && npm run test:forms && npm run test:entries && npm run test:feeds && npm run test:submissions && npm run test:validation && npm run test:field-validation && npm run test:tools && npm run test:views && npm test","check-env":"node scripts/check-env.js","lint:docs":"node scripts/check-docs.mjs","test:auth":"node test/authentication.test.js","test:live":"node test/live/gf-live.mjs","test:node":"node --test test/field-manager.test.js test/field-registry.test.js test/field-dependencies.test.js test/field-positioner.test.js test/field-list-types.test.js test/helpers.test.js test/ability-catalog.test.js test/user-agent.test.js test/wp-client.test.js test/server-runtime.test.js test/entries-query.test.js test/entries-wire.test.js test/feeds-wire.test.js test/error-details.test.js test/results-wire.test.js test/client-hardening.test.js test/validation-hardening.test.js test/sanitize-hardening.test.js test/schema-hardening.test.js test/instructions.test.js test/logger-stdout.test.js test/server-lifecycle.test.js test/bench-grading.test.js test/bench-agent.test.js test/bench-cleanup.test.js test/bench-search-layout.test.js test/tool-description-claims.test.js test/entry-writes.test.js test/rejected-paging.test.js test/entry-dates.test.js test/submission-field-values.test.js test/send-notifications.test.js test/server-owned-params.test.js test/merge-guard.test.js test/entry-value-shapes.test.js test/compound-value-shapes.test.js test/field-concurrency.test.js test/sensitive-entry-values.test.js test/suite-registration.test.js","test:unit":"node test/run.js","bench:demo":"node bench/demo.mjs","build:mcpb":"node scripts/build-mcpb.mjs","test:feeds":"node test/feeds.test.js","test:forms":"node test/forms.test.js","test:tools":"node test/server-tools.test.js","test:views":"node test/views.test.js","lint:package":"publint","test:compact":"node test/compact.test.js","test:entries":"node test/entries.test.js","test:coverage":"echo 'Running all tests with coverage analysis' && npm run test:all","prepublishOnly":"npm run test:unit && npm run test:node && npm run test:field-validation && npm run test:views && npm run lint:package && npm run lint:docs","verify:schemas":"node scripts/verify-ability-schemas.mjs","setup-test-data":"node scripts/setup-test-data.js","test:validation":"node test/validation.test.js","test:submissions":"node test/submissions.test.js","verify:tool-names":"node scripts/verify-tool-names.mjs","bench:field-output":"node bench/field-output.mjs","bench:nested-forms":"node bench/nested-forms.mjs","bench:field-storage":"node bench/field-storage.mjs","test:field-validation":"node test/field-validation.test.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"8bbb70e1-f6f9-448a-9cd4-07c2fbeb0b54"}},"overrides":{"fast-uri":"4.2.1","ip-address":"10.7.2"},"repository":{"url":"git+https://github.com/GravityKit/MCP.git","type":"git"},"_npmVersion":"11.21.0","description":"Full-featured MCP server for Gravity Forms","directories":{},"_nodeVersion":"22.23.3","dependencies":{"axios":"^1.20.0","dotenv":"^16.4.7","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","publint":"^0.3.21","@anthropic-ai/mcpb":"2.1.2"},"_npmOperationalInternal":{"tmp":"tmp/mcp_2.6.0_1790873676255_0.6355091099320951","host":"s3://npm-registry-packages-npm-production"}},"2.6.1":{"_id":"@gravitykit/mcp@2.6.1","bin":{"gkmcp":"src/index.js"},"mcp":{"tools":{"feeds":7,"forms":6,"entries":6,"results":1,"submissions":2,"field_filters":1,"notifications":1},"features":["Gravity Forms REST API coverage","File upload support","Advanced search and filtering","Batch operations","Delete operation protection","Comprehensive error handling","Integration testing","Security validation"],"total_tools":24,"api_coverage":"100%","authentication":["OAuth 1.0a","Basic Authentication"]},"bugs":{"url":"https://github.com/GravityKit/MCP/issues"},"dist":{"shasum":"57120893b6e52aef3268632d7bf9f014b9cc08ed","tarball":"https://registry.npmjs.org/@gravitykit/mcp/-/mcp-2.6.1.tgz","fileCount":34,"integrity":"sha512-jHUBzdSuIcVbD/6nbsrkWP9hs9Om0h0VfRFXlPm+hzUU7Mtrrq9l02rU74LZbEst4SJju9+M/eSQIk4z9gfbCg==","signatures":[{"sig":"MEQCIFXmHcQipEkiNcSW2wSZrDlQIC9mDKlcdaXISNWN2a0XAiAe4vMVvtYoCakojlxFxpsFM3eirJZuTK2URI5GdEiZCA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIH5C4NCFhANUr2C13hL873cjjcb9gjAKpwfgXEIubE2tAiEA2iAyO/RNU8fr/KWcDSXfDI8k6bAgRYQWqdU1Hs16m5w="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@gravitykit%2fmcp@2.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":564770},"main":"src/index.js","name":"@gravitykit/mcp","type":"module","author":{"name":"GravityKit"},"engines":{"node":">=18.0.0"},"gitHead":"d8a9f2fd4036d0ba2d30cb4ddc40ca92cc1a4b9d","license":"GPL-2.0","scripts":{"dev":"node --watch src/index.js","test":"node test/integration.test.js","bench":"node bench/run.mjs","start":"node src/index.js","inspect":"npx @modelcontextprotocol/inspector node src/index.js","test:all":"npm run test:unit && npm run test:node && npm run test:auth && npm run test:forms && npm run test:entries && npm run test:feeds && npm run test:submissions && npm run test:validation && npm run test:field-validation && npm run test:tools && npm run test:views && npm test","check-env":"node scripts/check-env.js","lint:docs":"node scripts/check-docs.mjs","test:auth":"node test/authentication.test.js","test:live":"node test/live/gf-live.mjs","test:node":"node --test test/field-manager.test.js test/field-registry.test.js test/field-dependencies.test.js test/field-positioner.test.js test/field-list-types.test.js test/helpers.test.js test/ability-catalog.test.js test/user-agent.test.js test/wp-client.test.js test/server-runtime.test.js test/entries-query.test.js test/entries-wire.test.js test/feeds-wire.test.js test/error-details.test.js test/results-wire.test.js test/client-hardening.test.js test/validation-hardening.test.js test/sanitize-hardening.test.js test/schema-hardening.test.js test/instructions.test.js test/logger-stdout.test.js test/server-lifecycle.test.js test/bench-grading.test.js test/bench-agent.test.js test/bench-cleanup.test.js test/bench-search-layout.test.js test/tool-description-claims.test.js test/entry-writes.test.js test/rejected-paging.test.js test/entry-dates.test.js test/submission-field-values.test.js test/send-notifications.test.js test/server-owned-params.test.js test/merge-guard.test.js test/entry-value-shapes.test.js test/compound-value-shapes.test.js test/field-concurrency.test.js test/sensitive-entry-values.test.js test/suite-registration.test.js test/update-field-input.test.js","test:unit":"node test/run.js","bench:demo":"node bench/demo.mjs","build:mcpb":"node scripts/build-mcpb.mjs","test:feeds":"node test/feeds.test.js","test:forms":"node test/forms.test.js","test:tools":"node test/server-tools.test.js","test:views":"node test/views.test.js","lint:package":"publint","test:compact":"node test/compact.test.js","test:entries":"node test/entries.test.js","test:coverage":"echo 'Running all tests with coverage analysis' && npm run test:all","prepublishOnly":"npm run test:unit && npm run test:node && npm run test:field-validation && npm run test:views && npm run lint:package && npm run lint:docs","verify:schemas":"node scripts/verify-ability-schemas.mjs","setup-test-data":"node scripts/setup-test-data.js","test:validation":"node test/validation.test.js","test:submissions":"node test/submissions.test.js","verify:tool-names":"node scripts/verify-tool-names.mjs","bench:field-output":"node bench/field-output.mjs","bench:nested-forms":"node bench/nested-forms.mjs","bench:field-storage":"node bench/field-storage.mjs","test:field-validation":"node test/field-validation.test.js"},"version":"2.6.1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"8bbb70e1-f6f9-448a-9cd4-07c2fbeb0b54"}},"homepage":"https://github.com/GravityKit/MCP#readme","keywords":["mcp","gravity-forms","rest-api","forms","entries","wordpress","integration","automation"],"overrides":{"fast-uri":"4.2.1","ip-address":"10.7.2"},"repository":{"url":"git+https://github.com/GravityKit/MCP.git","type":"git"},"_npmVersion":"11.21.0","description":"Build and maintain the applications your team needs using this MCP server for Gravity Forms and GravityKit.","directories":{},"maintainers":[{"name":"gravitykit","email":"admin@gravitykit.com"}],"_nodeVersion":"22.23.3","dependencies":{"axios":"^1.20.0","dotenv":"^16.4.7","@modelcontextprotocol/sdk":"^1.32.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.20.0","publint":"^0.3.21","@anthropic-ai/mcpb":"2.1.2"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp_2.6.1_1792019734795_0.15790313682354884"}}},"time":{"created":"2026-03-31T19:45:29.962Z","modified":"2026-10-14T23:15:35.253Z","2.0.0":"2026-03-31T19:45:30.225Z","2.1.0":"2026-04-01T03:54:01.630Z","2.1.1":"2026-04-03T15:59:00.335Z","2.2.0":"2026-06-16T05:05:08.225Z","2.3.0":"2026-06-16T15:07:24.544Z","2.4.0":"2026-06-19T10:40:49.242Z","2.4.1":"2026-06-26T02:51:11.017Z","2.5.0":"2026-09-18T00:05:21.568Z","2.6.0":"2026-10-01T16:54:36.352Z","2.6.1":"2026-10-14T23:15:34.876Z"},"bugs":{"url":"https://github.com/GravityKit/MCP/issues"},"author":{"name":"GravityKit"},"license":"GPL-2.0","homepage":"https://github.com/GravityKit/MCP#readme","keywords":["mcp","gravity-forms","rest-api","forms","entries","wordpress","integration","automation"],"repository":{"url":"git+https://github.com/GravityKit/MCP.git","type":"git"},"description":"Build and maintain the applications your team needs using this MCP server for Gravity Forms and GravityKit.","maintainers":[{"name":"gravitykit","email":"admin@gravitykit.com"}],"readme":"# GravityKit MCP\n\nA Model Context Protocol (MCP) server for Gravity Forms and GravityKit. Interact with your WordPress forms, feeds, and entries through any MCP-compatible client.\n\n[![npm version](https://img.shields.io/npm/v/@gravitykit/mcp.svg)](https://www.npmjs.com/package/@gravitykit/mcp)\n\nBuilt by [GravityKit](https://www.gravitykit.com) for the Gravity Forms community.\n\n## Features\n\n- **Full Gravity Forms Coverage**: 26 tools across forms, entries, feeds, notifications, submissions, and field management\n- **Smart Field Management**: Intelligent field operations with dependency tracking across all 46 Gravity Forms field types — entry-storage shapes and `entry_input` hints validated against real Gravity Forms + add-ons (round-tripped on GF 2.10.3)\n- **Advanced Search**: Complex filtering and searching capabilities for entries\n- **Form Submissions**: Full submission workflow with validation\n- **Add-on Integration**: Manage feeds for MailChimp, Stripe, PayPal, and more\n- **GravityKit Products**: dynamic tools auto-generated from the site's Foundation abilities catalog, each product under its own prefix: GravityView (`gv_*`), GravityBoard (`gb_*`), GravityMigrate (`gmig_*`) and Visual Merge Tags (`mergetags_*`)\n- **Type-Safe**: Comprehensive validation for all operations\n- **Battle-Tested**: Extensive offline + adversarial hardening suites, plus a self-seeding live harness that runs end-to-end against a real Gravity Forms site\n\n## Quick Start\n\n### Prerequisites\n- Node.js 18+\n- WordPress with Gravity Forms 2.5+\n- WordPress site over HTTPS (recommended) — local `http://` dev sites (localhost, `*.test`, `*.local`) work too\n\n### Installation\n\nNo clone or `npm install` needed — `npx` runs the published package on demand. (To run from a local checkout for development, see [Contributing](#contributing).)\n\n1. **Enable the Gravity Forms REST API** (one-time, required for any credential type):\n   - Go to **Forms → Settings → REST API** and check **Enable access to the API** — Gravity Forms doesn't register its REST routes without it.\n\n2. **Create credentials** in WordPress (pick one):\n\n   **Application password (recommended):**\n   - Go to **Users → Profile → Application Passwords**\n   - Name it (e.g. `GravityKit MCP`) and click **Add New Application Password**\n   - Copy the generated password. Your username + this password are your credentials, and access follows your WordPress capabilities. On sites running GravityKit Foundation, the same credential also powers the GravityKit product tools.\n\n   **Gravity Forms API key (for scoped access, e.g. a read-only key):**\n   - On the same **Forms → Settings → REST API** screen, click **Add Key**\n   - Choose the user and permission level, then save the Consumer Key (`ck_…`) and Secret (`cs_…`)\n\n3. **Add to your MCP client.**\n\n   **Claude Desktop — one click.** Download **[gravitykit-mcp.mcpb](https://github.com/GravityKit/MCP/releases/latest/download/gravitykit-mcp.mcpb)** and open it. Claude Desktop installs the extension and asks for your site address, username and application password — there is no config file to edit, and no Node install to keep current. That link always points at the newest release.\n\n   **Every other client — edit the config.** For Claude Desktop this is the manual equivalent of the above; edit `~/Library/Application Support/Claude/claude_desktop_config.json`:\n   ```json\n   {\n     \"mcpServers\": {\n       \"gravitykit-mcp\": {\n         \"command\": \"npx\",\n         \"args\": [\"-y\", \"@gravitykit/mcp\"],\n         \"env\": {\n           \"GRAVITY_FORMS_BASE_URL\": \"https://yoursite.com\",\n           \"GRAVITY_FORMS_CONSUMER_KEY\": \"your_wp_username\",\n           \"GRAVITY_FORMS_CONSUMER_SECRET\": \"xxxx xxxx xxxx xxxx xxxx xxxx\"\n         }\n       }\n     }\n   }\n   ```\n   Then restart Claude Desktop — `npx` fetches and runs `@gravitykit/mcp` on demand. Notes:\n   - Prefer a Gravity Forms key pair? Use `\"GRAVITY_FORMS_CONSUMER_KEY\": \"ck_…\"` and `\"GRAVITY_FORMS_CONSUMER_SECRET\": \"cs_…\"`.\n   - Local dev with self-signed certs: add `\"GRAVITY_FORMS_ALLOW_SELF_SIGNED_CERTS\": \"true\"` to the `env` block.\n   - Pin a version with `@gravitykit/mcp@x.y.z` if you don't want `npx` tracking latest.\n   - The GravityKit product tools (`gv_*`, `gmig_*`, …) reuse the `GRAVITY_FORMS_*` values above, so they act on the same site. Set `GRAVITYKIT_WP_URL`, `GRAVITYKIT_WP_USERNAME` and `GRAVITYKIT_WP_APP_PASSWORD` in the same `env` block only when the WordPress root differs from the Gravity Forms URL, or to use a separate credential.\n\n## Available Tools\n\nTwo planes: **Gravity Forms** (`gf_*`) — 26 static tools, listed whenever Gravity Forms credentials are valid — and **GravityKit** — dynamic tools generated from the Foundation catalog when it's active, where each product registers tools under its own prefix (`gv_*`, `gb_*`, `gmig_*`, `mergetags_*`). The `gk_reload_abilities` tool reloads the GravityKit catalog. The two planes are independent: a Gravity-Forms-only site lists just `gf_*`; a GravityKit site without Gravity Forms REST keys still lists its product tools.\n\n### Forms (6 tools)\n- `gf_list_forms`    - List forms (optionally filter to specific IDs via `include`)\n- `gf_get_form`      - Get complete form configuration\n- `gf_create_form`   - Create new forms with fields\n- `gf_update_form`   - Update existing forms\n- `gf_delete_form`   - Delete forms — Trash by default (recoverable), `force=true` to delete permanently (requires ALLOW_DELETE=true)\n- `gf_validate_form` - Validate form data\n\n### Entries (5 tools)\n- `gf_list_entries` - List/search entries: pagination (`page_size`/`current_page`/`offset`), sorting (`key`/`direction`/`is_numeric`), field-filter search (`mode` any/all, operators incl. `IN`/`NOT IN`), `include` (fetch by ID, any status), `exclude`, `status`, and multiple forms at once\n- `gf_get_entry`    - Get specific entry details\n- `gf_create_entry` - Create new entries\n- `gf_update_entry` - Update existing entries\n- `gf_delete_entry` - Delete entries — Trash by default (recoverable), `force=true` to delete permanently (requires ALLOW_DELETE=true)\n\n### Field Operations (4 tools)\n- `gf_add_field`        - Add fields with intelligent positioning\n- `gf_update_field`     - Update fields with dependency checking\n- `gf_delete_field`     - Delete fields with cascade options\n- `gf_list_field_types` - List the 46 supported field types (summary by default; `detail=true` for full metadata, `include_variants=true` for variants)\n\n### Submissions (2 tools)\n- `gf_submit_form_data`    - Submit forms with full processing\n- `gf_validate_submission` - Validate a submission without creating an entry (returns `validation_messages`)\n\n### Add-ons (6 tools)\n- `gf_list_feeds`       - List all add-on feeds\n- `gf_get_feed`         - Get specific feed configuration\n- `gf_create_feed`      - Create new add-on feeds\n- `gf_update_feed`      - Update existing feeds\n- `gf_patch_feed`       - Partially update feed properties\n- `gf_delete_feed`      - Delete add-on feeds\n\n### Notifications (1 tool)\n- `gf_send_notifications` - Send an entry's notifications — specific IDs, or all for an event\n\n### Utilities (2 tools)\n- `gf_get_field_filters` - List the available field filters for a form\n- `gf_get_results`       - Get aggregated results for Quiz/Poll/Survey forms\n\n### GravityKit Products (dynamic)\n\nWhen [GravityKit Foundation](https://www.gravitykit.com) is active on the connected site, additional tools are generated at runtime from its Abilities catalog, each product under its own prefix. Which tools you get depends on the GravityKit products installed and their versions.\n\n| Product | Prefix | What the tools do |\n| --- | --- | --- |\n| [GravityView](https://www.gravitykit.com/products/gravityview/) | `gv_*` | Create, configure, clone and delete Views (`gv_view_create`, `gv_view_config_apply`, `gv_view_delete`); add and edit fields, widgets, search bars and grid rows (add a search bar in one call with `gv_search_bar_add`); discover layouts, widgets and field settings (`gv_layouts_list`, `gv_field_type_schema_get`). |\n| [GravityBoard](https://www.gravitykit.com/products/gravityboard/) | `gb_*` | Create, update and delete boards (`gb_board_create`); add, rename, reorder and delete lanes (`gb_lane_create`, `gb_lane_move`); add, edit, move and delete cards (`gb_card_create`, `gb_card_move`); list boards and cards (`gb_boards_list`, `gb_cards_list`). Each board's own permissions apply. Needs the GravityBoard release after 1.5.0. |\n| [GravityMigrate](https://www.gravitykit.com/products/gravitymigrate/) | `gmig_*` | List the form plugins and forms on the site (`gmig_platforms_list`, `gmig_forms_list`); report what a migration would do without changing anything (`gmig_migration_analyze`); migrate forms to Gravity Forms (`gmig_migration_run`); export, inspect and import bundles (`gmig_bundle_export`, `gmig_bundle_import`). |\n| [Visual Merge Tags](https://www.gravitykit.com/visual-merge-tags/), in GravityKit Foundation | `mergetags_*` | List the merge tags a form offers (`mergetags_catalog_get`), and render merge tags against a real entry (`mergetags_preview_entries_list`, `mergetags_preview_render`). |\n\nTools that delete or overwrite data, such as `gv_view_delete` or `gb_board_delete`, stay disabled until you name them in `GRAVITYKIT_MCP_ALLOW_DESTRUCTIVE`: an exact tool name, a product prefix such as `gb`, or `all`.\n\nUse each product's `*_list` tools to see what exists on your site, and `gk_reload_abilities` to reload the catalog after activating or updating GravityKit products.\n\n## Usage Examples\n\n### Search & paginate entries\n```javascript\n// Search + sort + paginate, across one or more forms at once\nawait mcp.call('gf_list_entries', {\n  form_ids: [1, 2],\n  search: {\n    field_filters: [\n      { key: \"1.3\", value: \"John\", operator: \"contains\" },\n      { key: \"id\", value: [101, 102, 103], operator: \"IN\" }   // multi-value membership\n    ],\n    mode: \"any\"                                                // any = OR, all = AND\n  },\n  sorting: { key: \"date_created\", direction: \"desc\", is_numeric: false },\n  paging: { page_size: 25, current_page: 2 }                   // or { offset: 25, page_size: 25 }\n});\n\n// Fetch specific entries by ID (returns any status, including trashed)\nawait mcp.call('gf_list_entries', { include: [101, 102] });\n```\n\n### Add Fields\n```javascript\nawait mcp.call('gf_add_field', {\n  form_id: 1,\n  field_type: 'email',\n  properties: {\n    label: 'Email Address',\n    isRequired: true\n  }\n});\n```\n\n### Submit Forms\n```javascript\nawait mcp.call('gf_submit_form_data', {\n  form_id: 1,\n  input_1: \"John Doe\",\n  input_2: \"john@example.com\",\n  input_3: \"Message content\"\n});\n```\n\n## Configuration\n\nSet these as environment variables — in your MCP client's `env` block (the `npx` setup above) or in a `.env` file when running from a local clone.\n\n### Required Environment Variables\n- `GRAVITY_FORMS_CONSUMER_KEY`    - WordPress username (app-password setup) or GF consumer key (`ck_…`)\n- `GRAVITY_FORMS_CONSUMER_SECRET` - Application password or GF consumer secret (`cs_…`)\n- `GRAVITY_FORMS_BASE_URL`        - WordPress site URL\n\n### Optional Settings\n- `GRAVITY_FORMS_AUTH_METHOD`          - Override auto-selection: `basic` or `oauth`/`oauth1` (normally leave unset)\n- `GRAVITY_FORMS_ALLOW_HTTP_BASIC_AUTH=false` - Allow Basic auth to a REMOTE plain-HTTP host (credentials visible to the network)\n- `GRAVITY_FORMS_ALLOW_DELETE=false`   - Enable delete operations\n- `GRAVITY_FORMS_TIMEOUT=30000`        - Request timeout (ms)\n- `GRAVITY_FORMS_MAX_RETRIES=3`        - Retries for the abilities catalog fetch (429/502/503/504 and network errors). Ability calls are never retried: a write is not idempotent by contract.\n- `GRAVITY_FORMS_DEBUG=false`          - Enable debug logging\n- `GRAVITY_FORMS_ALLOW_SELF_SIGNED_CERTS=false`  - Allow self-signed SSL certificates (local dev only)\n\n### GravityKit Product Tools\n\nThe GravityKit product tools reach the same site over the WordPress REST Abilities API, so on a single install **no extra configuration is needed** — they reuse your `GRAVITY_FORMS_*` credentials (a WordPress username + application password). Override only if the WordPress root differs from the Gravity Forms URL, or to use a separate credential:\n\n- `GRAVITYKIT_WP_URL`          - WordPress site URL (defaults to `GRAVITY_FORMS_BASE_URL`)\n- `GRAVITYKIT_WP_USERNAME`     - WordPress username (defaults to `GRAVITY_FORMS_CONSUMER_KEY`)\n- `GRAVITYKIT_WP_APP_PASSWORD` - Application password (defaults to `GRAVITY_FORMS_CONSUMER_SECRET`)\n\n`GRAVITYKIT_WP_URL` is the only setting that can put the product tools on a different host from the Gravity Forms tools. When it does, the server says so on startup and `gk_reload_abilities` reports both sites, so one session never reads one install and writes another without telling you.\n\nThese tools appear only when GravityKit Foundation is active on the connected site. They authenticate with a WordPress application password over Basic auth, so — like the Gravity Forms plane — they refuse a remote plain-HTTP URL unless `GRAVITY_FORMS_ALLOW_HTTP_BASIC_AUTH=true` (HTTPS and local URLs are always fine).\n\n### Authentication Flow\n\nThe client picks the right transport from the shape of your credentials — you normally don't configure anything:\n\n- **Application password** (username + app password) → **Basic Authentication** over HTTPS or any local URL (localhost, `*.test`, `*.local`). WordPress core authenticates the user; Gravity Forms enforces their capabilities.\n- **Gravity Forms key pair** (`ck_…`/`cs_…`) over HTTPS → **Basic Authentication**.\n- **Gravity Forms key pair** over plain HTTP → **OAuth 1.0a**, automatically — Gravity Forms only accepts key-pair Basic auth over HTTPS, so OAuth is the only transport that works there.\n- **Remote plain-HTTP host** → OAuth for key pairs; Basic requires the explicit `GRAVITY_FORMS_ALLOW_HTTP_BASIC_AUTH=true` opt-in and logs a warning.\n\nSet `GRAVITY_FORMS_AUTH_METHOD` only to override the auto-selection. Whatever the transport, access is limited to the WordPress user's capabilities (or the API key's permission level).\n\n## Test Environment Configuration\n\nThe server supports **dual environment configuration** to safely test without affecting production data.\n\n### Setting Up Test Environment\n\nAdd test site credentials to your `.env` file alongside production credentials:\n\n```env\n# Production/Live Site\nGRAVITY_FORMS_CONSUMER_KEY=ck_live_key\nGRAVITY_FORMS_CONSUMER_SECRET=cs_live_secret\nGRAVITY_FORMS_BASE_URL=https://www.yoursite.com\n\n# Test/Staging Site (recommended for safe testing)\nGRAVITY_FORMS_TEST_CONSUMER_KEY=ck_test_key\nGRAVITY_FORMS_TEST_CONSUMER_SECRET=cs_test_secret\nGRAVITY_FORMS_TEST_BASE_URL=https://staging.yoursite.com\n\n# Enable test mode (optional)\nGRAVITYKIT_MCP_TEST_MODE=true\n```\n\n### Test Environment Features\n\nWhen using test configuration:\n- **Automatic test form prefixing** - All test forms created with \"TEST_\" prefix\n- **Auto-cleanup** - Test forms automatically removed after testing\n- **Environment isolation** - Complete separation from production data\n- **Safe experimentation** - Test destructive operations without risk\n\n### Using Test Mode\n\n```bash\n# Verify test environment configuration\nGRAVITYKIT_MCP_TEST_MODE=true npm run check-env\n\n# Create test data on test site (requires test credentials)\nnpm run setup-test-data\n\n# Run all tests against test site (auto-detects test credentials)\nnpm test\n\n# Interactive testing with MCP Inspector (test mode)\nGRAVITYKIT_MCP_TEST_MODE=true npm run inspect\n\n# Run specific test suites against test site\nNODE_ENV=test npm run test:forms\nNODE_ENV=test npm run test:entries\nNODE_ENV=test npm run test:submissions\n```\n\n### Test Mode Detection\n\nThe server automatically uses test configuration when:\n1. `GRAVITYKIT_MCP_TEST_MODE=true` is set (or legacy `GRAVITYMCP_TEST_MODE=true`)\n2. OR `NODE_ENV=test` is set\n3. OR test credentials are configured and test commands are run\n\n### Test Safety Features\n\nThe server includes multiple safety mechanisms to prevent accidental production data contamination:\n\n1. **Test Credential Requirements** - The `setup-test-data` script will **fail by default** if test credentials aren't configured\n2. **No Silent Fallbacks** - Scripts that create or modify data won't silently fall back to production\n3. **Explicit Production Override** - Production usage requires scary `--force-production` flag with warnings\n4. **Clear Error Messages** - Helpful guidance on configuring test credentials when missing\n5. **Test Data Prefixing** - All test forms automatically prefixed with \"TEST_\" for easy identification\n\n### Best Practices\n\n1. **Always configure a test environment** - Use a staging/test WordPress site\n2. **Never test on production first** - Validate on test site before production\n3. **Keep test credentials separate** - Different API keys for test vs live\n4. **Use prefixes for test data** - Makes cleanup easy and identification clear\n5. **Enable debug mode for testing** - `GRAVITY_FORMS_DEBUG=true` for detailed logs\n6. **Review safety warnings** - Take warnings seriously when they appear\n\n## Testing\n\n```bash\n# Run everything (offline suites + live integration)\nnpm run test:all\n\n# Offline suites\nnpm run test:unit         # custom-runner unit tests\nnpm run test:node         # node:test units (field ops, helpers, query/wire builders, *-hardening adversarial suites, …)\nnpm run test:views        # GravityView inspector / validator\nnpm run test:forms        # per-endpoint suites: also test:entries, test:feeds, test:submissions, …\n\n# Live, end-to-end against a real Gravity Forms site (self-seeds its own throwaway\n# forms/entries, then cleans up). Set credentials and run:\nLIVE_GF_URL=https://example.com LIVE_GF_USER=admin LIVE_GF_PW='xxxx xxxx ...' npm run test:live\n\n# Legacy live integration suite\nnpm test\n```\n\nDev-only benchmark suites (not shipped in the npm package, require a live test site):\n\n```bash\n# AI release gate — drives the full MCP surface through a small model and grades\n# real Gravity Forms / GravityView state (needs the `claude` CLI; slow, token-costly)\nnpm run bench\n\n# Deterministic field-output smoke suite\nnpm run bench:field-output\n\n# Field-storage validation against real add-ons\nnpm run bench:field-storage\n\n# Front-end render test: a parent View shows a nested form's Summary Fields\nnpm run bench:nested-forms\n```\n\n## Security\n\n- **HTTPS Required**: All API communication encrypted\n- **Delete Protection**: Destructive operations disabled by default; deletes default to Trash (recoverable)\n- **Input Validation**: All inputs validated before API calls\n- **Credential Masking**: Secrets and HTTP Basic credentials masked in logs\n\n## Troubleshooting\n\n### Connection Issues\n- Verify credentials with `npm run check-env`\n- Ensure WordPress site is HTTPS-enabled\n- Check REST API is enabled in Gravity Forms settings\n\n### Local Development with Self-Signed Certificates\n\nIf you're using a local development environment (Laravel Valet, MAMP, Local WP, etc.) with self-signed SSL certificates, you may encounter authentication errors. To fix this, set:\n\n```\nGRAVITY_FORMS_ALLOW_SELF_SIGNED_CERTS=true\n```\n\nin your MCP client's `env` block (`\"GRAVITY_FORMS_ALLOW_SELF_SIGNED_CERTS\": \"true\"`), or in `.env` when running from a local clone.\n\n**⚠️ Security Warning**: Only disable SSL certificate verification for local development environments. Never use this setting in production!\n\n### Authentication Errors\n- Confirm API keys are correct\n- Verify user has appropriate Gravity Forms capabilities\n- Check Forms → Settings → REST API for key status\n- For local development, ensure `GRAVITY_FORMS_ALLOW_SELF_SIGNED_CERTS=true` is set if using self-signed certificates\n\n### Debug Mode\nEnable detailed logging:\n```env\nGRAVITY_FORMS_DEBUG=true\n```\n\n## Support\n\n- [GitHub Issues](https://github.com/GravityKit/MCP/issues)\n- [Gravity Forms Documentation](https://docs.gravityforms.com/rest-api-v2/)\n- [MCP Documentation](https://modelcontextprotocol.io/)\n\n## License\n\nGPL-2.0 License - see [LICENSE](LICENSE) file for details.\n\n## Contributing\n\nWe welcome contributions from the Gravity Forms community! Whether you're building add-ons, managing forms, or integrating with other services, your insights and code contributions can help everyone.\n\n### How to Contribute\n\n1. **Fork the repository** - Start by creating your own copy\n2. **Create a feature branch** - Keep your changes organized\n3. **Add tests** - Ensure reliability with test coverage\n4. **Run the test suite** - Verify everything works with `npm run test:all`\n5. **Submit a pull request** - Share your improvements with the community\n\n### Automated Publishing\n\nThis repository uses GitHub Actions to automatically publish to npm when a new version is tagged:\n\n1. Update the version in `package.json`\n2. Commit your changes\n3. Create and push a tag: `git tag v1.0.5 && git push origin v1.0.5`\n4. GitHub Actions will automatically publish to npm\n\n**Note for maintainers**: Ensure the `NPM_TOKEN` secret is configured in the repository settings for automated publishing to work.\n\n### Contribution Ideas\n\n**For Add-on Developers:**\n- Add support for your add-on's feed types\n- Enhance field type definitions for custom fields\n- Share integration patterns that work well\n\n**For Form Builders:**\n- Improve field validation logic\n- Add helper utilities for common tasks\n- Enhance error messages and debugging\n\n**For Everyone:**\n- Report bugs or suggest features via [GitHub Issues](https://github.com/GravityKit/MCP/issues)\n- Improve documentation and examples\n- Share your use cases and workflows\n\nYour contributions help make Gravity Forms automation better for everyone. Let's build something great together!\n","readmeFilename":"README.md"}