{"_id":"@aiondadotcom/mcp-salesforce","_rev":"20-50d132049c979c3bf1658aab4f749af8","name":"@aiondadotcom/mcp-salesforce","dist-tags":{"latest":"1.2.5"},"versions":{"1.0.0":{"name":"@aiondadotcom/mcp-salesforce","version":"1.0.0","keywords":["mcp","model-context-protocol","salesforce","oauth","crm","api"],"author":{"name":"AiondaDotCom"},"license":"MIT","_id":"@aiondadotcom/mcp-salesforce@1.0.0","maintainers":[{"name":"stephanferraro","email":"stephan.ferraro@aionda.com"}],"homepage":"https://github.com/AiondaDotCom/mcp-salesforce#readme","bugs":{"url":"https://github.com/AiondaDotCom/mcp-salesforce/issues"},"os":["darwin"],"bin":{"mcp-salesforce":"src/index.js","mcp-salesforce-setup":"bin/setup.js"},"dist":{"shasum":"6d356d141d480ca5cceda03cf4a4b298e2656411","tarball":"https://registry.npmjs.org/@aiondadotcom/mcp-salesforce/-/mcp-salesforce-1.0.0.tgz","fileCount":27,"integrity":"sha512-aEhQuXvaHSmY5Znuc0xvWCFxY+7WurQTKiUxLDuZIgET0SkbfTP16PfPIOzY9u0LasBsSKnqWiRDGFFofUC4GQ==","signatures":[{"sig":"MEUCIQC17eFkrLbyL8iGB0X3+Jx6gsjWRjxoBdwiqgso6xfV4gIgWcsxlto0AxNruksDwewBrtNXyVDRzXfhaYEoLWCFsC8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261020},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"44012d956db213c3c49b9c8ea7f52cc3550a9b2f","scripts":{"dev":"node --watch src/index.js","lint":"eslint src/ bin/","test":"node --test","setup":"node bin/setup.js","start":"node src/index.js","status":"node bin/status.js","config-help":"node bin/config-helper.js"},"_npmUser":{"name":"stephanferraro","email":"stephan.ferraro@aionda.com"},"repository":{"url":"git+https://github.com/AiondaDotCom/mcp-salesforce.git","type":"git"},"_npmVersion":"10.9.2","description":"Model Context Protocol (MCP) server for Salesforce integration using OAuth authentication","directories":{},"_nodeVersion":"22.16.0","dependencies":{"open":"^8.4.2","dotenv":"^16.3.1","express":"^4.18.2","jsforce":"^1.11.1","keychain":"^1.5.0","node-fetch":"^3.3.2","@modelcontextprotocol/sdk":"^0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.55.0","nodemon":"^3.0.2"},"_npmOperationalInternal":{"tmp":"tmp/mcp-salesforce_1.0.0_1749128407650_0.6911933908967056","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@aiondadotcom/mcp-salesforce","version":"1.0.1","keywords":["mcp","model-context-protocol","salesforce","oauth","crm","api"],"author":{"name":"AiondaDotCom"},"license":"MIT","_id":"@aiondadotcom/mcp-salesforce@1.0.1","maintainers":[{"name":"stephanferraro","email":"stephan.ferraro@aionda.com"}],"homepage":"https://github.com/AiondaDotCom/mcp-salesforce#readme","bugs":{"url":"https://github.com/AiondaDotCom/mcp-salesforce/issues"},"os":["darwin"],"bin":{"mcp-salesforce":"src/index.js"},"dist":{"shasum":"37d1224d27351926558f731a8a5e60e8ef983972","tarball":"https://registry.npmjs.org/@aiondadotcom/mcp-salesforce/-/mcp-salesforce-1.0.1.tgz","fileCount":27,"integrity":"sha512-JYU4o2jrXHLYjkV6GNmZ5Lz4KZ9SQ9X9RHkKM1JlZ4LSFBSY9Lnk9JeBkH9MbimoAfzLhPt2GnmeDc7UlRRl4A==","signatures":[{"sig":"MEUCIQD8SwgD9ptCdlmRBgq6Vjsox40p3iHPU4JvRnN9nkvrowIgYq2Eb7O5QKh8T8DuGGCSTDF/mkdguwMqpNt8EgThoWA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261000},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"5d174394d0414624edecbbeb27a78f842f42b1f8","scripts":{"dev":"node --watch src/index.js","lint":"eslint src/ bin/","test":"node --test","setup":"node bin/setup.js","start":"node src/index.js","status":"node bin/status.js","config-help":"node bin/config-helper.js"},"_npmUser":{"name":"stephanferraro","email":"stephan.ferraro@aionda.com"},"repository":{"url":"git+https://github.com/AiondaDotCom/mcp-salesforce.git","type":"git"},"_npmVersion":"10.9.2","description":"Model Context Protocol (MCP) server for Salesforce integration using OAuth authentication","directories":{},"_nodeVersion":"22.16.0","dependencies":{"open":"^8.4.2","dotenv":"^16.3.1","express":"^4.18.2","jsforce":"^1.11.1","keychain":"^1.5.0","node-fetch":"^3.3.2","@modelcontextprotocol/sdk":"^0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.55.0","nodemon":"^3.0.2"},"_npmOperationalInternal":{"tmp":"tmp/mcp-salesforce_1.0.1_1749128695620_0.9754043143373723","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@aiondadotcom/mcp-salesforce","version":"1.0.2","keywords":["mcp","model-context-protocol","salesforce","oauth","crm","api"],"author":{"name":"AiondaDotCom"},"license":"MIT","_id":"@aiondadotcom/mcp-salesforce@1.0.2","maintainers":[{"name":"stephanferraro","email":"stephan.ferraro@aionda.com"}],"homepage":"https://github.com/AiondaDotCom/mcp-salesforce#readme","bugs":{"url":"https://github.com/AiondaDotCom/mcp-salesforce/issues"},"os":["darwin"],"dist":{"shasum":"5a82ac04f014c049844bf850c166c38a643597e0","tarball":"https://registry.npmjs.org/@aiondadotcom/mcp-salesforce/-/mcp-salesforce-1.0.2.tgz","fileCount":27,"integrity":"sha512-7FrmQ04bnnmx9eaFs9rBzupz/TJ+Sj8rHudxdsSJGSMF/uZ0TSGi3eLNkc9Dwo8efDlDJwnwbgLQBYUBWE+62g==","signatures":[{"sig":"MEUCIAyIEZ124tnpQLDfmjWwW9e4D3tNhfHEnd7qaQbgJBYPAiEAtqayPt0r2uDCq8mxSjsbrPerJvJweKz2TexB2k3D6fI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":260975},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"5b1047b5777c230082a74bec089edb0dd0c27528","scripts":{"dev":"node --watch src/index.js","lint":"eslint src/ bin/","test":"node --test","setup":"node bin/setup.js","start":"node src/index.js","status":"node bin/status.js","config-help":"node bin/config-helper.js"},"_npmUser":{"name":"stephanferraro","email":"stephan.ferraro@aionda.com"},"repository":{"url":"git+https://github.com/AiondaDotCom/mcp-salesforce.git","type":"git"},"_npmVersion":"10.9.2","description":"Model Context Protocol (MCP) server for Salesforce integration using OAuth authentication","directories":{},"_nodeVersion":"22.16.0","dependencies":{"open":"^8.4.2","dotenv":"^16.3.1","express":"^4.18.2","jsforce":"^1.11.1","keychain":"^1.5.0","node-fetch":"^3.3.2","@modelcontextprotocol/sdk":"^0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.55.0","nodemon":"^3.0.2"},"_npmOperationalInternal":{"tmp":"tmp/mcp-salesforce_1.0.2_1749128793943_0.09009417455353219","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@aiondadotcom/mcp-salesforce","version":"1.0.3","keywords":["mcp","model-context-protocol","salesforce","oauth","crm","api"],"author":{"name":"AiondaDotCom"},"license":"MIT","_id":"@aiondadotcom/mcp-salesforce@1.0.3","maintainers":[{"name":"stephanferraro","email":"stephan.ferraro@aionda.com"}],"homepage":"https://github.com/AiondaDotCom/mcp-salesforce#readme","bugs":{"url":"https://github.com/AiondaDotCom/mcp-salesforce/issues"},"os":["darwin"],"bin":{"mcp-salesforce":"src/index.js"},"dist":{"shasum":"b6103ade104bdcab3dc0414bfb728a99e6354e42","tarball":"https://registry.npmjs.org/@aiondadotcom/mcp-salesforce/-/mcp-salesforce-1.0.3.tgz","fileCount":27,"integrity":"sha512-Dt4nyM9j3kv7WQ6URDQ/odeFDbwCDQNs4QHALS8OCEeF7arQO9NhV5flpxgUTXM5xAyazjsyrOhOmWapaSjCJQ==","signatures":[{"sig":"MEYCIQCeXVUiNrgZE3JPXDGGYYNs+4eLDU4bnchuEMsZ4tLANQIhAK9iGLNFqwUEQvLp6LVxQSAbevRiSwCvSs4urvLxOomE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261028},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"5b1047b5777c230082a74bec089edb0dd0c27528","scripts":{"dev":"node --watch src/index.js","lint":"eslint src/ bin/","test":"node --test","setup":"node bin/setup.js","start":"node src/index.js","status":"node bin/status.js","config-help":"node bin/config-helper.js"},"_npmUser":{"name":"stephanferraro","email":"stephan.ferraro@aionda.com"},"repository":{"url":"git+https://github.com/AiondaDotCom/mcp-salesforce.git","type":"git"},"_npmVersion":"10.9.2","description":"Model Context Protocol (MCP) server for Salesforce integration using OAuth authentication","directories":{},"_nodeVersion":"22.16.0","dependencies":{"open":"^8.4.2","dotenv":"^16.3.1","express":"^4.18.2","jsforce":"^1.11.1","keychain":"^1.5.0","node-fetch":"^3.3.2","@modelcontextprotocol/sdk":"^0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.55.0","nodemon":"^3.0.2"},"_npmOperationalInternal":{"tmp":"tmp/mcp-salesforce_1.0.3_1749129157222_0.4455965778266131","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@aiondadotcom/mcp-salesforce","version":"1.0.4","keywords":["mcp","model-context-protocol","salesforce","oauth","crm","api"],"author":{"name":"AiondaDotCom"},"license":"MIT","_id":"@aiondadotcom/mcp-salesforce@1.0.4","maintainers":[{"name":"stephanferraro","email":"stephan.ferraro@aionda.com"}],"homepage":"https://github.com/AiondaDotCom/mcp-salesforce#readme","bugs":{"url":"https://github.com/AiondaDotCom/mcp-salesforce/issues"},"os":["darwin"],"bin":{"mcp-salesforce":"src/index.js"},"dist":{"shasum":"b0159413be16f0fafb6e0fb3e1e8e515a06a455e","tarball":"https://registry.npmjs.org/@aiondadotcom/mcp-salesforce/-/mcp-salesforce-1.0.4.tgz","fileCount":27,"integrity":"sha512-1jk+F9me0mkXBDLzKJoLNriaqKbWSbZ60zBMHvphNN024TT4YyJLzPtOissBPIuFbtmnW6CmHaRpjbcY5lBLLA==","signatures":[{"sig":"MEQCIG8WfmZdSMoko7GF0jr2xcrPxYisAe+C33J7ZCmUg4rzAiBvU8+REuvPTIUawVSdByTErFhJnm6yudiXJCD2JTxFUg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261080},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"5b1047b5777c230082a74bec089edb0dd0c27528","scripts":{"dev":"node --watch src/index.js","lint":"eslint src/ bin/","test":"node --test","setup":"node bin/setup.js","start":"node src/index.js","status":"node bin/status.js","config-help":"node bin/config-helper.js"},"_npmUser":{"name":"stephanferraro","email":"stephan.ferraro@aionda.com"},"repository":{"url":"git+https://github.com/AiondaDotCom/mcp-salesforce.git","type":"git"},"_npmVersion":"10.9.2","description":"Model Context Protocol (MCP) server for Salesforce integration using OAuth authentication","directories":{},"_nodeVersion":"22.16.0","dependencies":{"open":"^8.4.2","dotenv":"^16.3.1","express":"^4.18.2","jsforce":"^1.11.1","keychain":"^1.5.0","node-fetch":"^3.3.2","@modelcontextprotocol/sdk":"^0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.55.0","nodemon":"^3.0.2"},"_npmOperationalInternal":{"tmp":"tmp/mcp-salesforce_1.0.4_1749129281191_0.08559037292567484","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@aiondadotcom/mcp-salesforce","version":"1.0.5","keywords":["mcp","model-context-protocol","salesforce","oauth","crm","api"],"author":{"name":"AiondaDotCom"},"license":"MIT","_id":"@aiondadotcom/mcp-salesforce@1.0.5","maintainers":[{"name":"stephanferraro","email":"stephan.ferraro@aionda.com"}],"homepage":"https://github.com/AiondaDotCom/mcp-salesforce#readme","bugs":{"url":"https://github.com/AiondaDotCom/mcp-salesforce/issues"},"os":["darwin"],"bin":{"mcp-salesforce":"src/index.js"},"dist":{"shasum":"612620d5a3667396979eb0aa1817e4822eda507f","tarball":"https://registry.npmjs.org/@aiondadotcom/mcp-salesforce/-/mcp-salesforce-1.0.5.tgz","fileCount":27,"integrity":"sha512-+Hq2EEX1XE60pICOUKdUb0Gf+zpCeKgrY1qVQvoK3vgPwRq3b53BMIaFfkHJ2RgrY4/bBeBRgvSzsPIO0fi1lw==","signatures":[{"sig":"MEUCIB9i9sWMb6iWPwF366vXYF5N2v0XiOCJn0fZOwr2FnMeAiEAny2gBwGM6qS2TFfMkpB//fZ13D3Z/ni2ews8P8K6i0g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261225},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"5b1047b5777c230082a74bec089edb0dd0c27528","scripts":{"dev":"node --watch src/index.js","lint":"eslint src/ bin/","test":"node --test","setup":"node bin/setup.js","start":"node src/index.js","status":"node bin/status.js","config-help":"node bin/config-helper.js"},"_npmUser":{"name":"stephanferraro","email":"stephan.ferraro@aionda.com"},"repository":{"url":"git+https://github.com/AiondaDotCom/mcp-salesforce.git","type":"git"},"_npmVersion":"10.9.2","description":"Model Context Protocol (MCP) server for Salesforce integration using OAuth authentication","directories":{},"_nodeVersion":"22.16.0","dependencies":{"open":"^8.4.2","dotenv":"^16.3.1","express":"^4.18.2","jsforce":"^1.11.1","keychain":"^1.5.0","node-fetch":"^3.3.2","@modelcontextprotocol/sdk":"^0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.55.0","nodemon":"^3.0.2"},"_npmOperationalInternal":{"tmp":"tmp/mcp-salesforce_1.0.5_1749130045278_0.7456495782625212","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@aiondadotcom/mcp-salesforce","version":"1.0.6","keywords":["mcp","model-context-protocol","salesforce","oauth","crm","api"],"author":{"name":"AiondaDotCom"},"license":"MIT","_id":"@aiondadotcom/mcp-salesforce@1.0.6","maintainers":[{"name":"stephanferraro","email":"stephan.ferraro@aionda.com"}],"homepage":"https://github.com/AiondaDotCom/mcp-salesforce#readme","bugs":{"url":"https://github.com/AiondaDotCom/mcp-salesforce/issues"},"os":["darwin"],"bin":{"mcp-salesforce":"bin/mcp-salesforce.js"},"dist":{"shasum":"6c46fead2eea94367017551a339ab08f79585650","tarball":"https://registry.npmjs.org/@aiondadotcom/mcp-salesforce/-/mcp-salesforce-1.0.6.tgz","fileCount":28,"integrity":"sha512-crj/RJIYHCFi8tvYzn1lrrf1YgBP2mQ+iiL1t9GxtVeJ/FLeV01SmP6dfVbQClmxZ9hVE6BHt3PqBuYBV755iw==","signatures":[{"sig":"MEUCICd04aXPMd8rglpdw0dWTco9PhvfBYUgxWGX95eCot2eAiEAuLjdVitbc5dHhs6yOMGkEpAPRAtmhtLvT4sedaohOvg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261530},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"5b1047b5777c230082a74bec089edb0dd0c27528","scripts":{"dev":"node --watch src/index.js","lint":"eslint src/ bin/","test":"node --test","setup":"node bin/setup.js","start":"node src/index.js","status":"node bin/status.js","config-help":"node bin/config-helper.js"},"_npmUser":{"name":"stephanferraro","email":"stephan.ferraro@aionda.com"},"repository":{"url":"git+https://github.com/AiondaDotCom/mcp-salesforce.git","type":"git"},"_npmVersion":"10.9.2","description":"Model Context Protocol (MCP) server for Salesforce integration using OAuth authentication","directories":{},"_nodeVersion":"22.16.0","dependencies":{"open":"^8.4.2","dotenv":"^16.3.1","express":"^4.18.2","jsforce":"^1.11.1","keychain":"^1.5.0","node-fetch":"^3.3.2","@modelcontextprotocol/sdk":"^0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.55.0","nodemon":"^3.0.2"},"_npmOperationalInternal":{"tmp":"tmp/mcp-salesforce_1.0.6_1749130532050_0.32707394937489576","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@aiondadotcom/mcp-salesforce","version":"1.0.7","keywords":["mcp","model-context-protocol","salesforce","oauth","crm","api"],"author":{"name":"AiondaDotCom"},"license":"MIT","_id":"@aiondadotcom/mcp-salesforce@1.0.7","maintainers":[{"name":"stephanferraro","email":"stephan.ferraro@aionda.com"}],"homepage":"https://github.com/AiondaDotCom/mcp-salesforce#readme","bugs":{"url":"https://github.com/AiondaDotCom/mcp-salesforce/issues"},"os":["darwin"],"bin":{"mcp-salesforce":"bin/mcp-salesforce.js"},"dist":{"shasum":"9a8ebd54a63de1b7c150bdeb09c703bcb82555ad","tarball":"https://registry.npmjs.org/@aiondadotcom/mcp-salesforce/-/mcp-salesforce-1.0.7.tgz","fileCount":28,"integrity":"sha512-x7BVo9qPErU2BWStpvBcDhTotaIrAsOuikeQFa3stH5VpPRL06iJejwQbBFFgLXDZj/JD8z2l2XeWN6v1x2a1w==","signatures":[{"sig":"MEYCIQDEDQR9OlApNf1vY22lw96cuicu70kupu5U4+P06EBpNQIhAPfulZwUOoEATg32rchDt3bj7gqkt8YAg09Jh2/bMYl3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":262019},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"5b1047b5777c230082a74bec089edb0dd0c27528","scripts":{"dev":"node --watch src/index.js","lint":"eslint src/ bin/","test":"node --test","setup":"node bin/setup.js","start":"node src/index.js","status":"node bin/status.js","config-help":"node bin/config-helper.js"},"_npmUser":{"name":"stephanferraro","email":"stephan.ferraro@aionda.com"},"repository":{"url":"git+https://github.com/AiondaDotCom/mcp-salesforce.git","type":"git"},"_npmVersion":"10.9.2","description":"Model Context Protocol (MCP) server for Salesforce integration using OAuth authentication","directories":{},"_nodeVersion":"22.16.0","dependencies":{"open":"^8.4.2","dotenv":"^16.3.1","express":"^4.18.2","jsforce":"^1.11.1","keychain":"^1.5.0","node-fetch":"^3.3.2","@modelcontextprotocol/sdk":"^0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.55.0","nodemon":"^3.0.2"},"_npmOperationalInternal":{"tmp":"tmp/mcp-salesforce_1.0.7_1749130880623_0.14880558085501927","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@aiondadotcom/mcp-salesforce","version":"1.1.0","keywords":["mcp","model-context-protocol","salesforce","oauth","crm","api"],"author":{"name":"AiondaDotCom"},"license":"MIT","_id":"@aiondadotcom/mcp-salesforce@1.1.0","maintainers":[{"name":"stephanferraro","email":"stephan.ferraro@aionda.com"}],"homepage":"https://github.com/AiondaDotCom/mcp-salesforce#readme","bugs":{"url":"https://github.com/AiondaDotCom/mcp-salesforce/issues"},"os":["darwin"],"bin":{"mcp-salesforce":"bin/mcp-salesforce.js"},"dist":{"shasum":"0b4c371ba317443f8225f5bc94ae93b5e498e70a","tarball":"https://registry.npmjs.org/@aiondadotcom/mcp-salesforce/-/mcp-salesforce-1.1.0.tgz","fileCount":27,"integrity":"sha512-HarZeYDdH1keSywIDWXG4l6V9GuMLbCeZvAW94xQYX96CEBF7/zfiGYI3MXPZxMSBFoyTfo8ThWInLR36gje2Q==","signatures":[{"sig":"MEQCIEo4Z5y/cPIF0wlRoIkXNuf/xoi/AEyOcI/flN3OOqmPAiB9Xg2Qj9VSws7cYnOC2IjkCk4L2LJnVQ8oDHJDOa4DUg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":259351},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"007beed4507635956561dc765ac48d2cdff7459f","scripts":{"dev":"node --watch src/index.js","lint":"eslint src/ bin/","test":"node --test","setup":"node bin/setup.js","start":"node src/index.js","status":"node bin/status.js","config-help":"node bin/config-helper.js"},"_npmUser":{"name":"stephanferraro","email":"stephan.ferraro@aionda.com"},"repository":{"url":"git+https://github.com/AiondaDotCom/mcp-salesforce.git","type":"git"},"_npmVersion":"10.9.2","description":"Model Context Protocol (MCP) server for Salesforce integration using OAuth authentication","directories":{},"_nodeVersion":"22.16.0","dependencies":{"open":"^8.4.2","dotenv":"^16.3.1","express":"^4.18.2","jsforce":"^3.8.2","node-fetch":"^3.3.2","@modelcontextprotocol/sdk":"^0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.55.0","nodemon":"^3.0.2"},"_npmOperationalInternal":{"tmp":"tmp/mcp-salesforce_1.1.0_1749154851251_0.42891162941962824","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@aiondadotcom/mcp-salesforce","version":"1.1.1","keywords":["mcp","model-context-protocol","salesforce","oauth","crm","api"],"author":{"name":"AiondaDotCom"},"license":"MIT","_id":"@aiondadotcom/mcp-salesforce@1.1.1","maintainers":[{"name":"stephanferraro","email":"stephan.ferraro@aionda.com"}],"homepage":"https://github.com/AiondaDotCom/mcp-salesforce#readme","bugs":{"url":"https://github.com/AiondaDotCom/mcp-salesforce/issues"},"os":["darwin"],"bin":{"mcp-salesforce":"bin/mcp-salesforce.js"},"dist":{"shasum":"6b63a4e113d124b64af7eaec0c9120001b41b6b4","tarball":"https://registry.npmjs.org/@aiondadotcom/mcp-salesforce/-/mcp-salesforce-1.1.1.tgz","fileCount":27,"integrity":"sha512-N7dJIstpy89y4sOH1/GO9Id9l5rxVAF1DRH+Odn//CB/LdBW0YFJKb4duTB43uBwC8m5pQkeihhTb1Dn59VVrg==","signatures":[{"sig":"MEQCHyrHBql1QxbFXCF6yjTIAJvQA20eE/IH5HQ/PsOkzKoCIQDlSxX72sVDLaoFKRzd5c+z1tsqZgE/ug6bZ/XQku/Lnw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":259351},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"2d13de371188737c5defa86f6e7e83bebd5d0573","scripts":{"dev":"node --watch src/index.js","lint":"eslint src/ bin/","test":"node --test","setup":"node bin/setup.js","start":"node src/index.js","status":"node bin/status.js","config-help":"node bin/config-helper.js"},"_npmUser":{"name":"stephanferraro","email":"stephan.ferraro@aionda.com"},"repository":{"url":"git+https://github.com/AiondaDotCom/mcp-salesforce.git","type":"git"},"_npmVersion":"10.9.2","description":"Model Context Protocol (MCP) server for Salesforce integration using OAuth authentication","directories":{},"_nodeVersion":"22.16.0","dependencies":{"open":"^8.4.2","dotenv":"^16.3.1","express":"^4.18.2","jsforce":"^3.8.2","node-fetch":"^3.3.2","@modelcontextprotocol/sdk":"^0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.55.0","nodemon":"^3.0.2"},"_npmOperationalInternal":{"tmp":"tmp/mcp-salesforce_1.1.1_1749156173860_0.3558802058850392","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@aiondadotcom/mcp-salesforce","version":"1.1.2","keywords":["mcp","model-context-protocol","salesforce","oauth","crm","api"],"author":{"name":"AiondaDotCom"},"license":"MIT","_id":"@aiondadotcom/mcp-salesforce@1.1.2","maintainers":[{"name":"stephanferraro","email":"stephan.ferraro@aionda.com"}],"homepage":"https://github.com/AiondaDotCom/mcp-salesforce#readme","bugs":{"url":"https://github.com/AiondaDotCom/mcp-salesforce/issues"},"os":["darwin"],"bin":{"mcp-salesforce":"bin/mcp-salesforce.js"},"dist":{"shasum":"f0168f10fb8be86800b32e9f1e6db9a0e8492214","tarball":"https://registry.npmjs.org/@aiondadotcom/mcp-salesforce/-/mcp-salesforce-1.1.2.tgz","fileCount":27,"integrity":"sha512-+iX7j79EvFo+5cd1WXm5cqvLwjFWK+7Ja4cBRmxOGnkuN46rtgGj0YUOuHhlIvo8Rt3n0lHRY3LwzevlSE0mMw==","signatures":[{"sig":"MEQCIDoBEUEGXPZ59C6NRHCTyz54CXFg06D0V9vWiXw5AQjXAiBnkiB5cFANVaGZFsvgo0pUJ22ikOXTrEmuupW61BR3eQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":258299},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"f6639f2dcb6a10901b00d65417dd2d0b7b07f221","scripts":{"dev":"node --watch src/index.js","lint":"eslint src/ bin/","test":"node --test","setup":"node bin/setup.js","start":"node src/index.js","status":"node bin/status.js","config-help":"node bin/config-helper.js"},"_npmUser":{"name":"stephanferraro","email":"stephan.ferraro@aionda.com"},"repository":{"url":"git+https://github.com/AiondaDotCom/mcp-salesforce.git","type":"git"},"_npmVersion":"10.9.2","description":"Model Context Protocol (MCP) server for Salesforce integration using OAuth authentication","directories":{},"_nodeVersion":"22.16.0","dependencies":{"open":"^8.4.2","dotenv":"^16.3.1","express":"^4.18.2","jsforce":"^3.8.2","node-fetch":"^3.3.2","@modelcontextprotocol/sdk":"^0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.55.0","nodemon":"^3.0.2"},"_npmOperationalInternal":{"tmp":"tmp/mcp-salesforce_1.1.2_1749156706687_0.5578046612812446","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@aiondadotcom/mcp-salesforce","version":"1.1.3","keywords":["mcp","model-context-protocol","salesforce","oauth","crm","api"],"author":{"name":"AiondaDotCom"},"license":"MIT","_id":"@aiondadotcom/mcp-salesforce@1.1.3","maintainers":[{"name":"stephanferraro","email":"stephan.ferraro@aionda.com"}],"homepage":"https://github.com/AiondaDotCom/mcp-salesforce#readme","bugs":{"url":"https://github.com/AiondaDotCom/mcp-salesforce/issues"},"os":["darwin"],"bin":{"mcp-salesforce":"bin/mcp-salesforce.js"},"dist":{"shasum":"75b47a476787fd48ad6f37c0415d58c397b3ed7c","tarball":"https://registry.npmjs.org/@aiondadotcom/mcp-salesforce/-/mcp-salesforce-1.1.3.tgz","fileCount":27,"integrity":"sha512-o4qi4p5Jyx0LwyG8+A85OvIU8z0+KT8S3evTs7p7/DU26PdHqN9YJKJYebw7iM6sMefo+zQ4o47KaecYPg5wng==","signatures":[{"sig":"MEUCIQCmEuv71BOinjI4gve5hu9ZT1biUKMWhGpZ6cK9KNcM6wIgFRMHNP1G16SWB2kqjotbyWxQoYEpn1AVvWrCi+nX5VI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":257631},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"cfc42dcbc46c36519cc3de0a420497a6e3a4a8d9","scripts":{"dev":"node --watch src/index.js","lint":"eslint src/ bin/","test":"node --test","setup":"node bin/setup.js","start":"node src/index.js","status":"node bin/status.js","config-help":"node bin/config-helper.js"},"_npmUser":{"name":"stephanferraro","email":"stephan.ferraro@aionda.com"},"repository":{"url":"git+https://github.com/AiondaDotCom/mcp-salesforce.git","type":"git"},"_npmVersion":"10.9.2","description":"Model Context Protocol (MCP) server for Salesforce integration using OAuth authentication","directories":{},"_nodeVersion":"22.16.0","dependencies":{"open":"^8.4.2","dotenv":"^16.3.1","express":"^4.18.2","jsforce":"^3.8.2","node-fetch":"^3.3.2","@modelcontextprotocol/sdk":"^0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.55.0","nodemon":"^3.0.2"},"_npmOperationalInternal":{"tmp":"tmp/mcp-salesforce_1.1.3_1749157570147_0.30907449635696427","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"@aiondadotcom/mcp-salesforce","version":"1.1.4","keywords":["mcp","model-context-protocol","salesforce","oauth","crm","api"],"author":{"name":"AiondaDotCom"},"license":"MIT","_id":"@aiondadotcom/mcp-salesforce@1.1.4","maintainers":[{"name":"stephanferraro","email":"stephan.ferraro@aionda.com"}],"homepage":"https://github.com/AiondaDotCom/mcp-salesforce#readme","bugs":{"url":"https://github.com/AiondaDotCom/mcp-salesforce/issues"},"os":["darwin"],"bin":{"mcp-salesforce":"bin/mcp-salesforce.js"},"dist":{"shasum":"85cb93ffbf7cd28263cd80c34566dc62552f8712","tarball":"https://registry.npmjs.org/@aiondadotcom/mcp-salesforce/-/mcp-salesforce-1.1.4.tgz","fileCount":27,"integrity":"sha512-vb8UhTBhFH/83FqrUPkwkNPRgvXrYZlMfeGiK3FE1wEonDuOXtcswjB0KhKDAr1YzAjQSJNDU4mM9N14TRmfTQ==","signatures":[{"sig":"MEYCIQCRXB8LpUvqLuoRfV+3VdUGhupA2G2bUXK8hAjJnOSjCwIhAI9+n2DJ6EakNXNVDjhSkdBeHB8RvSo/LY6ynbf20aIX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":257631},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"e8147bf508a3eb6aa82b5e41d8483ae4ce6e13c1","scripts":{"dev":"node --watch src/index.js","lint":"eslint src/ bin/","test":"node --test","setup":"node bin/setup.js","start":"node src/index.js","status":"node bin/status.js","config-help":"node bin/config-helper.js"},"_npmUser":{"name":"stephanferraro","email":"stephan.ferraro@aionda.com"},"repository":{"url":"git+https://github.com/AiondaDotCom/mcp-salesforce.git","type":"git"},"_npmVersion":"10.9.2","description":"Model Context Protocol (MCP) server for Salesforce integration using OAuth authentication","directories":{},"_nodeVersion":"22.16.0","dependencies":{"open":"^8.4.2","dotenv":"^16.3.1","express":"^4.18.2","jsforce":"^3.8.2","node-fetch":"^3.3.2","@modelcontextprotocol/sdk":"^0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.55.0","nodemon":"^3.0.2"},"_npmOperationalInternal":{"tmp":"tmp/mcp-salesforce_1.1.4_1749157624842_0.352838283261113","host":"s3://npm-registry-packages-npm-production"}},"1.1.5":{"name":"@aiondadotcom/mcp-salesforce","version":"1.1.5","keywords":["mcp","model-context-protocol","salesforce","oauth","crm","api"],"author":{"name":"AiondaDotCom"},"license":"MIT","_id":"@aiondadotcom/mcp-salesforce@1.1.5","maintainers":[{"name":"stephanferraro","email":"stephan.ferraro@aionda.com"}],"homepage":"https://github.com/AiondaDotCom/mcp-salesforce#readme","bugs":{"url":"https://github.com/AiondaDotCom/mcp-salesforce/issues"},"os":["darwin"],"bin":{"mcp-salesforce":"bin/mcp-salesforce.js"},"dist":{"shasum":"3cbf98287b186ef09470faad92936c8285600939","tarball":"https://registry.npmjs.org/@aiondadotcom/mcp-salesforce/-/mcp-salesforce-1.1.5.tgz","fileCount":27,"integrity":"sha512-Mtcn6xJ5TH+q0gHRnwrO+nvlJWpMpBzvj6li3Dnavfa7aoGMxrReA/qRnWj68CqQGCh8t6hvBlwJiT73ZNiHUg==","signatures":[{"sig":"MEUCIH2gU0dBIrXWHLEY76OmYkw22Rh6Jngnh5rr27n8WFqwAiEAoeRWHUl6GCvnwujRcLwY4mhx7yePOEWdoCRmwHYbKTc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":257631},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"3da0db7cabc29b34d3c873bfebfb72ebbbd084de","scripts":{"dev":"node --watch src/index.js","lint":"eslint src/ bin/","test":"node --test","setup":"node bin/setup.js","start":"node src/index.js","status":"node bin/status.js","config-help":"node bin/config-helper.js"},"_npmUser":{"name":"stephanferraro","email":"stephan.ferraro@aionda.com"},"repository":{"url":"git+https://github.com/AiondaDotCom/mcp-salesforce.git","type":"git"},"_npmVersion":"10.9.2","description":"Model Context Protocol (MCP) server for Salesforce integration using OAuth authentication","directories":{},"_nodeVersion":"22.16.0","dependencies":{"open":"^8.4.2","dotenv":"^16.3.1","express":"^4.18.2","jsforce":"^3.8.2","node-fetch":"^3.3.2","@modelcontextprotocol/sdk":"^0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.55.0","nodemon":"^3.0.2"},"_npmOperationalInternal":{"tmp":"tmp/mcp-salesforce_1.1.5_1749157743117_0.19284922003967608","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@aiondadotcom/mcp-salesforce","version":"1.2.0","keywords":["mcp","model-context-protocol","salesforce","oauth","crm","api"],"author":{"name":"AiondaDotCom"},"license":"MIT","_id":"@aiondadotcom/mcp-salesforce@1.2.0","maintainers":[{"name":"stephanferraro","email":"stephan.ferraro@aionda.com"}],"homepage":"https://github.com/AiondaDotCom/mcp-salesforce#readme","bugs":{"url":"https://github.com/AiondaDotCom/mcp-salesforce/issues"},"os":["darwin"],"bin":{"mcp-salesforce":"bin/mcp-salesforce.js"},"dist":{"shasum":"cb7306abc9cdaf49a64e68d8f75acab7bc93ee0a","tarball":"https://registry.npmjs.org/@aiondadotcom/mcp-salesforce/-/mcp-salesforce-1.2.0.tgz","fileCount":28,"integrity":"sha512-Rh93pmh37PSR/NmZ17ISIrjJcMyw+GP9u40p1XNTCsHo3nuwLP2BqeuGo4t9s5XifFb4D8dD9FBM28YcS5c/7g==","signatures":[{"sig":"MEUCIQCrN/dtaDGamBUAihaCd5E2VTuAtm/9gMKZOFhf1OBDIgIgV5/DuFMRz8OUMgJ3kfnJd6DA9xd0osnDu6ohDLgtvLE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":258688},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"00ebd511170b99df65fac8f32434c11bf9268903","scripts":{"dev":"node --watch src/index.js","lint":"eslint src/ bin/","test":"NODE_ENV=test DISABLE_BROWSER_OPEN=true node test/learning-system-test.js && NODE_ENV=test DISABLE_BROWSER_OPEN=true node test/env-variables-unit-test.js","setup":"node bin/setup.js","start":"node src/index.js","status":"node bin/status.js","test:env":"NODE_ENV=test DISABLE_BROWSER_OPEN=true node test/env-variables-unit-test.js","config-help":"node bin/config-helper.js","test:learning":"NODE_ENV=test DISABLE_BROWSER_OPEN=true node test/learning-system-test.js"},"_npmUser":{"name":"stephanferraro","actor":{"name":"stephanferraro","type":"user","email":"stephan.ferraro@aionda.com"},"email":"stephan.ferraro@aionda.com"},"repository":{"url":"git+https://github.com/AiondaDotCom/mcp-salesforce.git","type":"git"},"_npmVersion":"10.9.2","description":"Model Context Protocol (MCP) server for Salesforce integration using OAuth authentication","directories":{},"_nodeVersion":"22.16.0","dependencies":{"open":"^8.4.2","dotenv":"^16.3.1","express":"^4.18.2","jsforce":"^3.8.2","node-fetch":"^3.3.2","@modelcontextprotocol/sdk":"^0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.55.0","nodemon":"^3.0.2"},"_npmOperationalInternal":{"tmp":"tmp/mcp-salesforce_1.2.0_1750592331648_0.09632320344441103","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@aiondadotcom/mcp-salesforce","version":"1.2.1","keywords":["mcp","model-context-protocol","salesforce","oauth","crm","api"],"author":{"name":"AiondaDotCom"},"license":"MIT","_id":"@aiondadotcom/mcp-salesforce@1.2.1","maintainers":[{"name":"stephanferraro","email":"stephan.ferraro@aionda.com"}],"homepage":"https://github.com/AiondaDotCom/mcp-salesforce#readme","bugs":{"url":"https://github.com/AiondaDotCom/mcp-salesforce/issues"},"bin":{"mcp-salesforce":"bin/mcp-salesforce.js"},"dist":{"shasum":"0ca2f063d2ec9358abd4d65966786467514b767a","tarball":"https://registry.npmjs.org/@aiondadotcom/mcp-salesforce/-/mcp-salesforce-1.2.1.tgz","fileCount":30,"integrity":"sha512-ZT9J7ZZdI6yn/96TfIhryO+wuLG0NfzMw3dkgNYcpwF3AmLQdnQi0ek5sZgan0OuSWWdcSWeVg47Dxy+Z5deGQ==","signatures":[{"sig":"MEUCIDcJQG4R/eqGkFUDFdwuidBEOymH7WEj+FS0MrnOcjZgAiEAqLLU+nahh/Q12nMNNclfnvP5LoNfh2go/ROD+IRfhd0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":267827},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"4e764234ed30c68e33b9976159dddd76c5d778af","scripts":{"dev":"node --watch src/index.js","lint":"eslint src/ bin/","test":"npm run test:learning && npm run test:credentials && npm run test:cache && npm run test:env","setup":"node bin/setup.js","start":"node src/index.js","status":"node bin/status.js","test:ci":"npm run test:learning && npm run test:credentials && npm run test:cache","test:env":"NODE_ENV=test DISABLE_BROWSER_OPEN=true node test/env-variables-unit-test.js","test:cache":"NODE_ENV=test DISABLE_BROWSER_OPEN=true node test/cache-system-test.js","config-help":"node bin/config-helper.js","test:learning":"NODE_ENV=test DISABLE_BROWSER_OPEN=true node test/learning-system-test.js","test:credentials":"NODE_ENV=test DISABLE_BROWSER_OPEN=true node test/credentials-system-test.js"},"_npmUser":{"name":"stephanferraro","email":"stephan.ferraro@aionda.com"},"repository":{"url":"git+https://github.com/AiondaDotCom/mcp-salesforce.git","type":"git"},"_npmVersion":"10.9.2","description":"Model Context Protocol (MCP) server for Salesforce integration using OAuth authentication","directories":{},"_nodeVersion":"22.16.0","dependencies":{"open":"^8.4.2","dotenv":"^16.3.1","express":"^4.18.2","jsforce":"^3.8.2","node-fetch":"^3.3.2","@modelcontextprotocol/sdk":"^0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.55.0","nodemon":"^3.0.2"},"_npmOperationalInternal":{"tmp":"tmp/mcp-salesforce_1.2.1_1752660124646_0.8535379169617539","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@aiondadotcom/mcp-salesforce","version":"1.2.2","keywords":["mcp","model-context-protocol","salesforce","oauth","crm","api"],"author":{"name":"AiondaDotCom"},"license":"MIT","_id":"@aiondadotcom/mcp-salesforce@1.2.2","maintainers":[{"name":"stephanferraro","email":"stephan.ferraro@aionda.com"}],"homepage":"https://github.com/AiondaDotCom/mcp-salesforce#readme","bugs":{"url":"https://github.com/AiondaDotCom/mcp-salesforce/issues"},"bin":{"mcp-salesforce":"bin/mcp-salesforce.js"},"dist":{"shasum":"e4bad2f14150d748a54d5d0aaf65719e28db5eb6","tarball":"https://registry.npmjs.org/@aiondadotcom/mcp-salesforce/-/mcp-salesforce-1.2.2.tgz","fileCount":30,"integrity":"sha512-u1FM9WooOe63C7f5VTepg7vTEG2s8ASbN4jjq/v9gtvvwg0ULNgfDlU7W8CFawT1xt9OQMUMUuX1e4t3ihAUuA==","signatures":[{"sig":"MEUCIQDBeAJKfRuqHN8J+Q0rB4tPr4q3buHSpM/HqHD7X4VhJgIgHvrcaZmlXD3H05YkCQYKkEeIulclajKFeMTGaqYz33I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":278602},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"6fe207a250b6c9a61b88d0791550a25d0d967440","scripts":{"dev":"node --watch src/index.js","lint":"eslint src/ bin/","test":"npm run test:learning && npm run test:credentials && npm run test:cache && npm run test:env","setup":"node bin/setup.js","start":"node src/index.js","status":"node bin/status.js","test:ci":"npm run test:learning && npm run test:credentials && npm run test:cache","test:env":"NODE_ENV=test DISABLE_BROWSER_OPEN=true node test/env-variables-unit-test.js","test:cache":"NODE_ENV=test DISABLE_BROWSER_OPEN=true node test/cache-system-test.js","config-help":"node bin/config-helper.js","test:learning":"NODE_ENV=test DISABLE_BROWSER_OPEN=true node test/learning-system-test.js","test:credentials":"NODE_ENV=test DISABLE_BROWSER_OPEN=true node test/credentials-system-test.js"},"_npmUser":{"name":"stephanferraro","email":"stephan.ferraro@aionda.com"},"repository":{"url":"git+https://github.com/AiondaDotCom/mcp-salesforce.git","type":"git"},"_npmVersion":"10.9.2","description":"Model Context Protocol (MCP) server for Salesforce integration using OAuth authentication","directories":{},"_nodeVersion":"22.16.0","dependencies":{"open":"^8.4.2","dotenv":"^16.3.1","express":"^4.18.2","jsforce":"^3.8.2","node-fetch":"^3.3.2","@modelcontextprotocol/sdk":"^0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.55.0","nodemon":"^3.0.2"},"_npmOperationalInternal":{"tmp":"tmp/mcp-salesforce_1.2.2_1775473586961_0.9801586844683272","host":"s3://npm-registry-packages-npm-production"}},"1.2.3":{"name":"@aiondadotcom/mcp-salesforce","version":"1.2.3","keywords":["mcp","model-context-protocol","salesforce","oauth","crm","api"],"author":{"name":"AiondaDotCom"},"license":"MIT","_id":"@aiondadotcom/mcp-salesforce@1.2.3","maintainers":[{"name":"stephanferraro","email":"stephan.ferraro@aionda.com"}],"homepage":"https://github.com/AiondaDotCom/mcp-salesforce#readme","bugs":{"url":"https://github.com/AiondaDotCom/mcp-salesforce/issues"},"bin":{"mcp-salesforce":"bin/mcp-salesforce.js"},"dist":{"shasum":"a0eaddfa8e1c57c8fb0e68df2f86a278900907fd","tarball":"https://registry.npmjs.org/@aiondadotcom/mcp-salesforce/-/mcp-salesforce-1.2.3.tgz","fileCount":30,"integrity":"sha512-JxKN6cZSiWNCPzRtGgbL1yPd2eUSu8udm/v6Yu0/hlLE6Flq4EpnSUdaPH68F7vqLZbIE5yvBJXD5gI+u/KjoA==","signatures":[{"sig":"MEUCIQDdOa6CgLMbfJb59Micmx9omcFfZ1JfO5bx1Ettoo0HbwIgBvh/DBHJplFIb9R2F7tVCr8rW36/hQjlniy1o1/RJig=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":278602},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"1d8a2f6b228a1f68082f53081cc63f3e1fe3e5d3","scripts":{"dev":"node --watch src/index.js","lint":"eslint src/ bin/","test":"npm run test:learning && npm run test:credentials && npm run test:cache && npm run test:env","setup":"node bin/setup.js","start":"node src/index.js","status":"node bin/status.js","test:ci":"npm run test:learning && npm run test:credentials && npm run test:cache","test:env":"NODE_ENV=test DISABLE_BROWSER_OPEN=true node test/env-variables-unit-test.js","test:cache":"NODE_ENV=test DISABLE_BROWSER_OPEN=true node test/cache-system-test.js","config-help":"node bin/config-helper.js","test:learning":"NODE_ENV=test DISABLE_BROWSER_OPEN=true node test/learning-system-test.js","test:credentials":"NODE_ENV=test DISABLE_BROWSER_OPEN=true node test/credentials-system-test.js"},"_npmUser":{"name":"stephanferraro","email":"stephan.ferraro@aionda.com"},"repository":{"url":"git+https://github.com/AiondaDotCom/mcp-salesforce.git","type":"git"},"_npmVersion":"10.9.2","description":"Model Context Protocol (MCP) server for Salesforce integration using OAuth authentication","directories":{},"_nodeVersion":"22.16.0","dependencies":{"open":"^8.4.2","dotenv":"^16.3.1","express":"^4.18.2","jsforce":"^3.8.2","node-fetch":"^3.3.2","@modelcontextprotocol/sdk":"^0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.55.0","nodemon":"^3.0.2"},"_npmOperationalInternal":{"tmp":"tmp/mcp-salesforce_1.2.3_1775473641546_0.8384409334902796","host":"s3://npm-registry-packages-npm-production"}},"1.2.4":{"name":"@aiondadotcom/mcp-salesforce","version":"1.2.4","keywords":["mcp","model-context-protocol","salesforce","oauth","crm","api"],"author":{"name":"AiondaDotCom"},"license":"MIT","_id":"@aiondadotcom/mcp-salesforce@1.2.4","maintainers":[{"name":"stephanferraro","email":"stephan.ferraro@aionda.com"}],"homepage":"https://github.com/AiondaDotCom/mcp-salesforce#readme","bugs":{"url":"https://github.com/AiondaDotCom/mcp-salesforce/issues"},"bin":{"mcp-salesforce":"bin/mcp-salesforce.js"},"dist":{"shasum":"f81d010c3c68522b0ce72787b4c4f0ec03a97b0f","tarball":"https://registry.npmjs.org/@aiondadotcom/mcp-salesforce/-/mcp-salesforce-1.2.4.tgz","fileCount":30,"integrity":"sha512-Z06uKulNrCsssINrmtX9r6QNfezyFF9a83iLObC8rYB5uRNqYbmqxIpFt++v96kOKln9xxJPgKpL2rgSTPfriw==","signatures":[{"sig":"MEUCIQCi3U1M8PYEiFf9BDAsERotKDtm4BS8PqUEbnO6g8sqswIgMG7M8yP0HhY+huOSGfzAmgY/TjNq0pzmpAIy+ZAaMdE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":278603},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"3f6d9a781a18c12dba5d354b90d948147a80616a","scripts":{"dev":"node --watch src/index.js","lint":"eslint src/ bin/","test":"npm run test:learning && npm run test:credentials && npm run test:cache && npm run test:env","setup":"node bin/setup.js","start":"node src/index.js","status":"node bin/status.js","test:ci":"npm run test:learning && npm run test:credentials && npm run test:cache","test:env":"NODE_ENV=test DISABLE_BROWSER_OPEN=true node test/env-variables-unit-test.js","test:cache":"NODE_ENV=test DISABLE_BROWSER_OPEN=true node test/cache-system-test.js","config-help":"node bin/config-helper.js","test:learning":"NODE_ENV=test DISABLE_BROWSER_OPEN=true node test/learning-system-test.js","test:credentials":"NODE_ENV=test DISABLE_BROWSER_OPEN=true node test/credentials-system-test.js"},"_npmUser":{"name":"stephanferraro","email":"stephan.ferraro@aionda.com"},"repository":{"url":"git+https://github.com/AiondaDotCom/mcp-salesforce.git","type":"git"},"_npmVersion":"10.9.2","description":"Model Context Protocol (MCP) server for Salesforce integration using OAuth authentication","directories":{},"_nodeVersion":"22.16.0","dependencies":{"open":"^8.4.2","dotenv":"^16.3.1","express":"^4.18.2","jsforce":"^3.8.2","node-fetch":"^3.3.2","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.55.0","nodemon":"^3.0.2"},"_npmOperationalInternal":{"tmp":"tmp/mcp-salesforce_1.2.4_1775473667475_0.8930685480763216","host":"s3://npm-registry-packages-npm-production"}},"1.2.5":{"name":"@aiondadotcom/mcp-salesforce","version":"1.2.5","description":"Model Context Protocol (MCP) server for Salesforce integration using OAuth authentication","main":"src/index.js","type":"module","bin":{"mcp-salesforce":"bin/mcp-salesforce.js"},"scripts":{"start":"node src/index.js","setup":"node bin/setup.js","status":"node bin/status.js","config-help":"node bin/config-helper.js","dev":"node --watch src/index.js","test":"npm run test:learning && npm run test:credentials && npm run test:cache && npm run test:env","test:ci":"npm run test:learning && npm run test:credentials && npm run test:cache","test:env":"NODE_ENV=test DISABLE_BROWSER_OPEN=true node test/env-variables-unit-test.js","test:learning":"NODE_ENV=test DISABLE_BROWSER_OPEN=true node test/learning-system-test.js","test:credentials":"NODE_ENV=test DISABLE_BROWSER_OPEN=true node test/credentials-system-test.js","test:cache":"NODE_ENV=test DISABLE_BROWSER_OPEN=true node test/cache-system-test.js","lint":"eslint src/ bin/"},"keywords":["mcp","model-context-protocol","salesforce","oauth","crm","api"],"author":{"name":"AiondaDotCom"},"license":"MIT","dependencies":{"@modelcontextprotocol/sdk":"^1.29.0","dotenv":"^16.3.1","express":"^4.18.2","jsforce":"^3.8.2","node-fetch":"^3.3.2","open":"^8.4.2"},"devDependencies":{"eslint":"^8.55.0","nodemon":"^3.0.2"},"engines":{"node":">=18.0.0"},"repository":{"type":"git","url":"git+https://github.com/AiondaDotCom/mcp-salesforce.git"},"bugs":{"url":"https://github.com/AiondaDotCom/mcp-salesforce/issues"},"homepage":"https://github.com/AiondaDotCom/mcp-salesforce#readme","publishConfig":{"access":"public"},"_id":"@aiondadotcom/mcp-salesforce@1.2.5","gitHead":"9db3f68c32b68e644430f9b52153bae04c9959bb","_nodeVersion":"22.16.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-z01VVih4+MAYroWU4RrwX69hr5zmGVI/g+VYFaC6hM3MONc6YXEtasLgcCfHVXGCRD85SoaATGAbQNTZTQ4yCw==","shasum":"6d1511dcf18e8872ea39ca07c95f4d82394d0e3f","tarball":"https://registry.npmjs.org/@aiondadotcom/mcp-salesforce/-/mcp-salesforce-1.2.5.tgz","fileCount":30,"unpackedSize":278555,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQChod7Z/kOrHuX1SXTC8VjBy9o7oGLoxvdTy95JHLprPQIgC8UwMCJ3ifYrtQiy+opJ4Z1nZATqh3BEUbFeng5hTWo="}]},"_npmUser":{"name":"stephanferraro","email":"stephan.ferraro@aionda.com"},"directories":{},"maintainers":[{"name":"stephanferraro","email":"stephan.ferraro@aionda.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-salesforce_1.2.5_1775474039336_0.7188538844703214"},"_hasShrinkwrap":false}},"time":{"created":"2025-06-05T13:00:07.590Z","modified":"2026-04-06T11:13:59.667Z","1.0.0":"2025-06-05T13:00:07.841Z","1.0.1":"2025-06-05T13:04:55.809Z","1.0.2":"2025-06-05T13:06:34.111Z","1.0.3":"2025-06-05T13:12:37.426Z","1.0.4":"2025-06-05T13:14:41.384Z","1.0.5":"2025-06-05T13:27:25.472Z","1.0.6":"2025-06-05T13:35:32.235Z","1.0.7":"2025-06-05T13:41:20.820Z","1.1.0":"2025-06-05T20:20:51.455Z","1.1.1":"2025-06-05T20:42:54.079Z","1.1.2":"2025-06-05T20:51:46.878Z","1.1.3":"2025-06-05T21:06:10.343Z","1.1.4":"2025-06-05T21:07:05.032Z","1.1.5":"2025-06-05T21:09:03.282Z","1.2.0":"2025-06-22T11:38:51.858Z","1.2.1":"2025-07-16T10:02:04.881Z","1.2.2":"2026-04-06T11:06:27.123Z","1.2.3":"2026-04-06T11:07:21.712Z","1.2.4":"2026-04-06T11:07:47.650Z","1.2.5":"2026-04-06T11:13:59.494Z"},"bugs":{"url":"https://github.com/AiondaDotCom/mcp-salesforce/issues"},"author":{"name":"AiondaDotCom"},"license":"MIT","homepage":"https://github.com/AiondaDotCom/mcp-salesforce#readme","keywords":["mcp","model-context-protocol","salesforce","oauth","crm","api"],"repository":{"type":"git","url":"git+https://github.com/AiondaDotCom/mcp-salesforce.git"},"description":"Model Context Protocol (MCP) server for Salesforce integration using OAuth authentication","maintainers":[{"name":"stephanferraro","email":"stephan.ferraro@aionda.com"}],"readme":"# MCP Salesforce Server\n\n[![CI](https://github.com/AiondaDotCom/mcp-salesforce/actions/workflows/ci.yml/badge.svg)](https://github.com/AiondaDotCom/mcp-salesforce/actions/workflows/ci.yml)\n\nA **Model Context Protocol (MCP) server** that provides seamless integration with Salesforce using OAuth authentication. This server enables AI assistants like Claude to interact with any Salesforce organization through a secure, generic interface.\n\n## ✨ Features\n\n- **🎯 Seamless Authentication** - Claude automatically detects when authentication is needed and handles it transparently\n- **🚀 Zero Manual Setup** - No need to run terminal commands or manual OAuth flows\n- **🔐 OAuth-Only Authentication** - Secure browser-based setup with automatic token refresh\n- **🌐 Universal Salesforce Integration** - Works with any Salesforce org, including custom objects and fields  \n- **🧠 Smart Installation Learning** - Analyzes your complete Salesforce setup to provide intelligent assistance\n- **🔍 Dynamic Schema Discovery** - Automatically adapts to your Salesforce configuration\n- **🔒 Secure Token Storage** - File-based storage with strict permissions for production-grade security\n- **🏠 Cross-Platform Home Directory Storage** - Credentials and cache stored in user's home directory\n- **📝 Full CRUD Operations** - Query, create, update, and delete any Salesforce records\n- **📊 Schema Inspection** - Get detailed information about objects and fields\n- **💡 Context-Aware Suggestions** - Provides intelligent field and object name suggestions\n- **💾 Comprehensive Backup System** - Complete data and file backup with support for all Salesforce file systems\n- **⏰ Time Machine Feature** - Point-in-time data recovery and historical analysis\n- **📁 Multi-Format File Support** - Backs up ContentVersions, Attachments, and Documents with proper metadata\n\n## 🚀 Quick Start\n\n### Prerequisites\n\n- **Node.js 18+**\n- **macOS** (required for secure credential storage)\n- **Salesforce Connected App** with OAuth configured\n\n### Installation Options\n\n#### 🎯 **Recommended: NPX Usage (No Installation Required)**\n\nUse NPX to run the MCP server without any permanent installation:\n\n```json\n{\n  \"mcpServers\": {\n    \"salesforce\": {\n      \"command\": \"npx\",\n      \"args\": [\"@aiondadotcom/mcp-salesforce\"]\n    }\n  }\n}\n```\n\n**✅ Benefits of NPX Usage:**\n- 🔄 **Always Latest**: Automatically uses the latest published version\n- 💾 **No Disk Space**: No permanent installation required\n- 🛡️ **No Conflicts**: No global package conflicts\n- ⚡ **Easy Updates**: Just restart - gets latest version automatically\n- 📋 **Simple Config**: Copy-paste ready MCP configuration\n\n**NPX Command Line Usage:**\n```bash\n# Get version\nnpx -p @aiondadotcom/mcp-salesforce mcp-salesforce --version\n\n# Get help\nnpx -p @aiondadotcom/mcp-salesforce mcp-salesforce --help\n\n# Run OAuth setup\nnpx -p @aiondadotcom/mcp-salesforce mcp-salesforce setup\n```\n\n#### 🔧 **Alternative: Development Setup**\n\nFor development or customization:\n\n1. **Clone and install dependencies**:\n   ```bash\n   git clone https://github.com/AiondaDotCom/mcp-salesforce.git\n   cd mcp-salesforce\n   npm install\n   ```\n\n2. **Configure credentials**: Use the `salesforce_setup` tool to configure your credentials when prompted\n\n3. **Add to Claude Desktop** using local path (see [Configuration](#configuration) below)\n\n### 🎯 **Start Using**\n\nThat's it! Claude will automatically handle setup and authentication when you first use any Salesforce tool.\n\n**✨ Interactive Setup Process!** \n- Use the `salesforce_setup` tool to configure your credentials\n- Claude will ask you for your Salesforce Connected App details\n- Credentials are stored securely in your home directory\n- Seamless OAuth flow directly from Claude Desktop\n\n**🧠 Smart Learning System**\n- Use `salesforce_learn` to analyze your complete Salesforce installation\n- Claude learns all your custom objects, fields, and relationships\n- Provides intelligent suggestions based on your specific setup\n- Context-aware assistance for complex Salesforce environments\n\n## 📦 NPM Package Status\n\n✅ **Package Successfully Published!**\n\nThe package `@aiondadotcom/mcp-salesforce` is now **live on NPM** and ready for use.\n\n### Using the Published Package\n\nNPX usage is now available for all users:\n\n```bash\n# Test the published package\nnpx -p @aiondadotcom/mcp-salesforce mcp-salesforce --version\nnpx -p @aiondadotcom/mcp-salesforce mcp-salesforce --help\n\n# Run OAuth setup\nnpx -p @aiondadotcom/mcp-salesforce mcp-salesforce setup\n```\n\n### Publication Details\n\n- **Package Name**: `@aiondadotcom/mcp-salesforce`\n- **Version**: `1.0.7` (latest)\n- **Registry**: NPM Public Registry\n- **Organization**: `@aiondadotcom`\n- **Access**: Public\n\n**Status**: \n- ✅ Package published to NPM\n- ✅ NPX compatibility verified \n- ✅ Binary wrapper implemented\n- ✅ Setup command functional\n- ✅ MCP configuration ready\n- ✅ **Available for immediate use**\n\n🎉 All NPX functionality now works for end users worldwide!\n\n## 🔧 Configuration\n\n### Salesforce Connected App Setup\n\n1. In Salesforce Setup, create a new Connected App:\n   - **App Name**: MCP Salesforce Integration\n   - **API Name**: mcp_salesforce_integration\n   - **Contact Email**: Your email\n   - **Enable OAuth Settings**: ✅ Yes\n   - **Callback URL**: `http://localhost:9876/callback`\n     > Port 9876 was chosen deliberately to avoid conflicts with common development servers (8080, 8000, 3000) and well-known services.\n   - **Selected OAuth Scopes**:\n     - Manage user data via APIs (api)\n     - Perform requests at any time (refresh_token, offline_access)\n\n2. After saving, copy the **Consumer Key** and **Consumer Secret**\n\n### Credential Configuration\n\nConfigure your credentials using the `salesforce_setup` tool when you first use the application:\n\n1. **Interactive Setup**: Claude will prompt you for your Salesforce credentials\n2. **Client ID**: Your Salesforce Connected App Consumer Key\n3. **Client Secret**: Your Salesforce Connected App Consumer Secret  \n4. **Instance URL**: Your Salesforce organization URL (e.g., `https://mycompany.salesforce.com`)\n\nThe tool will validate your input and store credentials securely in `~/.mcp-salesforce.json` with restricted permissions (600).\n\n**📁 File Locations:**\n- **Credentials**: `~/.mcp-salesforce.json` (contains OAuth tokens and credentials)\n- **Cache**: `~/.mcp-salesforce-cache/` (contains learned Salesforce schema and context)\n- **Cross-Platform**: Works on Windows, macOS, and Linux\n\n**Example interaction:**\n```\nClaude: I need to set up your Salesforce credentials first. Please use the salesforce_setup tool with your credentials.\n\nYou: Use the salesforce_setup tool with clientId: \"3MVG9...\", clientSecret: \"1234567890...\", instanceUrl: \"https://mycompany.salesforce.com\"\n\nClaude: ✅ Salesforce credentials configured successfully! You can now use other Salesforce tools.\n```\n\n### Claude Desktop Integration\n\n#### 🎯 **NPX Configuration (Recommended)**\n\nAdd this to your Claude Desktop MCP configuration (`~/Library/Application Support/Claude/claude_desktop_config.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"salesforce\": {\n      \"command\": \"npx\",\n      \"args\": [\"@aiondadotcom/mcp-salesforce\"]\n    }\n  }\n}\n```\n\n#### 🔧 **Development/Local Configuration**\n\nFor development or customized installations:\n\n```json\n{\n  \"mcpServers\": {\n    \"salesforce\": {\n      \"command\": \"node\",\n      \"args\": [\"/path/to/mcp-salesforce/src/index.js\"]\n    }\n  }\n}\n```\n\n#### 🌐 **VS Code MCP Configuration**\n\nFor VS Code with MCP extension:\n\n```json\n{\n  \"servers\": {\n    \"salesforce\": {\n      \"command\": \"npx\",\n      \"args\": [\"@aiondadotcom/mcp-salesforce\"]\n    }\n  }\n}\n```\n\n## 📸 Demo Screenshots\n\nHere's a step-by-step walkthrough of the MCP Salesforce Server in action, showing a real-world use case of verifying and updating company address information:\n\n### Step 1: Address Verification Request\n![Address Verification](docs/step1.png)\n*Claude checking if the Aionda GmbH account in Salesforce has the correct address by comparing it with their current website address*\n\n### Step 2: Address Comparison Results  \n![Address Analysis](docs/step2.png)\n*Claude identifying that the Salesforce address is outdated, showing detailed comparison between the current Salesforce data and the actual address from the company website*\n\n### Step 3: Automated Address Update\n![Address Update](docs/step3.png)\n*Claude successfully updating the Salesforce account with the correct current address, showing exactly which fields were changed*\n\n### Step 4: Verification in Salesforce\n![Salesforce Confirmation](docs/step4.png)\n*The updated account record in Salesforce showing the corrected address information is now accurate and up-to-date*\n\n## 🛠️ Available Tools\n\n### `salesforce_learn`\n**🧠 Learns your complete Salesforce installation** - Analyzes all objects, fields and customizations once and stores this information locally for intelligent assistance.\n\n```javascript\n// One-time analysis of the Salesforce installation\n{}\n\n// Force complete re-analysis\n{\n  \"force_refresh\": true,\n  \"detailed_relationships\": true\n}\n```\n\n**Why important?** \n- Claude learns your Custom Objects like \"TimeTracking__c\", \"Project__c\", etc.\n- Recognizes all Custom Fields and their data types\n- Provides intelligent suggestions based on your specific configuration\n- Run once, then the AI benefits from it permanently\n\n### `salesforce_installation_info`\n**📊 Overview of your learned Salesforce installation** - Shows available objects, Custom Fields and customizations.\n\n```javascript\n// Complete overview of the installation\n{}\n\n// Details about a specific object\n{\n  \"object_name\": \"TimeTracking__c\"\n}\n\n// Search for specific fields\n{\n  \"field_search\": \"email\",\n  \"show_custom_only\": true\n}\n```\n\n### `salesforce_query`\nExecute SOQL queries against any Salesforce object.\n\n```javascript\n// Example: Get recent contacts\n{\n  \"query\": \"SELECT Id, FirstName, LastName, Email FROM Contact WHERE CreatedDate = THIS_MONTH ORDER BY CreatedDate DESC LIMIT 10\"\n}\n```\n\n**🧠 Smart Learning Integration:** \n- Automatically warns when installation has not been learned yet\n- Suggests available objects and fields\n- Helps with correct API names\n\n### `salesforce_create`  \nCreate new records in any Salesforce object.\n\n```javascript\n// Example: Create a new contact\n{\n  \"sobject\": \"Contact\",\n  \"data\": {\n    \"FirstName\": \"John\",\n    \"LastName\": \"Doe\", \n    \"Email\": \"john.doe@example.com\",\n    \"Phone\": \"555-1234\"\n  }\n}\n```\n\n**🧠 Smart Context:** Automatically shows required fields for the selected object when the installation has been learned.\n\n### `salesforce_update`\nUpdate existing records.\n\n```javascript\n// Example: Update a contact's email\n{\n  \"sobject\": \"Contact\",\n  \"id\": \"003XX000008b6cYAQ\",\n  \"data\": {\n    \"Email\": \"new.email@example.com\",\n    \"Phone\": \"555-5678\"\n  }\n}\n```\n\n**🧠 Smart Context:** Considers field permissions and data types from the learned installation.\n\n### `salesforce_delete`\nDelete records (⚠️ permanent action).\n\n```javascript\n// Example: Delete a record\n{\n  \"sobject\": \"Contact\", \n  \"id\": \"003XX000008b6cYAQ\"\n}\n```\n\n### `salesforce_describe`\nGet schema information for objects and fields.\n\n```javascript\n// Example: Get Contact object schema\n{\n  \"sobject\": \"Contact\"\n}\n\n// Or get list of all available objects\n{} // Empty parameters\n```\n\n### `salesforce_backup`\n**💾 Comprehensive Backup System for Salesforce** - Creates complete backups of all data and files with detailed recovery information.\n\n```javascript\n// Create complete backup\n{}\n\n// Incremental backup since specific date\n{\n  \"backup_type\": \"incremental\",\n  \"since_date\": \"2025-01-01T00:00:00Z\"\n}\n\n// Backup with specific options\n{\n  \"options\": {\n    \"include_files\": true,\n    \"include_attachments\": true,\n    \"include_documents\": true,\n    \"parallel_downloads\": 10\n  }\n}\n```\n\n**What is backed up:**\n- **📊 All Object Data** - All queryable objects with up to 20 fields per object\n- **📁 Modern Files** - ContentVersions with complete metadata\n- **📎 Legacy Attachments** - Classic attachments with correct file extensions\n- **📄 Documents** - Folder-based documents from the legacy system\n- **🏗️ Schema Information** - Complete object structures and relationships\n- **📋 Backup Manifest** - Detailed statistics and recovery information\n\n**Backup Structure:**\n```\nsalesforce-backup-2025-06-04T16-16-35-660Z/\n├── metadata/           # Schema and object definitions\n├── data/              # JSON data of all objects\n├── files/\n│   ├── content-versions/  # Modern files\n│   ├── attachments/       # Legacy attachments\n│   └── documents/         # Legacy documents\n└── backup-manifest.json   # Backup overview\n```\n\n### `salesforce_backup_list`\n**📋 Show Available Backups** - Overview of all local backups with statistics and metadata.\n\n```javascript\n// List all available backups\n{}\n\n// Details about a specific backup\n{\n  \"backup_name\": \"salesforce-backup-2025-06-04T16-16-35-660Z\"\n}\n```\n\n### `salesforce_time_machine`\n**⏰ Time Travel Through Salesforce Data** - Analyzes data changes between different backup time points and enables targeted recovery.\n\n```javascript\n// Compare current state with a backup\n{\n  \"backup_timestamp\": \"2025-06-04T16:16:35.660Z\",\n  \"object_name\": \"Account\"\n}\n\n// Show all changes since a specific backup\n{\n  \"backup_timestamp\": \"2025-06-04T16:16:35.660Z\",\n  \"show_all_changes\": true\n}\n\n// Detailed analysis for specific records\n{\n  \"backup_timestamp\": \"2025-06-04T16:16:35.660Z\",\n  \"object_name\": \"Contact\", \n  \"record_id\": \"003XX000008b6cYAQ\"\n}\n```\n\n**Time Machine Features:**\n- **📊 Data Comparison** - Shows differences between backup and current state\n- **🔍 Change History** - Which fields were changed when\n- **🗑️ Deleted Records** - Finds records that were deleted since the backup\n- **📈 Growth Analysis** - Statistical evaluation of data development\n- **🎯 Targeted Recovery** - Precise identification of changes\n\n### `salesforce_auth`\nAuthenticate with Salesforce. Automatically detects if authentication is needed and handles OAuth flow.\n\n```javascript\n// Example: Standard authentication (detects if needed)\n{}\n\n// Example: Force re-authentication even if tokens appear valid\n{\n  \"force\": true\n}\n```\n\n**✨ Key Features:**\n- **Automatic Detection**: Claude automatically suggests this tool when authentication is needed\n- **No Manual Setup**: Eliminates the need to run `npm run setup` manually  \n- **Smart Authentication**: Only authenticates when necessary, checks existing tokens first\n- **Seamless Integration**: Works transparently in the background\n\nThis tool is **automatically suggested** when:\n- You try to use Salesforce tools without authentication\n- Your tokens have expired\n- Authentication errors occur\n- First-time setup is needed\n\n## 🧠 Smart Learning System\n\n### Why is Learning Important?\n\nEvery Salesforce installation is unique with:\n- **Custom Objects** like \"TimeTracking__c\", \"Project__c\", \"CustomerCare__c\"\n- **Custom Fields** on standard objects\n- **Specific Workflows** and validation rules\n- **Individual Data Structures**\n\nThe AI's normal training model only knows standard Salesforce objects. Without knowledge of your specific installation, the AI cannot provide intelligent assistance.\n\n### How Does Learning Work?\n\n1. **One-time Analysis**: `salesforce_learn` analyzes your complete installation\n2. **Local Documentation**: All objects, fields and relationships are stored locally\n3. **Intelligent Support**: Claude can then make precise suggestions and answer complex questions\n\n### Example Workflow:\n\n```\nYou: \"Are there any time tracking entries for July 2025?\"\n\nWithout Learning:\n❌ Claude: \"I don't know any object called 'TimeTracking'\"\n\nWith Learning:\n✅ Claude: \"I'm checking the 'TimeTracking__c' object for entries from July 2025...\"\n   Automatically executes the correct SOQL query\n```\n\n### When Should You Use Learning?\n\n- **During initial setup** - Once after installation\n- **After major changes** - When new Custom Objects are added\n- **When having problems** - When Claude doesn't find objects or fields\n\n### What is Learned?\n\n- **All SObjects** (Standard and Custom)\n- **All Fields** with data types and permissions\n- **Relationships** between objects\n- **Picklist Values** and validation rules\n- **Required Fields** for better validation\n\n**💡 Learning runs only once and then makes all further interactions much more intelligent!**\n\n## 💡 Usage Examples\n\n### 🚀 First Steps After Installation\n\n1. **Authentication**: Claude automatically detects when authentication is needed\n2. **Start Learning**: \n   ```\n   You: \"Learn my Salesforce installation\"\n   Claude: Automatically uses the salesforce_learn tool\n   ```\n3. **Explore Installation**:\n   ```\n   You: \"Show me an overview of my Salesforce installation\"\n   Claude: Uses salesforce_installation_info for a summary\n   ```\n\n### 🔍 Intelligent Queries with Learned Installation\n\n```\nYou: \"Show me all projects from this year\"\nClaude: Automatically recognizes your \"Project__c\" Custom Object and creates:\nSELECT Id, Name, StartDate__c, Status__c FROM Project__c WHERE CALENDAR_YEAR(CreatedDate) = 2025\n```\n\n```\nYou: \"Are there any time tracking entries for July 2025?\"\nClaude: Finds your \"TimeTracking__c\" object and queries:\nSELECT Id, Name, Month__c, Hours__c FROM TimeTracking__c WHERE Month__c = 'July 2025'\n```\n\n### Query Examples\n\n```soql\n-- Get all accounts in the technology industry\nSELECT Id, Name, Industry, Website FROM Account WHERE Industry = 'Technology'\n\n-- Find contacts created this week\nSELECT Id, Name, Email, CreatedDate FROM Contact WHERE CreatedDate = THIS_WEEK\n\n-- Get opportunities closing this quarter\nSELECT Id, Name, Amount, CloseDate FROM Opportunity WHERE CloseDate = THIS_QUARTER\n```\n\n### Working with Custom Objects\n\nThe server automatically discovers custom objects:\n\n```javascript\n// Describe a custom object\n{\n  \"sobject\": \"CustomProject__c\"\n}\n\n// Query custom object\n{\n  \"query\": \"SELECT Id, Name, CustomField__c FROM CustomProject__c LIMIT 10\"\n}\n\n// Create custom object record\n{\n  \"sobject\": \"CustomProject__c\",\n  \"data\": {\n    \"Name\": \"New Project\",\n    \"CustomField__c\": \"Custom Value\"\n  }\n}\n```\n\n## 💾 Backup & Time Machine Features\n\n### 🚀 Salesforce Backup System\n\nThe MCP Salesforce Server offers a **professional backup system** that can secure your complete Salesforce installation:\n\n#### What Makes the Backup System Special?\n\n- **🎯 Complete Coverage**: Backs up all three Salesforce file systems\n  - **Modern Files** (ContentDocument/ContentVersion) \n  - **Legacy Attachments** (classic attachments)\n  - **Documents** (folder-based legacy documents)\n\n- **📊 Intelligent Data Collection**: \n  - All queryable objects (Standard + Custom)\n  - Up to 20 fields per object for comprehensive data backup\n  - Automatic filtering of binary fields\n\n- **⚡ High Performance**:\n  - Parallel downloads with configurable concurrency\n  - Retry logic with exponential backoff\n  - Batch processing for large data volumes\n\n#### Creating a Backup\n\n```\nYou: \"Create a backup of my Salesforce data\"\nClaude: Automatically starts the salesforce_backup tool\n```\n\n**Backup Result:**\n```\n✅ Backup successfully created!\n📊 Statistics:\n- 7 objects backed up\n- 1,247 records exported  \n- 6 files downloaded\n- 4.07 MB total size\n- Duration: 23 seconds\n\n📁 Location: /backups/salesforce-backup-2025-06-04T16-16-35-660Z/\n```\n\n#### Backup Structure\n\n```\nsalesforce-backup-2025-06-04T16-16-35-660Z/\n├── backup-manifest.json     # Backup overview with statistics\n├── metadata/\n│   ├── objects-schema.json  # All object definitions\n│   └── file-manifest.json   # File download protocol\n├── data/                    # JSON data of all objects\n│   ├── Account.json         # Account records\n│   ├── Contact.json         # Contact records\n│   ├── Opportunity.json     # Opportunity records\n│   └── CustomObject__c.json # Custom Object data\n└── files/                   # All Salesforce files\n    ├── content-versions/    # Modern files (.pdf, .docx, etc.)\n    ├── attachments/         # Legacy attachments\n    └── documents/           # Legacy documents\n```\n\n### ⏰ Time Machine Feature\n\nThe **Time Machine** enables you to travel through time and analyze data changes:\n\n#### Main Features\n\n- **🔍 Data Comparison**: Compares current state with historical backups\n- **📊 Change Analysis**: Shows exactly which fields have changed\n- **🗑️ Deleted Records**: Finds records that were deleted since the backup\n- **📈 Trend Analysis**: Statistical evaluation of data development\n\n#### Using Time Machine\n\n```\nYou: \"Compare the current Account data with the backup from June 4th\"\nClaude: Uses salesforce_time_machine for detailed analysis\n```\n\n**Example Result:**\n```\n⏰ Time Machine Analysis - Account Object\n📅 Backup: 2025-06-04T16:16:35.660Z vs. Current\n\n📊 Changes found:\n• Modified records: 3\n• New records: 2  \n• Deleted records: 1\n\n🔍 Details:\nAccount \"Aionda GmbH\" (001XX000003DHPF):\n- BillingStreet: \"Alte Straße 1\" → \"Königstraße 10a\"\n- BillingCity: \"München\" → \"Stuttgart\"\n- LastModifiedDate: 2025-06-04 → 2025-06-04\n\nAccount \"TechCorp Ltd\" (001XX000003DHPG):\n- Status: Active → Inactive\n- LastModifiedDate: 2025-06-03 → 2025-06-04\n```\n\n#### Practical Use Cases\n\n1. **📋 Compliance & Audit**: Evidence of data changes\n2. **🔧 Error Analysis**: \"What was different before the problem?\"\n3. **📊 Data Quality**: Monitoring data integrity\n4. **🚨 Change Management**: Control over critical changes\n5. **💡 Business Intelligence**: Trend analysis over time\n\n### 🎯 Recommended Backup Workflow\n\n```\n1. Initial Setup:\n   You: \"Learn my Salesforce installation\"\n   → Claude analyzes your complete org\n   \n2. Regular Backups:\n   You: \"Create a backup\"\n   → Claude backs up all data and files\n   \n3. Monitoring:\n   You: \"Show me all available backups\"\n   → Claude lists backup history\n   \n4. Analysis:\n   You: \"What has changed since the last backup?\"\n   → Claude uses Time Machine for comparison\n```\n\n**💡 Pro Tip**: Combine Learning + Backup + Time Machine for maximum Salesforce control!\n\n## 🔒 Security\n\n- **Token Storage**: Refresh tokens stored securely in `cache/salesforce-tokens.json` with restricted file permissions (600)\n- **No Plaintext Secrets**: Access tokens kept in memory only\n- **Automatic Refresh**: Tokens refreshed automatically before expiration\n- **Secure Cleanup**: Tokens removed from memory after use\n- **Input Validation**: All inputs validated and sanitized\n- **Migration**: File-based token storage with 600 permissions for secure credential management\n\n## 🧪 Testing\n\n```bash\n# Run tests\nnpm test\n\n# Test authentication\nnpm run setup -- --test\n\n# Validate configuration\nnpm run setup -- --validate\n```\n\n## 🐛 Troubleshooting\n\n### Authentication Issues\n\n**🎯 Automatic Authentication**: Claude automatically detects authentication issues and suggests the `salesforce_auth` tool. No manual troubleshooting needed!\n\n**Common Scenarios:**\n1. **First-time use**: Claude will automatically suggest authentication when you first try to use Salesforce tools\n2. **Token expiration**: When tokens expire, Claude detects this and prompts for re-authentication  \n3. **Invalid credentials**: Clear error messages guide you to fix configuration issues\n4. **Session expired**: Automatic detection with friendly prompts to re-authenticate\n\n### Token Security\n\n**🔒 Secure Token Storage**: Authentication tokens are stored securely in the local file system with strict permissions.\n\n**Security Features:**\n- **File Permissions**: Token files are created with `0600` permissions (readable/writable only by owner)\n- **Location**: Tokens stored in `cache/salesforce-tokens.json` (excluded from git)\n- **Automatic Security**: Permission verification and automatic fixing if needed\n- **No Network Exposure**: Tokens never leave your local machine\n- **File-based Security**: Secure token storage with strict file permissions for credential protection\n\n**Security Verification:**\n```bash\n# Check token file security\nls -la cache/salesforce-tokens.json\n# Should show: -rw------- (600 permissions)\n\n# Run security test\nnode test-token-security.js\n```\n\n**What this means:**\n- Other users on your system **cannot** read your Salesforce tokens\n- Only your user account has access to the authentication data\n- Prevents unauthorized access to your Salesforce organization\n- Complies with security best practices for credential storage\n\n### Quick Fix in Claude Desktop\nIf you get authentication errors, simply tell Claude:\n```\nAuthenticate with Salesforce\n```\nOr Claude will automatically suggest: `Use the salesforce_auth tool to authenticate with Salesforce`\n\n**✨ No more manual terminal setup!** Everything happens seamlessly through Claude Desktop.\n\n### Connection Issues\n\n1. **\"Cannot connect to Salesforce\"**: Verify your Instance URL\n2. **\"Insufficient permissions\"**: Check user permissions in Salesforce\n3. **\"CORS errors\"**: Ensure Connected App callback URL is correct\n\n### Common SOQL Errors\n\n1. **Field not found**: Use API names, not field labels\n2. **Object not found**: Check spelling and API name of objects\n3. **Syntax errors**: Ensure proper SOQL syntax with single quotes\n\n## 📚 Documentation\n\n- [OAuth Setup Guide](docs/oauth-guide.md) - Detailed Connected App configuration\n- [Setup Instructions](docs/setup.md) - Step-by-step setup process  \n- [Usage Examples](docs/examples.md) - Comprehensive usage examples\n- [Architecture Plan](mcp-salesforce-architecture.md) - Technical architecture details\n\n## 🤝 Contributing\n\n1. Fork the repository\n2. Create a feature branch: `git checkout -b feature-name`\n3. Make your changes and test thoroughly\n4. Submit a pull request with detailed description\n\n## 📄 License\n\nMIT License - see [LICENSE](LICENSE) file for details.\n\n## 🆘 Support\n\n- **Issues**: Report bugs and feature requests via GitHub Issues\n- **Documentation**: Check the `docs/` folder for detailed guides\n- **Community**: Join discussions in GitHub Discussions\n\n---\n\n**Made with ❤️ for the MCP ecosystem**\n","readmeFilename":"README.md"}