{"_id":"linkedin-mcp-tools","_rev":"18-3eab992c05cda4844a230e466252cbea","name":"linkedin-mcp-tools","dist-tags":{"latest":"4.4.0"},"versions":{"1.0.0":{"name":"linkedin-mcp-tools","version":"1.0.0","keywords":["mcp","linkedin","claude","ai","model-context-protocol","mcp-server","linkedin-api","automation","anthropic","cursor","ai-assistant","remote-mcp"],"author":{"name":"Dev Agarwalla"},"license":"MIT","_id":"linkedin-mcp-tools@1.0.0","maintainers":[{"name":"devag7","email":"devagarwalla2016@gmail.com"}],"homepage":"https://github.com/devag7/linkedin-mcp#readme","bugs":{"url":"https://github.com/devag7/linkedin-mcp/issues"},"bin":{"linkedin-mcp":"dist/index.js"},"dist":{"shasum":"fddc8e4c82750f2447af5f1d1959037fffcc1165","tarball":"https://registry.npmjs.org/linkedin-mcp-tools/-/linkedin-mcp-tools-1.0.0.tgz","fileCount":6,"integrity":"sha512-YNv2ewv+U2ZIqA2RRTnzSVWP2cDmB4qjPu7vRCkQl7hEFve9Cy5LCp1FjHZzYT6cxp82T1WnT+X+tTYJCmhsfg==","signatures":[{"sig":"MEUCIQDmzsN/6k+8q9Pfa2wiY7saQuNPK9+G7IECOHPRtVKUywIgPAhYfzKsYntThuNuLDtZU84SKzrxt+TkvIonTIQ0/AA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":193881},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"f1e65aaea460239261635e6f20ca98eb72fc53ec","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"vitest run","build":"tsup","clean":"rm -rf dist","start":"node dist/index.js","format":"prettier --write 'src/**/*.ts'","lint:fix":"eslint src/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check 'src/**/*.ts'","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"devag7","email":"devagarwalla2016@gmail.com"},"repository":{"url":"git+https://github.com/devag7/linkedin-mcp.git","type":"git"},"_npmVersion":"11.2.0","description":"The most reliable LinkedIn MCP server. 36 tools, remote-first, zero dependencies. Works with Claude, Cursor, and any MCP client.","directories":{},"_nodeVersion":"20.18.0","dependencies":{"zod":"^3.25.1","@modelcontextprotocol/sdk":"^1.12.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","tsup":"^8.5.0","eslint":"^9.27.0","vitest":"^3.2.1","prettier":"^3.5.3","@eslint/js":"^9.39.4","typescript":"^5.8.3","@types/node":"^22.15.0","typescript-eslint":"^8.61.0"},"_npmOperationalInternal":{"tmp":"tmp/linkedin-mcp-tools_1.0.0_1781270299199_0.840154545212112","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"linkedin-mcp-tools","version":"1.0.1","keywords":["mcp","linkedin","claude","ai","model-context-protocol","mcp-server","linkedin-api","automation","anthropic","cursor","ai-assistant","remote-mcp"],"author":{"name":"Dev Agarwalla"},"license":"MIT","_id":"linkedin-mcp-tools@1.0.1","maintainers":[{"name":"devag7","email":"devagarwalla2016@gmail.com"}],"homepage":"https://github.com/devag7/linkedin-mcp#readme","bugs":{"url":"https://github.com/devag7/linkedin-mcp/issues"},"bin":{"linkedin-mcp":"dist/index.js","linkedin-mcp-tools":"dist/index.js"},"dist":{"shasum":"fca53a215e83aca4aa3d99230072c19627d1bb8c","tarball":"https://registry.npmjs.org/linkedin-mcp-tools/-/linkedin-mcp-tools-1.0.1.tgz","fileCount":6,"integrity":"sha512-dR8Caz07Y61X+XYPLY0QkbaHAWkDcG5tqZ6PH2QLhzgoUpFB+rr5qAzEcuTG4nTUakTXkXdrKudkjEETUZhatQ==","signatures":[{"sig":"MEYCIQCy3SG5eA7ls0r3YB7QUnJPyzK+Kc7o6taUyKpgd8WVBAIhAPZtWPd2h6sdh91fx/M66y3EHv43JZdaPofFL9I3eD6l","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":195860},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"690d1f20b79d08a70e5da6cec0ddf74a17f59a8c","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"vitest run","build":"tsup","clean":"rm -rf dist","start":"node dist/index.js","format":"prettier --write 'src/**/*.ts'","lint:fix":"eslint src/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check 'src/**/*.ts'","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"devag7","email":"devagarwalla2016@gmail.com"},"repository":{"url":"git+https://github.com/devag7/linkedin-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"The most reliable LinkedIn MCP server. 36 tools, remote-first, zero dependencies. Works with Claude, Cursor, and any MCP client.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.1","@modelcontextprotocol/sdk":"^1.12.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","tsup":"^8.5.0","eslint":"^9.27.0","vitest":"^3.2.1","prettier":"^3.5.3","@eslint/js":"^9.39.4","typescript":"^5.8.3","@types/node":"^22.15.0","typescript-eslint":"^8.61.0"},"_npmOperationalInternal":{"tmp":"tmp/linkedin-mcp-tools_1.0.1_1781275979317_0.3992495673930103","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"linkedin-mcp-tools","version":"1.0.2","keywords":["mcp","linkedin","claude","ai","model-context-protocol","mcp-server","linkedin-api","automation","anthropic","cursor","ai-assistant","remote-mcp"],"author":{"name":"Dev Agarwalla"},"license":"MIT","_id":"linkedin-mcp-tools@1.0.2","maintainers":[{"name":"devag7","email":"devagarwalla2016@gmail.com"}],"homepage":"https://github.com/devag7/linkedin-mcp#readme","bugs":{"url":"https://github.com/devag7/linkedin-mcp/issues"},"bin":{"linkedin-mcp":"dist/index.js","linkedin-mcp-tools":"dist/index.js"},"dist":{"shasum":"b26082a70662f1ce7a4e9f8a5bf88725389199cf","tarball":"https://registry.npmjs.org/linkedin-mcp-tools/-/linkedin-mcp-tools-1.0.2.tgz","fileCount":6,"integrity":"sha512-YTzoBSqDO4aHePTpD6vo5Bi2VoAwdtUPIFGQmNko+3bgQipc/KMOssuZEtXC3xnlrMZlO2L6mEM2c78sc8Wxmg==","signatures":[{"sig":"MEUCIQDiMKA8QbcGH/Dg8UDaE/y8wDp8EWvztJL13mRKwPtEpQIgJDwbVKCJ/j0Wx5E/2KQuMcPq5TONOj61dZ2y6kWiJTI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":200657},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"ef5f03654b3476905943bdf313d2f0841ee6694d","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"vitest run","build":"tsup","clean":"rm -rf dist","start":"node dist/index.js","format":"prettier --write 'src/**/*.ts'","lint:fix":"eslint src/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check 'src/**/*.ts'","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"devag7","email":"devagarwalla2016@gmail.com"},"repository":{"url":"git+https://github.com/devag7/linkedin-mcp.git","type":"git"},"_npmVersion":"11.2.0","description":"The most reliable LinkedIn MCP server. 36 tools, remote-first, minimal dependencies. Works with Claude, Cursor, and any MCP client.","directories":{},"_nodeVersion":"20.18.0","dependencies":{"zod":"^3.25.1","@modelcontextprotocol/sdk":"^1.12.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","tsup":"^8.5.0","eslint":"^9.27.0","vitest":"^3.2.1","prettier":"^3.5.3","@eslint/js":"^9.39.4","typescript":"^5.8.3","@types/node":"^22.15.0","typescript-eslint":"^8.61.0"},"_npmOperationalInternal":{"tmp":"tmp/linkedin-mcp-tools_1.0.2_1781330127549_0.35556956330638956","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"linkedin-mcp-tools","version":"1.0.3","keywords":["mcp","linkedin","claude","ai","model-context-protocol","mcp-server","linkedin-api","automation","anthropic","cursor","ai-assistant","remote-mcp"],"author":{"name":"Dev Agarwalla"},"license":"MIT","_id":"linkedin-mcp-tools@1.0.3","maintainers":[{"name":"devag7","email":"devagarwalla2016@gmail.com"}],"homepage":"https://github.com/devag7/linkedin-mcp#readme","bugs":{"url":"https://github.com/devag7/linkedin-mcp/issues"},"bin":{"linkedin-mcp":"dist/index.js","linkedin-mcp-tools":"dist/index.js"},"dist":{"shasum":"0b8dff433811ed95d4658f06d126a541e2c6140a","tarball":"https://registry.npmjs.org/linkedin-mcp-tools/-/linkedin-mcp-tools-1.0.3.tgz","fileCount":6,"integrity":"sha512-kbaOBKhuB/V//NRsOU5RWMtqW7dW8IbFuPdgUg+YumUsCnxzLwCqNlk4MldKpVIZXTR5KogW/SvyeaVlAC1Y/A==","signatures":[{"sig":"MEUCIQD7W7sdZqNCca0fQTBynnqDRzOwe/JZ08g948wz19KDuAIgO4yoyCsPEMnFyoJzX1NEAGlEgbVX10KHyYxRkO55c9I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":216138},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"d05d7afd98215aac7a56e61a026ff071e4a53be4","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"vitest run","build":"tsup","clean":"rm -rf dist","start":"node dist/index.js","format":"prettier --write 'src/**/*.ts'","lint:fix":"eslint src/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check 'src/**/*.ts'","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"devag7","email":"devagarwalla2016@gmail.com"},"repository":{"url":"git+https://github.com/devag7/linkedin-mcp.git","type":"git"},"_npmVersion":"11.2.0","description":"The most reliable LinkedIn MCP server. 36 tools, remote-first, minimal dependencies. Works with Claude, Cursor, and any MCP client.","directories":{},"_nodeVersion":"20.18.0","dependencies":{"zod":"^3.25.1","@modelcontextprotocol/sdk":"^1.12.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","tsup":"^8.5.0","eslint":"^9.27.0","vitest":"^3.2.1","prettier":"^3.5.3","@eslint/js":"^9.39.4","typescript":"^5.8.3","@types/node":"^22.15.0","typescript-eslint":"^8.61.0"},"_npmOperationalInternal":{"tmp":"tmp/linkedin-mcp-tools_1.0.3_1781332751409_0.07667956738076742","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"linkedin-mcp-tools","version":"1.0.4","keywords":["mcp","linkedin","claude","ai","model-context-protocol","mcp-server","linkedin-api","automation","anthropic","cursor","ai-assistant","remote-mcp"],"author":{"name":"Dev Agarwalla"},"license":"MIT","_id":"linkedin-mcp-tools@1.0.4","maintainers":[{"name":"devag7","email":"devagarwalla2016@gmail.com"}],"homepage":"https://github.com/devag7/linkedin-mcp#readme","bugs":{"url":"https://github.com/devag7/linkedin-mcp/issues"},"bin":{"linkedin-mcp":"dist/index.js","linkedin-mcp-tools":"dist/index.js"},"dist":{"shasum":"e57a98ebdfdb8aef9382c7ddcfde84329972c878","tarball":"https://registry.npmjs.org/linkedin-mcp-tools/-/linkedin-mcp-tools-1.0.4.tgz","fileCount":6,"integrity":"sha512-9bEh5HIMA2rkPGez+xVqC+SxdLT6PBefTy8yRIM88re68ypQJaYA+uumi97WF3Z/4uqNnbE6c+1HY7BH0kmHvQ==","signatures":[{"sig":"MEYCIQDRT2XHoXMwDJIG+bT9SV0KNaPfl82RYV1Qpi98r9Qb5gIhANTtQK6I/HMnG/trR707uq69kMym3SMiqq0jEUdiDvRy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":217902},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"0fbdb5aeb59e7ad9366f8f8a96cea5a3dc939592","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"vitest run","build":"tsup","clean":"rm -rf dist","start":"node dist/index.js","format":"prettier --write 'src/**/*.ts'","lint:fix":"eslint src/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check 'src/**/*.ts'","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"devag7","email":"devagarwalla2016@gmail.com"},"repository":{"url":"git+https://github.com/devag7/linkedin-mcp.git","type":"git"},"_npmVersion":"11.2.0","description":"LinkedIn MCP server with 36 tools. Targets LinkedIn's Voyager API (cookie auth). Note: Cloudflare bot-management may block requests on some networks.","directories":{},"_nodeVersion":"20.18.0","dependencies":{"zod":"^3.25.1","@modelcontextprotocol/sdk":"^1.12.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","tsup":"^8.5.0","eslint":"^9.27.0","vitest":"^3.2.1","prettier":"^3.5.3","@eslint/js":"^9.39.4","typescript":"^5.8.3","@types/node":"^22.15.0","typescript-eslint":"^8.61.0"},"_npmOperationalInternal":{"tmp":"tmp/linkedin-mcp-tools_1.0.4_1781334073669_0.5901811795119589","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"linkedin-mcp-tools","version":"2.0.0","keywords":["mcp","linkedin","claude","ai","model-context-protocol","mcp-server","linkedin-api","automation","anthropic","cursor","ai-assistant","voyager","recruiting","sales","prospecting","web-scraping","playwright"],"author":{"name":"Dev Agarwalla"},"license":"MIT","_id":"linkedin-mcp-tools@2.0.0","maintainers":[{"name":"devag7","email":"devagarwalla2016@gmail.com"}],"homepage":"https://github.com/devag7/linkedin-mcp#readme","bugs":{"url":"https://github.com/devag7/linkedin-mcp/issues"},"bin":{"linkedin-mcp":"dist/index.js"},"dist":{"shasum":"a4b1df01e3fe27383af9c1ecb6afe439d80214f1","tarball":"https://registry.npmjs.org/linkedin-mcp-tools/-/linkedin-mcp-tools-2.0.0.tgz","fileCount":5,"integrity":"sha512-onytSWk+yGCEm6XuLd6MNV0tNyWzhRawUxAlVhm+IE2tOvymHmb3axhIt0tV++ZSLBLdVNzA9jArMTRU31jh6Q==","signatures":[{"sig":"MEUCIEtvGwx47MMU9HWbi56i7KCFM8AH1sEzX1L9pEG5/RRkAiEAhp3BGgvQ4YP6xD6MKzslrOGg/R/JdOum+osc49eDp0E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":523536},"main":"dist/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"5639cad845abc0327bbb8c40518ce41826f34104","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"vitest run","build":"tsup","clean":"rm -rf dist","login":"tsx src/index.ts --login","spike":"tsx src/index.ts --spike","start":"node dist/index.js","format":"prettier --write 'src/**/*.ts'","capture":"tsx src/index.ts --capture","lint:fix":"eslint src/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check 'src/**/*.ts'","setup:browser":"patchright install chrome","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"devag7","email":"devagarwalla2016@gmail.com"},"repository":{"url":"git+https://github.com/devag7/linkedin-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"LinkedIn MCP server — structured LinkedIn data via a real stealth-browser session. Profiles, search, jobs, companies, messaging, network. Works with Claude, Cursor, and any MCP client.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.1","patchright":"^1.60.2","@modelcontextprotocol/sdk":"^1.12.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","tsup":"^8.5.0","eslint":"^9.27.0","vitest":"^3.2.1","prettier":"^3.5.3","@eslint/js":"^9.39.4","typescript":"^5.8.3","@types/node":"^22.15.0","typescript-eslint":"^8.61.0"},"_npmOperationalInternal":{"tmp":"tmp/linkedin-mcp-tools_2.0.0_1781641488113_0.9776188081536239","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"linkedin-mcp-tools","version":"2.0.1","keywords":["mcp","linkedin","claude","ai","model-context-protocol","mcp-server","linkedin-api","automation","anthropic","cursor","ai-assistant","voyager","recruiting","sales","prospecting","web-scraping","playwright"],"author":{"name":"Dev Agarwalla"},"license":"MIT","_id":"linkedin-mcp-tools@2.0.1","maintainers":[{"name":"devag7","email":"devagarwalla2016@gmail.com"}],"homepage":"https://github.com/devag7/linkedin-mcp#readme","bugs":{"url":"https://github.com/devag7/linkedin-mcp/issues"},"bin":{"linkedin-mcp":"dist/index.js"},"dist":{"shasum":"ae7543ea774426c4962c3b56f7572023e5aae9d4","tarball":"https://registry.npmjs.org/linkedin-mcp-tools/-/linkedin-mcp-tools-2.0.1.tgz","fileCount":5,"integrity":"sha512-Z0tV131X3ddSehRU1/lDPN0U+MDE5HuJGL6cL/8xhTpMj6A/ea7FwSALfsY8yyDlYmqxiOO0DAyuH5ptbgGthg==","signatures":[{"sig":"MEQCIEFSJHa3rerapa5oAVEEEeXMTqeiQeIGwyVuJkFN3x29AiBUNc6JuTSK40f5QRVLUz59/3cJVW0HURnBZqIlUFmFbw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":515199},"main":"dist/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"ba42de437eb541a0af9099cb7e51dd2f54975de9","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"vitest run","build":"tsup","clean":"rm -rf dist","login":"tsx src/index.ts --login","spike":"tsx src/index.ts --spike","start":"node dist/index.js","format":"prettier --write 'src/**/*.ts'","capture":"tsx src/index.ts --capture","lint:fix":"eslint src/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check 'src/**/*.ts'","setup:browser":"patchright install chrome","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"devag7","email":"devagarwalla2016@gmail.com"},"repository":{"url":"git+https://github.com/devag7/linkedin-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"LinkedIn MCP server — structured LinkedIn data via a real stealth-browser session. Profiles, search, jobs, companies, messaging, network. Works with Claude, Cursor, and any MCP client.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.1","patchright":"^1.60.2","@modelcontextprotocol/sdk":"^1.12.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","tsup":"^8.5.0","eslint":"^9.27.0","vitest":"^3.2.1","prettier":"^3.5.3","@eslint/js":"^9.39.4","typescript":"^5.8.3","@types/node":"^22.15.0","typescript-eslint":"^8.61.0"},"_npmOperationalInternal":{"tmp":"tmp/linkedin-mcp-tools_2.0.1_1781680260251_0.20042690054983936","host":"s3://npm-registry-packages-npm-production"}},"2.0.2":{"name":"linkedin-mcp-tools","version":"2.0.2","keywords":["mcp","linkedin","claude","ai","model-context-protocol","mcp-server","linkedin-api","automation","anthropic","cursor","ai-assistant","voyager","recruiting","sales","prospecting","web-scraping","playwright"],"author":{"name":"Dev Agarwalla"},"license":"MIT","_id":"linkedin-mcp-tools@2.0.2","maintainers":[{"name":"devag7","email":"devagarwalla2016@gmail.com"}],"homepage":"https://github.com/devag7/linkedin-mcp#readme","bugs":{"url":"https://github.com/devag7/linkedin-mcp/issues"},"bin":{"linkedin-mcp":"dist/index.js"},"dist":{"shasum":"06cb6ec296c4ccc1e330fc5f2a440909a4930927","tarball":"https://registry.npmjs.org/linkedin-mcp-tools/-/linkedin-mcp-tools-2.0.2.tgz","fileCount":5,"integrity":"sha512-OElfsxji0lde2y+UEvWo1rVipbG2mpjleUZOcDzou+soAwsWQx+J7Tc8zmpY0dy/pV8FnXr/trFf52kLl5PhwA==","signatures":[{"sig":"MEUCIFQjsB/0sdeRsrfks0MHtcZIMSfABC3NKXC9cwZSBQH/AiEAziVWgPWI74SDBzgFDXSoEgOWXpteS8F5IYSZJ+S5kzA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":515245},"main":"dist/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"b8fd29bf8d645475a00570b480e882f20e6a33a3","mcpName":"io.github.devag7/linkedin-mcp","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"vitest run","build":"tsup","clean":"rm -rf dist","login":"tsx src/index.ts --login","spike":"tsx src/index.ts --spike","start":"node dist/index.js","format":"prettier --write 'src/**/*.ts'","capture":"tsx src/index.ts --capture","lint:fix":"eslint src/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check 'src/**/*.ts'","setup:browser":"patchright install chrome","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"devag7","email":"devagarwalla2016@gmail.com"},"repository":{"url":"git+https://github.com/devag7/linkedin-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"LinkedIn MCP server — structured LinkedIn data via a real stealth-browser session. Profiles, search, jobs, companies, messaging, network. Works with Claude, Cursor, and any MCP client.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.1","patchright":"^1.60.2","@modelcontextprotocol/sdk":"^1.12.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","tsup":"^8.5.0","eslint":"^9.27.0","vitest":"^3.2.1","prettier":"^3.5.3","@eslint/js":"^9.39.4","typescript":"^5.8.3","@types/node":"^22.15.0","typescript-eslint":"^8.61.0"},"_npmOperationalInternal":{"tmp":"tmp/linkedin-mcp-tools_2.0.2_1781688020109_0.7102699759970044","host":"s3://npm-registry-packages-npm-production"}},"2.0.3":{"name":"linkedin-mcp-tools","version":"2.0.3","keywords":["mcp","linkedin","claude","ai","model-context-protocol","mcp-server","linkedin-api","automation","anthropic","cursor","ai-assistant","voyager","recruiting","sales","prospecting","web-scraping","playwright"],"author":{"name":"Dev Agarwalla"},"license":"MIT","_id":"linkedin-mcp-tools@2.0.3","maintainers":[{"name":"devag7","email":"devagarwalla2016@gmail.com"}],"homepage":"https://github.com/devag7/linkedin-mcp#readme","bugs":{"url":"https://github.com/devag7/linkedin-mcp/issues"},"bin":{"linkedin-mcp":"dist/index.js"},"dist":{"shasum":"524ff127f5d773027c76da96c234a86827a994a8","tarball":"https://registry.npmjs.org/linkedin-mcp-tools/-/linkedin-mcp-tools-2.0.3.tgz","fileCount":5,"integrity":"sha512-Lc+zE7xWnq8Z5mxFnU597yhB2EdDH8x/HzkYY4u2J9bTwbCXXCm/kmpQuU+DK7Kzj5KsApYNowsElMVKa/BZdA==","signatures":[{"sig":"MEUCIE8JHZdbZ8idouy44NFzCdVRNm0oE+UCddNIB8uJ/ZnlAiEAoDFjWk6kX18YW3maeexx6vPblMIamjhNJsILNlf7ND8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":515245},"main":"dist/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"d54f5423191eb68ac986051e7608d5bc7a5ef11c","mcpName":"io.github.devag7/linkedin-mcp","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"vitest run","build":"tsup","clean":"rm -rf dist","login":"tsx src/index.ts --login","spike":"tsx src/index.ts --spike","start":"node dist/index.js","format":"prettier --write 'src/**/*.ts'","capture":"tsx src/index.ts --capture","lint:fix":"eslint src/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check 'src/**/*.ts'","setup:browser":"patchright install chrome","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"devag7","email":"devagarwalla2016@gmail.com"},"repository":{"url":"git+https://github.com/devag7/linkedin-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"LinkedIn MCP server — structured LinkedIn data via a real stealth-browser session. Profiles, search, jobs, companies, messaging, network. Works with Claude, Cursor, and any MCP client.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.1","patchright":"^1.60.2","@modelcontextprotocol/sdk":"^1.12.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","tsup":"^8.5.0","eslint":"^9.27.0","vitest":"^3.2.1","prettier":"^3.5.3","@eslint/js":"^9.39.4","typescript":"^5.8.3","@types/node":"^22.15.0","typescript-eslint":"^8.61.0"},"_npmOperationalInternal":{"tmp":"tmp/linkedin-mcp-tools_2.0.3_1781688245521_0.4701749128692354","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"linkedin-mcp-tools","version":"3.0.0","keywords":["mcp","linkedin","claude","ai","model-context-protocol","mcp-server","linkedin-api","automation","anthropic","cursor","ai-assistant","voyager","recruiting","sales","prospecting","web-scraping","playwright"],"author":{"name":"Dev Agarwalla"},"license":"MIT","_id":"linkedin-mcp-tools@3.0.0","maintainers":[{"name":"devag7","email":"devagarwalla2016@gmail.com"}],"homepage":"https://github.com/devag7/linkedin-mcp#readme","bugs":{"url":"https://github.com/devag7/linkedin-mcp/issues"},"bin":{"linkedin-mcp":"dist/index.js"},"dist":{"shasum":"b6df5303a1a053727658337f9adba47b97b13d3b","tarball":"https://registry.npmjs.org/linkedin-mcp-tools/-/linkedin-mcp-tools-3.0.0.tgz","fileCount":15,"integrity":"sha512-bB5q7EhQm88hvvJuEZpvaf5Ws/jtdHPjXtQz6K7C90KSH46itlJwT0gpGPKGOzrRpnHI50HJQvVYVYAPhhQmYw==","signatures":[{"sig":"MEYCIQDxkzOtodZr+IWs+9YIeZl0aarA+VZGqmi7nNSmjIiQjAIhAPlBG2B+cBN17DJ54vS/NIkNhyzpr7tv0xK8DhZAWIBb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGYebeWVM9E3tD0ZwtXQ0HHlRYuBDZxtlS/UUORoJnaoAiBBt4hYW0bx+FrLoP0UwQ6IGLQbcaVK1aXiS4Xrgf8CJQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/linkedin-mcp-tools@3.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":880449},"main":"dist/index.js","type":"module","_from":"file:linkedin-mcp-tools-3.0.0.tgz","engines":{"node":">=20.0.0"},"mcpName":"io.github.devag7/linkedin-mcp","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"vitest run","build":"tsup","clean":"rm -rf dist","login":"tsx src/index.ts --login","spike":"tsx src/index.ts --spike","start":"node dist/index.js","format":"prettier --write 'src/**/*.ts'","capture":"tsx src/index.ts --capture","prepack":"node scripts/check-package.mjs","lint:fix":"eslint src/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","verify:pack":"node scripts/check-package.mjs","demo:offline":"node scripts/demo-offline.mjs","format:check":"prettier --check 'src/**/*.ts'","verify:setup":"node scripts/verify-setup.mjs","metadata:sync":"tsx scripts/sync-metadata.ts","setup:browser":"patchright install chrome","test:coverage":"vitest run --coverage","metadata:check":"tsx scripts/sync-metadata.ts --check","prepublishOnly":"npm run build","verify:browser":"tsx scripts/verify-browser.ts","verify:package":"node scripts/verify-package.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"9a184f25-e080-4b2a-b132-53925a5a8e11"}},"_resolved":"/home/runner/work/linkedin-mcp/linkedin-mcp/linkedin-mcp-tools-3.0.0.tgz","_integrity":"sha512-bB5q7EhQm88hvvJuEZpvaf5Ws/jtdHPjXtQz6K7C90KSH46itlJwT0gpGPKGOzrRpnHI50HJQvVYVYAPhhQmYw==","repository":{"url":"git+https://github.com/devag7/linkedin-mcp.git","type":"git"},"_npmVersion":"12.2.0","description":"Unofficial local LinkedIn MCP: structured profile, job, company and inbox reads, guided offline client setup and explicit safety limits. Current provider compatibility is not guaranteed.","directories":{},"_nodeVersion":"22.23.3","dependencies":{"zod":"^3.25.1","patchright":"^1.60.2","@modelcontextprotocol/sdk":"^1.31.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","tsup":"^8.5.0","vite":"^6.4.4","eslint":"^9.27.0","vitest":"^4.1.11","prettier":"^3.5.3","@eslint/js":"^9.39.4","typescript":"^5.8.3","@types/node":"^22.15.0","typescript-eslint":"^8.61.0"},"_npmOperationalInternal":{"tmp":"tmp/linkedin-mcp-tools_3.0.0_1791350497291_0.04239653979240199","host":"s3://npm-registry-packages-npm-production"}},"3.1.0":{"name":"linkedin-mcp-tools","version":"3.1.0","keywords":["mcp","linkedin","claude","ai","model-context-protocol","mcp-server","linkedin-api","automation","anthropic","cursor","ai-assistant","voyager","recruiting","sales","prospecting","web-scraping","playwright"],"author":{"name":"Dev Agarwalla"},"license":"MIT","_id":"linkedin-mcp-tools@3.1.0","maintainers":[{"name":"devag7","email":"devagarwalla2016@gmail.com"}],"homepage":"https://github.com/devag7/linkedin-mcp#readme","bugs":{"url":"https://github.com/devag7/linkedin-mcp/issues"},"bin":{"linkedin-mcp":"dist/index.js"},"dist":{"shasum":"77d3e2b8112d1cd79ff53700fa05bb3623fcd67c","tarball":"https://registry.npmjs.org/linkedin-mcp-tools/-/linkedin-mcp-tools-3.1.0.tgz","fileCount":15,"integrity":"sha512-HQ1NG3DoGO3KpulC7LANN0+uYLXLILxNeEz9UeQAI+8+hc1VZyMqZZ2xew0pETElSPypBNnVm+IlQhWSk8j5Xg==","signatures":[{"sig":"MEQCIA+acKgQlZkTNlohgsG/UT++otBF7CpS62lmwbqRHuweAiBMKKyW8BG9uph6QgBoD6aEXSWcu6naTmHnKoiJUcTT+Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAjUQglnakmUHflThYdNqHVQ24ifArsljxYU/hflb0jIAiEA8SUQsmc5JZ+AmEbdYrKih2e8X76OUq41/M70DkPKzXo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/linkedin-mcp-tools@3.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":941961},"main":"dist/index.js","type":"module","_from":"file:linkedin-mcp-tools-3.1.0.tgz","engines":{"node":">=20.0.0"},"mcpName":"io.github.devag7/linkedin-mcp","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"vitest run","build":"node scripts/build.mjs","clean":"rm -rf dist","login":"tsx src/index.ts --login","spike":"tsx src/index.ts --spike","start":"node dist/index.js","format":"prettier --write 'src/**/*.ts'","capture":"tsx src/index.ts --capture","prepack":"node scripts/check-package.mjs","lint:fix":"eslint src/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","verify:pack":"node scripts/check-package.mjs","demo:offline":"node scripts/demo-offline.mjs","format:check":"prettier --check 'src/**/*.ts'","verify:setup":"node scripts/verify-setup.mjs","metadata:sync":"tsx scripts/sync-metadata.ts","setup:browser":"patchright install chrome","test:coverage":"vitest run --coverage","metadata:check":"tsx scripts/sync-metadata.ts --check","prepublishOnly":"npm run build","verify:browser":"tsx scripts/verify-browser.ts","verify:package":"node scripts/verify-package.mjs","verify:inventory":"node scripts/verify-data-inventory.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"9a184f25-e080-4b2a-b132-53925a5a8e11"}},"_resolved":"/home/runner/work/linkedin-mcp/linkedin-mcp/linkedin-mcp-tools-3.1.0.tgz","_integrity":"sha512-HQ1NG3DoGO3KpulC7LANN0+uYLXLILxNeEz9UeQAI+8+hc1VZyMqZZ2xew0pETElSPypBNnVm+IlQhWSk8j5Xg==","repository":{"url":"git+https://github.com/devag7/linkedin-mcp.git","type":"git"},"_npmVersion":"12.2.0","description":"Unofficial local LinkedIn MCP: structured profile, job, company and inbox reads, guided offline client setup and explicit safety limits. Current provider compatibility is not guaranteed.","directories":{},"_nodeVersion":"22.23.3","dependencies":{"zod":"^3.25.1","patchright":"^1.60.2","jsonc-parser":"^3.3.1","@modelcontextprotocol/sdk":"^1.31.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","vite":"^6.4.4","eslint":"^9.27.0","vitest":"^4.1.11","esbuild":"^0.28.2","prettier":"^3.5.3","@eslint/js":"^9.39.4","typescript":"^5.8.3","@types/node":"^22.15.0","typescript-eslint":"^8.61.0"},"_npmOperationalInternal":{"tmp":"tmp/linkedin-mcp-tools_3.1.0_1791733081387_0.7045847368049312","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"linkedin-mcp-tools","version":"4.0.0","keywords":["mcp","linkedin","claude","ai","model-context-protocol","mcp-server","linkedin-api","automation","anthropic","cursor","ai-assistant","voyager","recruiting","sales","prospecting","web-scraping","playwright"],"author":{"name":"Dev Agarwalla"},"license":"MIT","_id":"linkedin-mcp-tools@4.0.0","maintainers":[{"name":"devag7","email":"devagarwalla2016@gmail.com"}],"homepage":"https://github.com/devag7/linkedin-mcp#readme","bugs":{"url":"https://github.com/devag7/linkedin-mcp/issues"},"bin":{"linkedin-mcp":"dist/index.js"},"dist":{"shasum":"1599c222f883085b83275ed11765cf8aa294b126","tarball":"https://registry.npmjs.org/linkedin-mcp-tools/-/linkedin-mcp-tools-4.0.0.tgz","fileCount":15,"integrity":"sha512-WK30cDFcq2sXb+EkgO0fuUBW4YPLHnrgl4Gv5HEZ4qcIJ458GLGk+jjwblDPDhELiOXvnLgneIc7uc/VZJO8kQ==","signatures":[{"sig":"MEQCIBfDAL9xRAmiJz57sH5kedy3zy0+hrku/WNE0UlphdUNAiA0aF/lm2jiVV+6YVqh2TeHWfSPg0/USpnZqhE2n64Cyw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDImgB9bRU60FRd4A8JW/rM8NXp1dUE6HZpCQQmK2JPjwIhAOdeTjtDMO7RaiDT0uBReeSDrMzPM4TeNEPMiDBl5UBf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/linkedin-mcp-tools@4.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1006486},"main":"dist/index.js","type":"module","_from":"file:linkedin-mcp-tools-4.0.0.tgz","engines":{"node":">=20.0.0"},"mcpName":"io.github.devag7/linkedin-mcp","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"vitest run","build":"node scripts/build.mjs","clean":"rm -rf dist","login":"tsx src/index.ts --login","spike":"tsx src/index.ts --spike","start":"node dist/index.js","format":"prettier --write 'src/**/*.ts'","capture":"tsx src/index.ts --capture","prepack":"node scripts/check-package.mjs","lint:fix":"eslint src/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","verify:pack":"node scripts/check-package.mjs","demo:offline":"node scripts/demo-offline.mjs","format:check":"prettier --check 'src/**/*.ts'","verify:setup":"node scripts/verify-setup.mjs","metadata:sync":"tsx scripts/sync-metadata.ts","setup:browser":"patchright install chrome","test:coverage":"vitest run --coverage","metadata:check":"tsx scripts/sync-metadata.ts --check","prepublishOnly":"npm run build","verify:browser":"tsx scripts/verify-browser.ts","verify:package":"node scripts/verify-package.mjs","verify:inventory":"node scripts/verify-data-inventory.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"9a184f25-e080-4b2a-b132-53925a5a8e11"}},"_resolved":"/home/runner/work/linkedin-mcp/linkedin-mcp/linkedin-mcp-tools-4.0.0.tgz","_integrity":"sha512-WK30cDFcq2sXb+EkgO0fuUBW4YPLHnrgl4Gv5HEZ4qcIJ458GLGk+jjwblDPDhELiOXvnLgneIc7uc/VZJO8kQ==","repository":{"url":"git+https://github.com/devag7/linkedin-mcp.git","type":"git"},"_npmVersion":"12.2.0","description":"Unofficial local LinkedIn MCP: structured profile, job, company and inbox reads, guided offline client setup and explicit safety limits. Current provider compatibility is not guaranteed.","directories":{},"_nodeVersion":"22.23.3","dependencies":{"zod":"^3.25.1","patchright":"^1.60.2","jsonc-parser":"^3.3.1","@modelcontextprotocol/sdk":"^1.31.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","vite":"^6.4.4","eslint":"^9.27.0","vitest":"^4.1.11","esbuild":"^0.28.2","prettier":"^3.5.3","@eslint/js":"^9.39.4","typescript":"^5.8.3","@types/node":"^22.15.0","typescript-eslint":"^8.61.0"},"_npmOperationalInternal":{"tmp":"tmp/linkedin-mcp-tools_4.0.0_1792052132067_0.4925384567691029","host":"s3://npm-registry-packages-npm-production"}},"4.1.0":{"name":"linkedin-mcp-tools","version":"4.1.0","keywords":["mcp","linkedin","claude","ai","model-context-protocol","mcp-server","linkedin-api","automation","anthropic","cursor","ai-assistant","voyager","recruiting","sales","prospecting","web-scraping","playwright"],"author":{"name":"Dev Agarwalla"},"license":"MIT","_id":"linkedin-mcp-tools@4.1.0","maintainers":[{"name":"devag7","email":"devagarwalla2016@gmail.com"}],"homepage":"https://github.com/devag7/linkedin-mcp#readme","bugs":{"url":"https://github.com/devag7/linkedin-mcp/issues"},"bin":{"linkedin-mcp":"dist/index.js"},"dist":{"shasum":"ec82175bfd8eedbb4bea73c70202a60225161dec","tarball":"https://registry.npmjs.org/linkedin-mcp-tools/-/linkedin-mcp-tools-4.1.0.tgz","fileCount":15,"integrity":"sha512-Hd7x3QZkMgXXIOCGQL9jT3+7OdI2RZQJtsaijHqE15FZFQVQRRRBByy602WuVhEb4XBWx0gaUNVesujcPmUz/Q==","signatures":[{"sig":"MEUCIG9rmarlfwpM13vAqm2VsaLUUhf6M3wGHe5xFM09QLXDAiEAtq4Ei9DEch4j8LgHSQLXj4043VynZ73pT66+JRn2uxw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIDiBTTBdUT5/nNqghzoFEc1D2Xm3TihD1dAJaRMcfdHYAiEAsY1BoJHbuYZ9Ss9ubYOtmy6ZNIMOj6R2oEOAZoHoZ4E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/linkedin-mcp-tools@4.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1086439},"main":"dist/index.js","type":"module","_from":"file:linkedin-mcp-tools-4.1.0.tgz","engines":{"node":">=20.0.0"},"mcpName":"io.github.devag7/linkedin-mcp","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"vitest run","build":"node scripts/build.mjs","clean":"rm -rf dist","login":"tsx src/index.ts --login","spike":"tsx src/index.ts --spike","start":"node dist/index.js","format":"prettier --write 'src/**/*.ts'","capture":"tsx src/index.ts --capture","prepack":"node scripts/check-package.mjs","lint:fix":"eslint src/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","verify:pack":"node scripts/check-package.mjs","demo:offline":"node scripts/demo-offline.mjs","format:check":"prettier --check 'src/**/*.ts'","verify:setup":"node scripts/verify-setup.mjs","metadata:sync":"tsx scripts/sync-metadata.ts","setup:browser":"patchright install chrome","test:coverage":"vitest run --coverage","metadata:check":"tsx scripts/sync-metadata.ts --check","prepublishOnly":"npm run build","verify:browser":"tsx scripts/verify-browser.ts","verify:package":"node scripts/verify-package.mjs","verify:inventory":"node scripts/verify-data-inventory.mjs","build:claude-mcpb":"node scripts/build-claude-mcpb.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"9a184f25-e080-4b2a-b132-53925a5a8e11"}},"_resolved":"/home/runner/work/linkedin-mcp/linkedin-mcp/linkedin-mcp-tools-4.1.0.tgz","_integrity":"sha512-Hd7x3QZkMgXXIOCGQL9jT3+7OdI2RZQJtsaijHqE15FZFQVQRRRBByy602WuVhEb4XBWx0gaUNVesujcPmUz/Q==","repository":{"url":"git+https://github.com/devag7/linkedin-mcp.git","type":"git"},"_npmVersion":"12.2.0","description":"Unofficial local LinkedIn MCP: structured profile, job, company and inbox reads, guided offline client setup and explicit safety limits. Current provider compatibility is not guaranteed.","directories":{},"_nodeVersion":"22.23.3","dependencies":{"zod":"^3.25.1","patchright":"^1.60.2","jsonc-parser":"^3.3.1","@modelcontextprotocol/sdk":"^1.31.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","vite":"^6.4.4","eslint":"^9.27.0","vitest":"^4.1.11","esbuild":"^0.28.2","prettier":"^3.5.3","@eslint/js":"^9.39.4","typescript":"^5.8.3","@types/node":"^22.15.0","typescript-eslint":"^8.61.0"},"_npmOperationalInternal":{"tmp":"tmp/linkedin-mcp-tools_4.1.0_1792245790660_0.8254702838220926","host":"s3://npm-registry-packages-npm-production"}},"4.1.1":{"name":"linkedin-mcp-tools","version":"4.1.1","keywords":["mcp","linkedin","claude","ai","model-context-protocol","mcp-server","linkedin-api","automation","anthropic","cursor","ai-assistant","voyager","recruiting","sales","prospecting","web-scraping","playwright"],"author":{"name":"Dev Agarwalla"},"license":"MIT","_id":"linkedin-mcp-tools@4.1.1","maintainers":[{"name":"devag7","email":"devagarwalla2016@gmail.com"}],"homepage":"https://github.com/devag7/linkedin-mcp#readme","bugs":{"url":"https://github.com/devag7/linkedin-mcp/issues"},"bin":{"linkedin-mcp":"dist/index.js"},"dist":{"shasum":"de4e723c518b3f6bb38e467824e0c7bc41252a6f","tarball":"https://registry.npmjs.org/linkedin-mcp-tools/-/linkedin-mcp-tools-4.1.1.tgz","fileCount":15,"integrity":"sha512-KmiogxlA00ma6FiEGwKxHbGCPn832Ra5Y/qhZc+ONu77fo4bOmSCGws/QZaAR/xr1r5MQOvtaca6M3qQ6ntbEw==","signatures":[{"sig":"MEUCIQDl3HVacIA9HlthsLh6dNsYzwu4v5PME3KQRpKolp8HJwIgTdmlylWFqXC2VYKC25mcmjGa3wQa0EFMcsJn/zNCxJI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIAxA6w0EFOcMF9B0CflnZnuEoFE5kaWhAxjRFGgpIWnCAiBFPSJwpoCFyktlqaBIVHP9Wm0avzasbZxQcA5DX4Xypw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/linkedin-mcp-tools@4.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1089108},"main":"dist/index.js","type":"module","_from":"file:linkedin-mcp-tools-4.1.1.tgz","engines":{"node":">=20.0.0"},"mcpName":"io.github.devag7/linkedin-mcp","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"vitest run","build":"node scripts/build.mjs","clean":"rm -rf dist","login":"tsx src/index.ts --login","spike":"tsx src/index.ts --spike","start":"node dist/index.js","format":"prettier --write 'src/**/*.ts'","capture":"tsx src/index.ts --capture","prepack":"node scripts/check-package.mjs","lint:fix":"eslint src/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","verify:pack":"node scripts/check-package.mjs","demo:offline":"node scripts/demo-offline.mjs","format:check":"prettier --check 'src/**/*.ts'","verify:setup":"node scripts/verify-setup.mjs","metadata:sync":"tsx scripts/sync-metadata.ts","setup:browser":"patchright install chrome","test:coverage":"vitest run --coverage","metadata:check":"tsx scripts/sync-metadata.ts --check","prepublishOnly":"npm run build","verify:browser":"tsx scripts/verify-browser.ts","verify:package":"node scripts/verify-package.mjs","verify:inventory":"node scripts/verify-data-inventory.mjs","build:claude-mcpb":"node scripts/build-claude-mcpb.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"9a184f25-e080-4b2a-b132-53925a5a8e11"}},"_resolved":"/home/runner/work/linkedin-mcp/linkedin-mcp/linkedin-mcp-tools-4.1.1.tgz","_integrity":"sha512-KmiogxlA00ma6FiEGwKxHbGCPn832Ra5Y/qhZc+ONu77fo4bOmSCGws/QZaAR/xr1r5MQOvtaca6M3qQ6ntbEw==","repository":{"url":"git+https://github.com/devag7/linkedin-mcp.git","type":"git"},"_npmVersion":"12.2.0","description":"Unofficial local LinkedIn MCP: structured profile, job, company and inbox reads, guided offline client setup and explicit safety limits. Current provider compatibility is not guaranteed.","directories":{},"_nodeVersion":"22.23.3","dependencies":{"zod":"^3.25.1","patchright":"^1.60.2","jsonc-parser":"^3.3.1","@modelcontextprotocol/sdk":"^1.32.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","vite":"^6.4.4","eslint":"^9.27.0","vitest":"^4.1.11","esbuild":"^0.28.2","prettier":"^3.5.3","@eslint/js":"^9.39.4","typescript":"^5.8.3","@types/node":"^22.15.0","typescript-eslint":"^8.61.0"},"_npmOperationalInternal":{"tmp":"tmp/linkedin-mcp-tools_4.1.1_1792573944839_0.4437390880815788","host":"s3://npm-registry-packages-npm-production"}},"4.1.2":{"name":"linkedin-mcp-tools","version":"4.1.2","keywords":["mcp","linkedin","claude","ai","model-context-protocol","mcp-server","linkedin-api","automation","anthropic","cursor","ai-assistant","voyager","recruiting","sales","prospecting","web-scraping","playwright"],"author":{"name":"Dev Agarwalla"},"license":"MIT","_id":"linkedin-mcp-tools@4.1.2","maintainers":[{"name":"devag7","email":"devagarwalla2016@gmail.com"}],"homepage":"https://github.com/devag7/linkedin-mcp#readme","bugs":{"url":"https://github.com/devag7/linkedin-mcp/issues"},"bin":{"linkedin-mcp":"dist/index.js"},"dist":{"shasum":"27464c39366453f18a6e0c3cf56bf385f6ffe7c3","tarball":"https://registry.npmjs.org/linkedin-mcp-tools/-/linkedin-mcp-tools-4.1.2.tgz","fileCount":15,"integrity":"sha512-Si12G1Zq4hjgCGvFe7mDpxk4kcdhME0xbQcu5qlBHi1fcwgD0KPZTdKW1sYM3SCXubY6vAYHTqXt5S+0wDUw4A==","signatures":[{"sig":"MEUCIQDYMcjY2PGw0EIJGqSYx6TEI4CdauHaMgb9iAVAFUaYawIgJMwORlgyEkArRs+mJAdCFdqOQfSwIC8m637RO9DeApQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGN2VftFO73YUVTPRYbO7u1gxB28KbIKWJ2N8Ath9YW1AiEArzLdd4tIYAX8B2EVbET5irQNeUf0zA0FpxV1QTNVtRI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/linkedin-mcp-tools@4.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1090490},"main":"dist/index.js","type":"module","_from":"file:linkedin-mcp-tools-4.1.2.tgz","engines":{"node":">=20.0.0"},"mcpName":"io.github.devag7/linkedin-mcp","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"vitest run","build":"node scripts/build.mjs","clean":"rm -rf dist","login":"tsx src/index.ts --login","spike":"tsx src/index.ts --spike","start":"node dist/index.js","format":"prettier --write 'src/**/*.ts'","capture":"tsx src/index.ts --capture","prepack":"node scripts/check-package.mjs","lint:fix":"eslint src/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","verify:pack":"node scripts/check-package.mjs","demo:offline":"node scripts/demo-offline.mjs","format:check":"prettier --check 'src/**/*.ts'","verify:setup":"node scripts/verify-setup.mjs","metadata:sync":"tsx scripts/sync-metadata.ts","setup:browser":"patchright install chrome","test:coverage":"vitest run --coverage","metadata:check":"tsx scripts/sync-metadata.ts --check","prepublishOnly":"npm run build","verify:browser":"tsx scripts/verify-browser.ts","verify:package":"node scripts/verify-package.mjs","verify:inventory":"node scripts/verify-data-inventory.mjs","build:claude-mcpb":"node scripts/build-claude-mcpb.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"9a184f25-e080-4b2a-b132-53925a5a8e11"}},"_resolved":"/home/runner/work/linkedin-mcp/linkedin-mcp/linkedin-mcp-tools-4.1.2.tgz","_integrity":"sha512-Si12G1Zq4hjgCGvFe7mDpxk4kcdhME0xbQcu5qlBHi1fcwgD0KPZTdKW1sYM3SCXubY6vAYHTqXt5S+0wDUw4A==","repository":{"url":"git+https://github.com/devag7/linkedin-mcp.git","type":"git"},"_npmVersion":"12.2.0","description":"Unofficial local LinkedIn MCP: structured profile, job, company and inbox reads, guided offline client setup and explicit safety limits. Current provider compatibility is not guaranteed.","directories":{},"_nodeVersion":"22.23.3","dependencies":{"zod":"^4.6.7","patchright":"^1.60.2","jsonc-parser":"^3.3.1","@modelcontextprotocol/sdk":"^1.32.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","vite":"^6.4.4","eslint":"^9.27.0","vitest":"^4.1.12","esbuild":"^0.28.2","prettier":"^3.5.3","@eslint/js":"^9.39.4","typescript":"^5.8.3","@types/node":"^22.15.0","typescript-eslint":"^8.61.0"},"_npmOperationalInternal":{"tmp":"tmp/linkedin-mcp-tools_4.1.2_1792999010886_0.5330981944438309","host":"s3://npm-registry-packages-npm-production"}},"4.2.0":{"name":"linkedin-mcp-tools","version":"4.2.0","keywords":["mcp","linkedin","claude","ai","model-context-protocol","mcp-server","linkedin-api","automation","anthropic","cursor","ai-assistant","voyager","recruiting","sales","prospecting","web-scraping","playwright"],"author":{"name":"Dev Agarwalla"},"license":"MIT","_id":"linkedin-mcp-tools@4.2.0","maintainers":[{"name":"devag7","email":"devagarwalla2016@gmail.com"}],"homepage":"https://github.com/devag7/linkedin-mcp#readme","bugs":{"url":"https://github.com/devag7/linkedin-mcp/issues"},"bin":{"linkedin-mcp":"dist/index.js"},"dist":{"shasum":"17f46305c5ddeb5fbe851eab4ec8b66750f0b375","tarball":"https://registry.npmjs.org/linkedin-mcp-tools/-/linkedin-mcp-tools-4.2.0.tgz","fileCount":15,"integrity":"sha512-1YcuiUg0ZWawg/eRXp/IPq+z8dgmrYH0EipLq1RKf2n2cjRVXxYoKkCh+DkRlM6+miVn50/CUD7gJh/bG5ntBA==","signatures":[{"sig":"MEUCIAueLYLElGO8sjDakdN8OFVWzfkcB3qrW1rKuX3qdSUJAiEAxweRVT4aqSHfJnwhVAnJQXqcA+NskmoauYUSW+F4PaE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIAwYnKPosbgbUpmOXbOLkli1crrIiLsA++bmMEllztqOAiAFF+8jmPOp1xbKW6+eaM7x5eY7NsHHd04JRsgQpxcq3Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/linkedin-mcp-tools@4.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1116286},"main":"dist/index.js","type":"module","_from":"file:linkedin-mcp-tools-4.2.0.tgz","engines":{"node":">=20.0.0"},"mcpName":"io.github.devag7/linkedin-mcp","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"vitest run","build":"node scripts/build.mjs","clean":"rm -rf dist","login":"tsx src/index.ts --login","spike":"tsx src/index.ts --spike","start":"node dist/index.js","format":"prettier --write 'src/**/*.ts'","capture":"tsx src/index.ts --capture","prepack":"node scripts/check-package.mjs","lint:fix":"eslint src/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","verify:pack":"node scripts/check-package.mjs","demo:offline":"node scripts/demo-offline.mjs","format:check":"prettier --check 'src/**/*.ts'","verify:setup":"node scripts/verify-setup.mjs","metadata:sync":"tsx scripts/sync-metadata.ts","setup:browser":"patchright install chrome","test:coverage":"vitest run --coverage","metadata:check":"tsx scripts/sync-metadata.ts --check","prepublishOnly":"npm run build","verify:browser":"tsx scripts/verify-browser.ts","verify:package":"node scripts/verify-package.mjs","verify:inventory":"node scripts/verify-data-inventory.mjs","build:claude-mcpb":"node scripts/build-claude-mcpb.mjs","build:claude-plugin":"node scripts/build-claude-plugin.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"9a184f25-e080-4b2a-b132-53925a5a8e11"}},"_resolved":"/home/runner/work/linkedin-mcp/linkedin-mcp/linkedin-mcp-tools-4.2.0.tgz","_integrity":"sha512-1YcuiUg0ZWawg/eRXp/IPq+z8dgmrYH0EipLq1RKf2n2cjRVXxYoKkCh+DkRlM6+miVn50/CUD7gJh/bG5ntBA==","repository":{"url":"git+https://github.com/devag7/linkedin-mcp.git","type":"git"},"_npmVersion":"12.2.0","description":"Unofficial local LinkedIn MCP: structured profile, job, company and inbox reads, guided offline client setup and explicit safety limits. Current provider compatibility is not guaranteed.","directories":{},"_nodeVersion":"22.23.3","dependencies":{"zod":"^4.6.7","patchright":"^1.60.2","jsonc-parser":"^3.3.1","@modelcontextprotocol/sdk":"^1.32.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","vite":"^6.4.4","eslint":"^9.27.0","vitest":"^4.1.12","esbuild":"^0.28.2","prettier":"^3.5.3","@eslint/js":"^9.39.4","typescript":"^5.8.3","@types/node":"^22.15.0","typescript-eslint":"^8.61.0"},"_npmOperationalInternal":{"tmp":"tmp/linkedin-mcp-tools_4.2.0_1793100999365_0.42239230381076","host":"s3://npm-registry-packages-npm-production"}},"4.3.0":{"name":"linkedin-mcp-tools","version":"4.3.0","keywords":["mcp","linkedin","claude","ai","model-context-protocol","mcp-server","linkedin-api","automation","anthropic","cursor","ai-assistant","voyager","recruiting","sales","prospecting","web-scraping","playwright"],"author":{"name":"Dev Agarwalla"},"license":"MIT","_id":"linkedin-mcp-tools@4.3.0","maintainers":[{"name":"devag7","email":"devagarwalla2016@gmail.com"}],"homepage":"https://github.com/devag7/linkedin-mcp#readme","bugs":{"url":"https://github.com/devag7/linkedin-mcp/issues"},"bin":{"linkedin-mcp":"dist/index.js"},"dist":{"shasum":"1d7e17ec914380704d58254181cc442a2a17e00c","tarball":"https://registry.npmjs.org/linkedin-mcp-tools/-/linkedin-mcp-tools-4.3.0.tgz","fileCount":15,"integrity":"sha512-zDnSSOHH9KQ7dUhGJjKAObVSL/Hcu4pphgdJFunPhwDe+sYlfNP1yTvaeiHZut9FytgaohRzO/igtne8C8EHVQ==","signatures":[{"sig":"MEUCIQDOjuGQGb7lT4OZaqqKudIjxqzpldwYMeOzvCdY3fkCmAIgRdbXV3OHQvVL3GJZdedpZ1pKo5j/lRU1xPlrgQaOpec=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGrq2/aq+Yd+w15P4KFVcN915OE6oJmGqvbItvGKDUEwAiASabAQg+wT9oADe8xMyiU8n2W/xy4b0FdDy7CgNaVGDg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/linkedin-mcp-tools@4.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1132071},"main":"dist/index.js","type":"module","_from":"file:linkedin-mcp-tools-4.3.0.tgz","engines":{"node":">=20.0.0"},"mcpName":"io.github.devag7/linkedin-mcp","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"vitest run","build":"node scripts/build.mjs","clean":"rm -rf dist","login":"tsx src/index.ts --login","spike":"tsx src/index.ts --spike","start":"node dist/index.js","format":"prettier --write 'src/**/*.ts'","capture":"tsx src/index.ts --capture","prepack":"node scripts/check-package.mjs","lint:fix":"eslint src/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","verify:pack":"node scripts/check-package.mjs","demo:offline":"node scripts/demo-offline.mjs","format:check":"prettier --check 'src/**/*.ts'","verify:setup":"node scripts/verify-setup.mjs","metadata:sync":"tsx scripts/sync-metadata.ts","setup:browser":"patchright install chrome","test:coverage":"vitest run --coverage","metadata:check":"tsx scripts/sync-metadata.ts --check","prepublishOnly":"npm run build","verify:browser":"tsx scripts/verify-browser.ts","verify:package":"node scripts/verify-package.mjs","verify:inventory":"node scripts/verify-data-inventory.mjs","build:claude-mcpb":"node scripts/build-claude-mcpb.mjs","build:claude-plugin":"node scripts/build-claude-plugin.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"9a184f25-e080-4b2a-b132-53925a5a8e11"}},"_resolved":"/home/runner/work/linkedin-mcp/linkedin-mcp/linkedin-mcp-tools-4.3.0.tgz","_integrity":"sha512-zDnSSOHH9KQ7dUhGJjKAObVSL/Hcu4pphgdJFunPhwDe+sYlfNP1yTvaeiHZut9FytgaohRzO/igtne8C8EHVQ==","repository":{"url":"git+https://github.com/devag7/linkedin-mcp.git","type":"git"},"_npmVersion":"12.2.0","description":"Unofficial local LinkedIn MCP: structured profile, job, company and inbox reads, guided offline client setup and explicit safety limits. Current provider compatibility is not guaranteed.","directories":{},"_nodeVersion":"22.23.4","dependencies":{"zod":"^4.6.7","patchright":"^1.60.2","jsonc-parser":"^3.3.1","@modelcontextprotocol/sdk":"^1.32.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","vite":"^6.4.4","eslint":"^9.27.0","vitest":"^4.1.12","esbuild":"^0.28.2","prettier":"^3.5.3","@eslint/js":"^9.39.4","typescript":"^5.8.3","@types/node":"^22.15.0","typescript-eslint":"^8.61.0"},"_npmOperationalInternal":{"tmp":"tmp/linkedin-mcp-tools_4.3.0_1793273087783_0.9473715083665271","host":"s3://npm-registry-packages-npm-production"}},"4.4.0":{"_id":"linkedin-mcp-tools@4.4.0","bin":{"linkedin-mcp":"dist/index.js"},"bugs":{"url":"https://github.com/devag7/linkedin-mcp/issues"},"dist":{"shasum":"11f1831835806be006865eb777b5858626dab15f","tarball":"https://registry.npmjs.org/linkedin-mcp-tools/-/linkedin-mcp-tools-4.4.0.tgz","fileCount":15,"integrity":"sha512-o1gw/RBPp+/6R0V2smtwcb5PId7C/79WuP5c/aI54LJCAC6ez0rFkVlWjK75wtiAhNAnVCo9I9mizeoFlcu5Ng==","signatures":[{"sig":"MEQCIHEf+eMcbFLfFHsCnqlwupnqqN/K4Kzm7tRXYQ9dUiIPAiAjKeWsFAAp2SFPU76shw9DU4cOvgXDcFHZm/bcAoHjJA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCiOkBW6WbV6LwDItSqYBEXEYJJB5upGu+9sLkvtRWs1gIhAMQzeYs8+2/0nVS+jMfI0xcrRr3Z3V0t0sC9duDrQC3F"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/linkedin-mcp-tools@4.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1142262},"main":"dist/index.js","name":"linkedin-mcp-tools","type":"module","_from":"file:linkedin-mcp-tools-4.4.0.tgz","author":{"name":"Dev Agarwalla"},"engines":{"node":">=20.0.0"},"license":"MIT","mcpName":"io.github.devag7/linkedin-mcp","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"vitest run","build":"node scripts/build.mjs","clean":"rm -rf dist","login":"tsx src/index.ts --login","spike":"tsx src/index.ts --spike","start":"node dist/index.js","format":"prettier --write 'src/**/*.ts'","capture":"tsx src/index.ts --capture","prepack":"node scripts/check-package.mjs","lint:fix":"eslint src/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","verify:pack":"node scripts/check-package.mjs","demo:offline":"node scripts/demo-offline.mjs","format:check":"prettier --check 'src/**/*.ts'","verify:setup":"node scripts/verify-setup.mjs","metadata:sync":"tsx scripts/sync-metadata.ts","setup:browser":"patchright install chrome","test:coverage":"vitest run --coverage","metadata:check":"tsx scripts/sync-metadata.ts --check","prepublishOnly":"npm run build","verify:browser":"tsx scripts/verify-browser.ts","verify:package":"node scripts/verify-package.mjs","verify:inventory":"node scripts/verify-data-inventory.mjs","build:claude-mcpb":"node scripts/build-claude-mcpb.mjs","build:claude-plugin":"node scripts/build-claude-plugin.mjs"},"version":"4.4.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"9a184f25-e080-4b2a-b132-53925a5a8e11"}},"homepage":"https://github.com/devag7/linkedin-mcp#readme","keywords":["mcp","linkedin","claude","ai","model-context-protocol","mcp-server","linkedin-api","automation","anthropic","cursor","ai-assistant","voyager","recruiting","sales","prospecting","web-scraping","playwright"],"_resolved":"/home/runner/work/linkedin-mcp/linkedin-mcp/linkedin-mcp-tools-4.4.0.tgz","_integrity":"sha512-o1gw/RBPp+/6R0V2smtwcb5PId7C/79WuP5c/aI54LJCAC6ez0rFkVlWjK75wtiAhNAnVCo9I9mizeoFlcu5Ng==","repository":{"url":"git+https://github.com/devag7/linkedin-mcp.git","type":"git"},"_npmVersion":"12.2.0","description":"Unofficial local LinkedIn MCP: structured profile, job, company and inbox reads, guided offline client setup and explicit safety limits. Current provider compatibility is not guaranteed.","directories":{},"maintainers":[{"name":"devag7","email":"devagarwalla2016@gmail.com"}],"_nodeVersion":"22.23.4","dependencies":{"zod":"^4.6.7","patchright":"^1.60.2","jsonc-parser":"^3.3.1","@modelcontextprotocol/sdk":"^1.32.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","vite":"^6.4.4","eslint":"^9.27.0","vitest":"^4.1.12","esbuild":"^0.28.2","prettier":"^3.5.3","@eslint/js":"^9.39.4","typescript":"^5.8.3","@types/node":"^22.15.0","typescript-eslint":"^8.61.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/linkedin-mcp-tools_4.4.0_1793300252183_0.6790073358110577"}}},"time":{"created":"2026-06-12T13:18:19.140Z","modified":"2026-10-29T18:57:32.615Z","1.0.0":"2026-06-12T13:18:19.346Z","1.0.1":"2026-06-12T14:52:59.454Z","1.0.2":"2026-06-13T05:55:27.694Z","1.0.3":"2026-06-13T06:39:11.542Z","1.0.4":"2026-06-13T07:01:13.782Z","2.0.0":"2026-06-16T20:24:48.276Z","2.0.1":"2026-06-17T07:11:00.394Z","2.0.2":"2026-06-17T09:20:20.256Z","2.0.3":"2026-06-17T09:24:05.676Z","3.0.0":"2026-10-07T05:21:37.378Z","3.1.0":"2026-10-11T15:38:01.468Z","4.0.0":"2026-10-15T08:15:32.182Z","4.1.0":"2026-10-17T14:03:10.782Z","4.1.1":"2026-10-21T09:12:24.993Z","4.1.2":"2026-10-26T07:16:50.994Z","4.2.0":"2026-10-27T11:36:39.479Z","4.3.0":"2026-10-29T11:24:47.891Z","4.4.0":"2026-10-29T18:57:32.300Z"},"bugs":{"url":"https://github.com/devag7/linkedin-mcp/issues"},"author":{"name":"Dev Agarwalla"},"license":"MIT","homepage":"https://github.com/devag7/linkedin-mcp#readme","keywords":["mcp","linkedin","claude","ai","model-context-protocol","mcp-server","linkedin-api","automation","anthropic","cursor","ai-assistant","voyager","recruiting","sales","prospecting","web-scraping","playwright"],"repository":{"url":"git+https://github.com/devag7/linkedin-mcp.git","type":"git"},"description":"Unofficial local LinkedIn MCP: structured profile, job, company and inbox reads, guided offline client setup and explicit safety limits. Current provider compatibility is not guaranteed.","maintainers":[{"name":"devag7","email":"devagarwalla2016@gmail.com"}],"readme":"<div align=\"center\">\n\n# 🔗 LinkedIn MCP\n\n### LinkedIn for AI assistants — structured data via a real, stealth browser session\n\n[![CI](https://github.com/devag7/linkedin-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/devag7/linkedin-mcp/actions/workflows/ci.yml)\n[![npm version](https://img.shields.io/npm/v/linkedin-mcp-tools?color=cb0000&logo=npm)](https://www.npmjs.com/package/linkedin-mcp-tools)\n[![MIT License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.8-blue?logo=typescript&logoColor=white)](https://www.typescriptlang.org/)\n[![MCP](https://img.shields.io/badge/MCP-Compatible-purple?logo=anthropic&logoColor=white)](https://modelcontextprotocol.io/)\n[![Glama score](https://glama.ai/mcp/servers/devag7/linkedin-mcp/badges/score.svg)](https://glama.ai/mcp/servers/devag7/linkedin-mcp)\n\n**Structured LinkedIn reads for MCP clients — profiles, jobs, companies and inbox data, with guided offline setup and explicit safety limits.**\n\n**24 tools · 4.4.0 follow-up planning** · local browser reads · five explicitly confirmed writes · persisted safety limits and operation journals.\n\n> This is an unofficial LinkedIn integration and accounts can be restricted.\n> Review [Account safety](#-account-safety) and [SECURITY.md](SECURITY.md) before use.\n\n</div>\n\n---\n\n## Guided first run\n\n4.4.0 adds an optional local follow-up queue to the application tracker. Supply\nan explicit reference time to see overdue, due-now, upcoming, unscheduled and\nclosed records. Nothing is scheduled or sent; your records and CSV stay unchanged.\nIt retains 4.3.0 interview practice, 4.2.0 evidence reuse and resume/cover-letter\ndrafts, 24 tools, reviewed dependency repairs and the SDK input guard. See the\n[release notes](https://github.com/devag7/linkedin-mcp/blob/main/docs/RELEASE_NOTES_4.4.0.md)\nand [readiness record](https://github.com/devag7/linkedin-mcp/blob/main/docs/RELEASE_READINESS_4.4.0.md).\nThe commands below target 4.4.0; check its [release availability](https://github.com/devag7/linkedin-mcp/releases/tag/v4.4.0)\nand destination verification before installing. These instructions do not\nestablish publication, native use or broader live compatibility.\n\nThe immutable 4.1.1 archive/tag have newly reported October 26 dependency\nadvisories. Their verified bytes and historical receipts do not establish\ncurrent security clearance. Source contributors can use a reviewed checkout\nfor offline setup and verification. 4.1.0 introduced local application\nworksheets and CSV export; neither fills or submits applications.\n\n**4.0.0 added offline retirement preview and native Windows privacy checks.**\nRead its breaking Windows upgrade notes before changing an existing installation.\nThis is a local stdio tool; Glama's generic “Deploy Server” or browser-hosting\ncontrols are not supported installation instructions. No hosted service is required.\n[4.0.0 release notes](docs/RELEASE_NOTES_4.0.0.md) describe those changes and limits.\n[Verified 3.1.0 publication receipts](docs/RELEASE_EVIDENCE_3.1.0.md)\nremain available for the preceding release.\n\nStart with the [quick start](#-quick-start) and [setup guide](SETUP_GUIDE.md).\nSetup reports local issues, client configuration and exact next steps without\ncontacting LinkedIn. Merge the generated entry into your existing client file.\nSee the [synthetic setup demonstration](docs/RELEASE_DEMO_3.0.0.md): real published\npackage, disposable fixtures, no login or LinkedIn request.\n\n`research_jobs` is **not included**; its job-research brief remains in\n[draft PR #5](https://github.com/devag7/linkedin-mcp/pull/5). The\n[execution plan](docs/PRODUCT_EXECUTION_PLAN_2026.md) tracks first use, privacy,\nfuture features and measured distribution outcomes.\nThe [current completion status](docs/CURRENT_COMPLETION_STATUS_2026-10-18.md)\nseparates released features from remaining native, live and distribution gates.\nThe [October 21 full-scope audit](docs/COMPLETION_AUDIT_2026-10-21.md)\nmaps all original requirements and later job-seeker additions to their remaining work.\nThe owner-run [private GitHub traffic ledger](docs/ADOPTION_TRAFFIC_LEDGER_2026-10-19.md)\ntracks stars and rolling traffic without user telemetry.\n\nFor local preparation, `prepare_job_application` can reuse a user-supplied\nevidence library and optionally return draft resume bullets and a cover letter.\nOnly explicitly selected claims are included, with their user-provided lineage;\nmissing evidence stays missing. The server stores no library or draft. See the\n[materials workflow](https://github.com/devag7/linkedin-mcp/blob/main/docs/APPLICATION_MATERIALS_2026-10-27.md).\n\nThis version does not fill or submit job applications, including Easy Apply.\nUse the [job seeker and Claude distribution plan](docs/JOB_SEEKER_AND_CLAUDE_DISTRIBUTION_2026-10-16.md)\nfor the application handoff workflow, proposed next features and the separate\nrequirements for listing a connector in Claude.\nDesktop bundle availability and hashes are tracked separately in the\n[bundle guide](docs/CLAUDE_DESKTOP_BUNDLE_2026-10-17.md) and release assets.\nHistorical 4.1.1 bundle identity does not clear its newly reported dependency\nfindings; the builder retains its zero-audit gate. For offline source checks,\n`npm run build:claude-mcpb -- --from-source` builds an explicitly **unreleased**\ncheckout bundle. Those checks do not establish native installation or directory\nacceptance.\n\n## What it does\n\nThe server uses Patchright to open a persistent Google Chrome profile and makes\nVoyager requests from its authenticated page. Results are shaped into JSON for\nMCP clients. Some discovery tools fall back to page data. Undocumented endpoints,\nquery IDs, browser behavior and response shapes can change.\n\nUseful starting workflows are profile research, job/company research and inbox\ntriage. Alpha writes are disabled by default. When enabled they require a reviewed server-issued preview token and `confirm:true`, consume conservative attempt budgets, and\nreturn a status including `unknown` when completion cannot be established.\n\n## Verification status\n\n3.0.0 introduced breaking safety and client requirements; read the\n[migration guide](SETUP_GUIDE.md#migrating-from-203-to-300).\n[Hosted source/package/browser checks](https://github.com/devag7/linkedin-mcp/actions/workflows/ci.yml)\ncover Node20/22 across Linux, macOS and Windows. Exact core-only candidate/head\nresults are recorded in [release readiness](docs/RELEASE_READINESS_3.0.0.md). One explicitly consented macOS\nmaintainer health/own-profile read also passed with partial metadata;\n[scope and evidence](docs/ZERO_COST_EXECUTION_EVIDENCE_2026-10-01.md#7-consented-maintainer-live-read--passed-limited-scope)\ndo not establish fresh-user or broader live compatibility.\nThe exact public 4.1.1 bytes and destinations were\n[independently verified](docs/RELEASE_EVIDENCE_4.1.1.md); that historical identity\nproof does not clear current advisories. Consult the\n[4.1.2 release evidence](https://github.com/devag7/linkedin-mcp/blob/main/docs/RELEASE_EVIDENCE_4.1.2.md)\nfor its destination status. Native-client first-use cohorts\nand broad live-provider compatibility remain unverified.\nSee [execution progress](docs/ROADMAP_PROGRESS.md) and the linked evidence.\n\n| Area | Current evidence |\n| --- | --- |\n| HTTP boundary, checkpoints, write accounting | Offline regression and MCP protocol fixtures |\n| Account identity, profile ownership, shared budgets | Production tool fixtures plus independent Node-process contention/crash tests |\n| Setup diagnostics and cold saved sessions | Offline platform/path fixtures and production runtime fixtures |\n| Packed artifact | Isolated install, version/doctor checks and compiled MCP smoke; no LinkedIn request |\n| Profiles, feed, jobs, companies and inbox | Registered tools; repository notes contain historical live claims. Current live availability is unknown. |\n| Five write tools | Conservative classifiers and transaction fixtures. No live writes were sent in this implementation. New-thread messaging remains experimental. |\n| Official OAuth provider | Not connected to the active MCP runtime |\n\nLocal checks and CI configuration are evidence of the cases they exercise,\nnot a guarantee of current provider compatibility or account safety.\n\n---\n\n## 🚀 Quick start\n\nUse Node.js 20 or later and Google Chrome. The commands below target 4.4.0;\ncheck its [release availability](https://github.com/devag7/linkedin-mcp/releases/tag/v4.4.0)\nand [verification status](https://github.com/devag7/linkedin-mcp/blob/main/docs/RELEASE_READINESS_4.4.0.md) before installing.\nSetup is offline; login and subsequent reads\nare deliberate account actions. For a stable installation path and Windows\ncommands, see the [setup guide](SETUP_GUIDE.md). On Windows, 4.1.1 retains the\nrequirement that state paths stay beneath the actual `%USERPROFILE%` tree. A custom path outside it\nwill be refused even when an older version accepted it. See the\n[migration notes](docs/RELEASE_NOTES_4.0.0.md#upgrade-notes-and-limits).\n\n**1. Diagnose offline:**\n\n```bash\nnpm install --prefix \"$HOME/.local/share/linkedin-mcp\" linkedin-mcp-tools@4.4.0\nnode \"$HOME/.local/share/linkedin-mcp/node_modules/linkedin-mcp-tools/dist/index.js\" --setup cursor\n```\n\nAlso accepts `claude-desktop` or `vscode`. Resolve the reported local issues, then\nmerge the generated entry into your existing client file. Setup performs no login\nor account request. Use a stable local installation and regenerate its entry\nafter upgrades; the report pins its installed build rather than a temporary path.\n\n**2. Log in once** (opens a real Chrome window — sign in, solve any captcha/2FA):\n\n```bash\nnode \"$HOME/.local/share/linkedin-mcp/node_modules/linkedin-mcp-tools/dist/index.js\" --login\n```\n\nNeeds Google Chrome installed (or run `npx patchright install chrome` once). Your\nsession — Cloudflare clearance and all — persists to `~/.linkedin-mcp/profile/`.\n\n**3. Configure your client.** Prefer the generated entry above. For clients\naccepting `mcpServers`, this version-pinned example is an alternative:\n\n```json\n{\n  \"mcpServers\": {\n    \"linkedin\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"linkedin-mcp-tools@4.4.0\"]\n    }\n  }\n}\n```\n\nStart with `whoami` for local status. When you deliberately authorize an account\nread, try *\"Read my own profile once and report its returned status and any partial\nmetadata, then close the session. Do not retry or write.\"* Stop at a checkpoint.\nCurrent provider availability is uncertain; preserve empty, partial and error\nstatuses. First-use results across Claude Desktop, Cursor and VS Code have not yet\nbeen measured.\n\n<details>\n<summary><b>From source / contributing</b></summary>\n\n```bash\ngit clone https://github.com/devag7/linkedin-mcp.git\ncd linkedin-mcp\nnpm ci\nnpm run setup:browser     # installs the Chrome patchright drives\nnpm run login             # manual account login; only with your deliberate consent\nnpm run spike             # live own-profile request; requires separate authorization\nnpm run build             # produces dist/\nnode dist/index.js --doctor # local setup checks; no browser or network\nnpm run verify:package     # install/test the packed artifact offline against LinkedIn\n```\n\nMCP config: `\"command\": \"node\", \"args\": [\"/absolute/path/to/dist/index.js\"]`.\n</details>\n\n### Diagnose this source checkout\n\n```bash\nnpm run build\nnode dist/index.js --doctor\n```\n\nThe report shows package/Chrome availability, profile accessibility and ownership,\nsafety-state validity, selected transport and next steps. It omits cookies, tokens,\nprofile content and private paths. It does not open Chrome or contact LinkedIn.\n\nAfter you have logged in and stopped other processes using the profile, explicitly\nselect a live identity read with `node dist/index.js --doctor --live`. The probe\nhas a 30-second deadline followed by browser cleanup; a deadline does not prove\nthat an already-started read was cancelled. No write is part of diagnosis.\n\n`whoami` reports `sessionState: \"not_checked\"` and `loggedIn: null` on a cold\nruntime. `health_check` deliberately opens the saved session and performs a live\nAPI check. A saved profile or cookie alone is not reported as a healthy API.\n\nHeadful login needs a local display. The normal server defaults to headless Chrome.\nRemote browser/profile deployment and profile copying are not verified here.\n\n---\n\n## Local HTTP clients\n\nStdio remains the default. HTTP is an explicit, **loopback-only** option for a\nlocal MCP client that can send an `Authorization` header. Remote hosts, reverse\nproxies, browser CORS clients, and serverless deployment are unsupported.\n\nGenerate a local secret and start the server from this checkout:\n\n```bash\nnpm run build\nexport LINKEDIN_HTTP_TOKEN=\"$(node -e 'console.log(require(\"node:crypto\").randomBytes(32).toString(\"hex\"))')\"\nnode dist/index.js --transport http --port 3000\n```\n\nConfigure your client with URL `http://127.0.0.1:3000/mcp` and the header\n`Authorization: Bearer <the same LINKEDIN_HTTP_TOKEN value>`. Keep the secret in\nyour client's protected configuration; do not put it in a URL or commit it.\nThe token must contain 32–256 letters, digits, underscores, or hyphens. Generate\nit randomly; length validation cannot prove a token is unpredictable.\n\n- Every endpoint, including `GET /health`, requires the token. Missing or invalid\n  credentials return `401`. Health reports listener status, not LinkedIn login.\n- HTTP binds to `127.0.0.1`. Host must be `127.0.0.1:<port>` or\n  `localhost:<port>`; an Origin, if present, must exactly match `http://<Host>`.\n  Invalid hosts/origins return `403`. No CORS access is granted.\n- `POST /mcp` accepts uncompressed JSON up to 1 MiB. Body upload has a 10-second\n  deadline; responses have a 180-second deadline. There are at most 16 active\n  HTTP requests and 32 TCP connections. Excess requests return `503`.\n- Protocol connections share one browser, queue, pacer, budget tracker, and\n  circuit breaker in this process. Closing a client does not close the browser;\n  shutting down the listener closes the shared runtime.\n- A timeout or disconnect **does not prove an action was cancelled**. Long pacing\n  waits may outlast the response deadline. Check LinkedIn before retrying a write;\n  HTTP does not retry it automatically. Prefer stdio for long-running workflows.\n\nBrowser profile ownership and account budget transactions are shared across local\nprocesses. A second owner is refused before Chrome opens. These controls do not\nestablish account safety. See [SECURITY.md](SECURITY.md).\n\n---\n\n## 🛡️ Account safety\n\n**Read this.** Automating LinkedIn violates its User Agreement and **can get your account restricted or banned** — no tool can prevent that, including this one. The built-in safety features (daily caps, human pacing, warmup, circuit breaker) **reduce risk; they do not eliminate it.**\n\nDefaults err conservative:\n\n- Connections **20/day**, messages **50/day**, likes+comments **50/day** combined, follows **30/day** — combined write cap **150/local day**.\n- Profile views **80/day**, searches **30/day**.\n- Conservative **warmup limits**, a **pending-invite ceiling**, and **acceptance-rate** pauses. The first verified use starts a persisted warmup clock. Week 1 blocks messages; weeks 2 and 3 gradually permit them. This measures local tool use, not LinkedIn account age.\n- Reads paced 4–12s apart, writes 45–150s, with long breaks and a working-hours gate.\n- A **persistent circuit breaker** blocks further automated calls after an observed checkpoint URL, HTTP 999, challenge HTML from a JSON endpoint, or supported challenge-page signal. It never tries to solve a checkpoint. Already in-flight requests cannot be undone.\n\nReview platform rules and decide whether the integration is appropriate for your\naccount. Caps and pacing cannot prevent restrictions. Resolve challenges manually;\nnever treat the safety layer as a compliance or evasion guarantee.\n\n---\n\n## Recovering from a checkpoint\n\n`CHECKPOINT_REQUIRED` means a challenge was observed; `CIRCUIT_OPEN` means the\nstored stop is still active. `health_check` reports `blocked` without probing\nLinkedIn while stopped. `whoami` and `close_session` remain available.\n\n1. Stop every server/probe using the profile.\n2. Run `linkedin-mcp --login`, complete the checkpoint manually in Chrome, and\n   open your LinkedIn feed.\n3. Restart the server only after login reports that both the session and API\n   were verified. A cookie alone, restarting, or `--logout` does not clear the stop.\n\nBreaker state is stored beside the profile: `<LINKEDIN_PROFILE_DIR>.circuit.json`\n(default `~/.linkedin-mcp/profile.circuit.json`). A successful interactive recovery\nclears the hard stop and preserves action cooldowns. Invalid/unreadable state\nfails closed; restore the state or repair storage rather than deleting it to\nresume automation.\n\nNormal login expiry returns `AUTH_REQUIRED` without a hard trip. Opaque redirects\nhide their destination, so they are reported as authentication required rather\nthan guessed to be checkpoints. Detection uses bounded response/page signals;\nit does not establish live compatibility with every LinkedIn challenge variant.\n\n---\n\n## Write outcomes and operation IDs\n\nAll five alpha write tools require `LINKEDIN_ENABLE_WRITES=true` and `confirm:true`. With confirmation omitted/false they return a local preview without opening Chrome. Review its target, content, audience and route; after explicit human approval, use the returned operation ID as `operation_id` and token as `preview_token`. Tokens expire after five minutes, are bound to the exact action, target and content, and are consumed on submission. Missing or changed proofs are refused before dispatch. The token proves that the server issued a preview; it cannot prove human consent. Starting new message threads also requires `LINKEDIN_ENABLE_EXPERIMENTAL_MESSAGES=true` and has no current live success evidence. Supply a unique `operation_id`\n(8–128 letters, digits, `_` or `-`) before the approved call. For example:\n\n```json\n{\n  \"text\": \"The draft you reviewed\",\n  \"visibility\": \"PUBLIC\",\n  \"confirm\": true,\n  \"operation_id\": \"<operationId returned by the reviewed preview>\",\n  \"preview_token\": \"<token returned by that same preview>\"\n}\n```\n\nThe placeholders above must be replaced with the actual preview values; the\nexample is not a submission to copy unchanged.\n\nThe result includes `operationId`, `replayed`, `status`, `ok`, and `httpStatus`.\nRepeating the same tool, ID, and inputs retrieves the stored outcome without\nsubmitting again, including after restart. Changed inputs with the same ID are\nrejected. A preview can generate an ID when omitted; every new submission must include\nthat preview ID and its token. Previously journaled outcomes can be looked up\nwith identical tool/ID/inputs after expiry or restart without a fresh token.\nNever generate a replacement ID to retry an uncertain submission.\n\n`unknown` means the request may have reached LinkedIn: a disconnect, timeout,\nserver error, unreadable body, or unrecognized success response cannot establish\nwhether it completed. Inspect the target manually. The server never automatically\nretries; the same ID remains a lookup. A bare HTTP 409 is `failed` unless its body\nprovides an explicit duplicate/already-connected signal. Quota and account\nrestriction outcomes activate the corresponding action cooldown.\n\nSafety limits count every reserved attempt, including known failures and unknown\noutcomes. Only confirmed connections increment sent/pending invitation analytics.\nUncertain invitations also count conservatively toward invitation safety gates\nacross days. `health_check` includes journaled `attempted`, `successful`, and\n`uncertain` totals; historical counts from older versions remain in `actions.used`\nand are not guessed to be successful.\n\nThe journal is part of `~/.linkedin-mcp/budgets.json`, alongside existing counters.\nIt retains IDs, input hashes, action buckets, dates, and status codes; it does not\nstore message/post text or raw response details. Replays return stored status/code\nwith a generic explanation. Corrupt or unreadable state blocks startup; save\nfailures stop further data/action work until storage is repaired. The file is\nreplaced atomically with owner-only permissions. The journal stops new writes at\n10,000 entries or an 8 MiB state file; IDs are never automatically discarded.\nDeleting the state erases both safety counts and replay protection.\n\nThe runtime derives a hashed account key from authenticated `/me` identity;\nit does not use a cookie, profile path or public username as the account key.\nDifferent profiles for the same member share the global budget/journal file.\nIdentity is reverified on browser launch and before writes. A changed member\nstops the runtime with `ACCOUNT_CHANGED`; restart only after reviewing the account.\nMissing or ambiguous identity returns `ACCOUNT_UNRESOLVED` before submission.\n\nBudget reserve/commit reload and save under a shared local filesystem lock. Failed\nread attempts count toward metered read limits. Existing `default` counts remain\nan unattributed conservative allowance reduction; they are not assigned to a new\nmember or invented as successful writes. Unattributed legacy operation IDs return\n`unknown` rather than asserting they belong to the verified member. On a fresh\nruntime, a hard checkpoint prevents the identity read required for journal lookup.\n\nProfile ownership uses `<canonical-profile>.owner.lock`; shared budget transactions\nuse `<canonical-budget-file>.lock`. `close_session` and idle closing retain profile\nownership while the process can relaunch Chrome. Stop the server to release it.\nLocks are never stolen by timeout or PID guessing. After a crash, stop all users\nand associated Chrome processes, preserve safety files, then manually repair only\nthe orphaned lock directory. Never delete budgets or journals to resume automation.\nLocal filesystems are the supported state-sharing boundary; network filesystems\nand power-loss durability are not certified.\n\nSee [write evidence](docs/PHASE0_WRITE_EVIDENCE.md) and\n[account/ownership evidence](docs/PHASE0_ACCOUNT_EVIDENCE.md).\n\n---\n\n## ⚙️ Configuration\n\n| Variable | Default | Description |\n|---|---|---|\n| `LINKEDIN_PROVIDER` | `browser` | Official mode is unavailable and refuses before browser creation. |\n| `LINKEDIN_HEADLESS` | `true` | Server runs headless. `--login` always opens a real window regardless. Set `false` to watch the browser. |\n| `LINKEDIN_CHROME_PATH` | — | Explicit Chrome binary path (else patchright's). |\n| `LINKEDIN_PROFILE_DIR` | `~/.linkedin-mcp/profile` | Persistent browser profile. |\n| `LINKEDIN_IDLE_TIMEOUT_MS` | `300000` | Close the browser after this idle time (0 disables). |\n| `LINKEDIN_CONCURRENCY` | `1` | Only serial execution is supported. |\n| `LINKEDIN_ENABLE_WRITES` | `false` | Deliberate opt-in for alpha browser writes; per-call approval still required. |\n| `LINKEDIN_ENABLE_EXPERIMENTAL_MESSAGES` | `false` | Separate opt-in for unverified new-thread messaging. |\n| `TRANSPORT` | `stdio` | `stdio` (primary) or local-only `http`. |\n| `LINKEDIN_HTTP_TOKEN` | — | Required random bearer secret for HTTP; unused by stdio. |\n\n---\n\n## Tool contracts and verification\n\n<!-- capabilities:start -->\n\n24 registered tools. Native contract version 1 returns structuredContent and identical JSON text, with fetchedAt, source, partial and status metadata. [Full route and verification inventory](docs/CAPABILITIES.md).\n\n| Group | Tools |\n| --- | --- |\n| Session | `whoami`, `health_check`, `close_session` |\n| Reads | `get_my_profile`, `get_profile`, `get_feed`, `get_notifications`, `search_people`, `search_jobs`, `get_inbox`, `get_job_details`, `prepare_job_application`, `export_application_tracker`, `search_companies`, `get_company`, `get_company_posts`, `get_company_employees`, `get_pending_invitations`, `get_conversation` |\n| Opt-in alpha writes | `connect_with_person`, `send_message`, `create_post`, `react_to_post`, `comment_on_post` |\n\n<!-- capabilities:end -->\n\n## Offline walkthrough\n\nBuild this checkout, then run `npm run demo:offline`. It makes real local MCP\ncalls with synthetic inputs and a persisted stop: cold status, capabilities, a\nreviewable draft preview, blocked read and clean close. It opens no browser and\nsends no LinkedIn request. [Dated sample output](docs/OFFLINE_DEMO.txt) is labeled\nsynthetic; a real first-read recording remains a consented validation step.\n\n## Bounded workflows and setup\n\n[Job/company research, profile comparison and inbox triage](docs/WORKFLOWS.md)\ncontain explicit call limits and source-link rules. [Client setup](SETUP_GUIDE.md)\nseparates locally exercised MCP transport from untested client applications.\n[Privacy and deletion](docs/PRIVACY.md) explains retained safety history.\n[Selected-profile retirement design](docs/RETIREMENT_TRANSACTION_DESIGN.md)\ndocuments the selected-profile retirement command, its confirmation and\ninterruption behavior, the read-only recovery preview for an interrupted\nattempt, and the shared state it deliberately preserves. Both commands are in\npublished 4.1.0.\n[Roadmap coverage](docs/ROADMAP_COVERAGE.md) tracks every acceptance requirement.\nThe 3.1.0 release adds a [read-only config merge preview](SETUP_GUIDE.md#preview-an-existing-client-configuration)\nthat checks an explicitly selected JSON/JSONC file for missing, matching or conflicting\nentries without changing files or exposing other servers' credentials. It is\navailable in published 3.1.0; native-client and live compatibility remain unverified.\n[Official-provider pilot](docs/OFFICIAL_PROVIDER_PILOT.md) describes the app/scopes\nand integration evidence still needed. The experimental Docker builder stage\npassed locally on Node 22; container display/login and runtime remain unverified.\n\n## 🛠 Development\n\n```bash\nnpm run dev          # run from source (stdio)\nnpm run typecheck\nnpm test             # vitest (safety layer + smoke)\nnpm run build\n```\n\n---\n\n## 📄 License\n\nMIT — see [LICENSE](LICENSE). Missing files caused by cloud synchronization were recovered from the committed revision with maintainer authorization. The 3.0.0 core scope and destination receipts are tracked in release readiness. Not affiliated with LinkedIn.\n\n<div align=\"center\">\n\n[![linkedin-mcp MCP server](https://glama.ai/mcp/servers/devag7/linkedin-mcp/badges/card.svg)](https://glama.ai/mcp/servers/devag7/linkedin-mcp)\n\nMade by [Dev Agarwalla](https://github.com/devag7)\n\n</div>\n\n### Version 3.1.0 local data inventory\n\nThe 3.1.0 command `node dist/index.js --data-inventory` reports\nwhich fixed local storage categories are present: the selected profile, its\ncircuit and owner lock, shared budgets/write journal and transaction lock, and\nlegacy credentials. It reads filesystem metadata only, prints no private paths\nor contents, and changes nothing. It does not read or validate JSON, traverse\nprofile contents, prove owners have stopped, verify Windows ACLs or authorize\ndeletion. Any observed alias, unexpected type, inaccessible or changed identity,\nor present lock returns `needs_attention` with exit code 1. Otherwise `observed`\nmeans only that the bounded presence snapshot succeeded.\n\nThis command is **available in released 3.1.0**, not 3.0.0. See the\n[inventory contract](docs/PRIVACY.md#inventory-json-contract); coordinated erasure remains open.\n","readmeFilename":"README.md"}