{"_id":"j-can-see","_rev":"16-a5ca4e3a11710131209dfc3d02613edc","name":"j-can-see","dist-tags":{"latest":"0.10.1"},"versions":{"0.1.0":{"name":"j-can-see","version":"0.1.0","keywords":["mcp","model-context-protocol","vision","image","ocr","claude-code","codex","grok"],"license":"MIT","_id":"j-can-see@0.1.0","maintainers":[{"name":"jirachi","email":"jinyonghui1994@gmail.com"}],"bin":{"j-can-see":"dist/index.js"},"dist":{"shasum":"c1c13cb38161654968ed0ee02bde94c1e57fef7f","tarball":"https://registry.npmjs.org/j-can-see/-/j-can-see-0.1.0.tgz","fileCount":15,"integrity":"sha512-yRyHEk0wx4Gbovl72VJ9C8TjAO1UJnCbvzOH7OVrMc0WMNOZNTolM/IsOka1ChFh2KajYmBVqbTygomNKAr3Sw==","signatures":[{"sig":"MEQCIDq5yFHLskRJN6uU8XJQN6YXE8DEcbmKdIZQ/75BmW55AiACbf0lJuos4OnxAMdXfR7u4pHRZdhQlcgw1XIcoqW/7w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29835},"main":"dist/index.js","type":"module","engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"jirachi","email":"jinyonghui1994@gmail.com"},"_npmVersion":"10.9.8","description":"MCP server that routes images (local file / URL / clipboard / latest screenshot) to a vision model via an OpenAI-compatible proxy. For AI coding clients whose primary model has no multimodal input.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.4.3","jimp":"^1.6.1","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/j-can-see_0.1.0_1785918710354_0.5953453129085025","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"j-can-see","version":"0.2.0","keywords":["mcp","model-context-protocol","vision","image","ocr","claude-code","codex","grok"],"license":"MIT","_id":"j-can-see@0.2.0","maintainers":[{"name":"jirachi","email":"jinyonghui1994@gmail.com"}],"bin":{"j-can-see":"dist/index.js"},"dist":{"shasum":"73a6758048951dbb969d8c0bb0672f6cf680e493","tarball":"https://registry.npmjs.org/j-can-see/-/j-can-see-0.2.0.tgz","fileCount":15,"integrity":"sha512-vRHMMQawQb+jbD1JYYRW8P8Lzb96Jx49T4Vp2hO7sS+Jhki7MkZdUGCxaPZzWVt8ep7NEvEMxG4NVdLcIl+RfA==","signatures":[{"sig":"MEUCIEiv5Ws7OdDAGLyO1V406gRiJtPX69mhvJGva4vLZcaBAiEA5NxfOrIEcszSKjAnuqwlIXNk3Ksl/8dQvnjS1FbbFEQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31727},"main":"dist/index.js","type":"module","engines":{"node":">=20"},"gitHead":"1b1a263c997380f1942c64e0b0720619b1942279","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"jirachi","email":"jinyonghui1994@gmail.com"},"_npmVersion":"10.9.8","description":"MCP server that routes images (local file / URL / clipboard / latest screenshot) to a vision model via an OpenAI-compatible proxy. For AI coding clients whose primary model has no multimodal input.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.4.3","jimp":"^1.6.1","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/j-can-see_0.2.0_1786603576832_0.0229229830200135","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"j-can-see","version":"0.4.0","keywords":["mcp","model-context-protocol","vision","image","ocr","claude-code","codex","grok"],"license":"MIT","_id":"j-can-see@0.4.0","maintainers":[{"name":"jirachi","email":"jinyonghui1994@gmail.com"}],"bin":{"j-can-see":"dist/index.js"},"dist":{"shasum":"c33c90dc1a07c6f14d30a73e941d50fb9369e5cf","tarball":"https://registry.npmjs.org/j-can-see/-/j-can-see-0.4.0.tgz","fileCount":17,"integrity":"sha512-RvOHEpbBhnXFUiQt502x4nj7CaZnRT5wCpHnFXIqAdVtdtOu3xD5BaPCoak4P8vYn4BdT9fTyq4egwYZ9a7F0A==","signatures":[{"sig":"MEQCIH0hj3Gp57QiyHtX2lg83fL3DZ+k9rfDoIyhTtQHWAfcAiBBHSpz6wtRaXlZl01dz3EZtxjh+b4G4nX30FBj7fuOAg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49881},"main":"dist/index.js","type":"module","engines":{"node":">=20"},"gitHead":"67ad4a9ab6bf25699692dd5b4312a160188be364","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"jirachi","email":"jinyonghui1994@gmail.com"},"_npmVersion":"10.9.8","description":"MCP server that routes images (local file / URL / clipboard / latest screenshot) to a vision model via an OpenAI-compatible or Anthropic API. For AI coding clients whose primary model has no multimodal input.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.4.3","jimp":"^1.6.1","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/j-can-see_0.4.0_1786609170862_0.8462968306960656","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"j-can-see","version":"0.4.1","keywords":["mcp","model-context-protocol","vision","image","ocr","claude-code","codex","grok"],"license":"MIT","_id":"j-can-see@0.4.1","maintainers":[{"name":"jirachi","email":"jinyonghui1994@gmail.com"}],"homepage":"https://github.com/PichurChill/j-can-see#readme","bugs":{"url":"https://github.com/PichurChill/j-can-see/issues"},"bin":{"j-can-see":"dist/index.js"},"dist":{"shasum":"94b0f5d15ed038730c05672c24373b4efec8c45a","tarball":"https://registry.npmjs.org/j-can-see/-/j-can-see-0.4.1.tgz","fileCount":17,"integrity":"sha512-PK8ClmdbaUBtqzdAuOqWj9Nt8iqytPpBUcwAiwoOSNPbObUsZQB3z/3le387Bk2gtIhPBt6lNJcGKfCNm01cmQ==","signatures":[{"sig":"MEQCIDEGmBLuX2h6Qo0E19Ok3RY9UYKOscGeDHb4V5FtkpmyAiAi6+PPzIsW4MiR8q/4jjXOrX4bavk5jSftB6yTB0huoA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50726},"main":"dist/index.js","type":"module","engines":{"node":">=20"},"gitHead":"438b057e1fd67bbc39c08ec7fa63f3abf1158716","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"jirachi","email":"jinyonghui1994@gmail.com"},"repository":{"url":"git+https://github.com/PichurChill/j-can-see.git","type":"git"},"_npmVersion":"10.9.8","description":"MCP server that routes images (local file / URL / clipboard / latest screenshot) to a vision model via an OpenAI-compatible or Anthropic API. For AI coding clients whose primary model has no multimodal input.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.4.3","jimp":"^1.6.1","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/j-can-see_0.4.1_1786609549024_0.40348459557852223","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"j-can-see","version":"0.4.2","keywords":["mcp","model-context-protocol","vision","image","ocr","claude-code","codex","grok"],"license":"MIT","_id":"j-can-see@0.4.2","maintainers":[{"name":"jirachi","email":"jinyonghui1994@gmail.com"}],"homepage":"https://github.com/PichurChill/j-can-see#readme","bugs":{"url":"https://github.com/PichurChill/j-can-see/issues"},"bin":{"j-can-see":"dist/index.js"},"dist":{"shasum":"fc672e32613cfc4f01dc1e5402d52a9c074f6614","tarball":"https://registry.npmjs.org/j-can-see/-/j-can-see-0.4.2.tgz","fileCount":17,"integrity":"sha512-5nCOKoeaoLNegnrwm7zqKvnDG971stoVB5BQUTJfsryvZ6nnWIBqukK3jLVL4KCm9OchouEVwGqO+QsjGdEV1A==","signatures":[{"sig":"MEYCIQCaFO+AsClm0ZyGNy3LdqDWRsSpvsOI8+9pogd1780W5AIhANhwP3FEwCpKCtGiFHpKnAN3HUmg2m40KlmgMcpj4ffG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51262},"main":"dist/index.js","type":"module","engines":{"node":">=20"},"gitHead":"9fea0dbd57fbf96cdb44cce58d8689d289ace907","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"jirachi","email":"jinyonghui1994@gmail.com"},"repository":{"url":"git+https://github.com/PichurChill/j-can-see.git","type":"git"},"_npmVersion":"10.9.8","description":"MCP server that routes images (local file / URL / clipboard / latest screenshot) to a vision model via an OpenAI-compatible or Anthropic API. For AI coding clients whose primary model has no multimodal input.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.4.3","jimp":"^1.6.1","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/j-can-see_0.4.2_1786675373563_0.9897483476411464","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"j-can-see","version":"0.5.0","keywords":["mcp","model-context-protocol","vision","image","ocr","claude-code","codex","grok","locate","inspect","image-diff","color-picker","svg","vectorize","ui-restoration"],"license":"MIT","_id":"j-can-see@0.5.0","maintainers":[{"name":"jirachi","email":"jinyonghui1994@gmail.com"}],"homepage":"https://github.com/PichurChill/j-can-see#readme","bugs":{"url":"https://github.com/PichurChill/j-can-see/issues"},"bin":{"j-can-see":"dist/index.js"},"dist":{"shasum":"4ed1282f12530befbc91c61197bf8a2b52e8d636","tarball":"https://registry.npmjs.org/j-can-see/-/j-can-see-0.5.0.tgz","fileCount":31,"integrity":"sha512-JODqez0XCOQPff+AAuUI4BF68IEQuxswE2qs89aONDdLGgCQKcabof7qWc21ags9aUdXuPcMlbgsiePb/GD4lg==","signatures":[{"sig":"MEUCIQDgC6848tTYkPPF1vsQe1LzWvcc2h0QWiH+faXBUDOJQwIgDAltTgI/uHXW2PvGTqktQL18W3RcB//tLJqDCfZ7xgw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":129457},"main":"dist/index.js","type":"module","engines":{"node":">=20"},"gitHead":"fcdc32caff982824866eea541f943413530f1dab","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"jirachi","email":"jinyonghui1994@gmail.com"},"repository":{"url":"git+https://github.com/PichurChill/j-can-see.git","type":"git"},"_npmVersion":"10.9.8","description":"MCP server that gives text-only AI coding agents a vision toolkit: describe/OCR images, locate elements with pixel coordinates, diff images, pick exact colors, trace SVGs — for clients whose primary model has no multimodal input.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.4.3","jimp":"^1.6.1","image-size":"^2.0.0","@image-tracer-ts/core":"^1.0.2","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/j-can-see_0.5.0_1786761467525_0.7957535807116587","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"j-can-see","version":"0.5.1","keywords":["mcp","model-context-protocol","vision","image","ocr","claude-code","codex","grok","locate","inspect","image-diff","color-picker","svg","vectorize","ui-restoration"],"license":"MIT","_id":"j-can-see@0.5.1","maintainers":[{"name":"jirachi","email":"jinyonghui1994@gmail.com"}],"homepage":"https://github.com/PichurChill/j-can-see#readme","bugs":{"url":"https://github.com/PichurChill/j-can-see/issues"},"bin":{"j-can-see":"dist/index.js"},"dist":{"shasum":"034590377a3f4b17a83bd0b1f41a291d0602e765","tarball":"https://registry.npmjs.org/j-can-see/-/j-can-see-0.5.1.tgz","fileCount":31,"integrity":"sha512-LMW2mUXj/hmeMru4pGLND1Nd/WdlmsXAdeLjpU6C1Kt8Jv1AHJ/Wh1rq71rFcCcM/lTozXJi2GvqCPVAmDkLYQ==","signatures":[{"sig":"MEYCIQCanN5h69imCJjrBUN4fggTiG4dc8zwPBl+coicC+rNQwIhAOCDWYBPt7WJSC2hpJmJg/iKsGLVafOwmoamDUUkI/sg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":148240},"main":"dist/index.js","type":"module","engines":{"node":">=20"},"gitHead":"6b479146dca3e4aa08ee5e3e2b5eb2344be774e3","scripts":{"dev":"tsc --watch","test":"npm run typecheck && vitest run","build":"tsc","typecheck":"tsc --noEmit -p tsconfig.test.json","test:watch":"vitest","prepublishOnly":"npm run build && npm run typecheck"},"_npmUser":{"name":"jirachi","email":"jinyonghui1994@gmail.com"},"repository":{"url":"git+https://github.com/PichurChill/j-can-see.git","type":"git"},"_npmVersion":"10.9.8","description":"MCP server that gives text-only AI coding agents a vision toolkit: describe/OCR images, locate elements with pixel coordinates, diff images, pick exact colors, trace SVGs — for clients whose primary model has no multimodal input.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.4.3","jimp":"^1.6.1","image-size":"^2.0.0","@image-tracer-ts/core":"^1.0.2","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/j-can-see_0.5.1_1786859191405_0.8855895548132775","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"j-can-see","version":"0.5.2","keywords":["mcp","model-context-protocol","vision","image","ocr","claude-code","codex","grok","locate","inspect","image-diff","color-picker","svg","vectorize","ui-restoration"],"license":"MIT","_id":"j-can-see@0.5.2","maintainers":[{"name":"jirachi","email":"jinyonghui1994@gmail.com"}],"homepage":"https://github.com/PichurChill/j-can-see#readme","bugs":{"url":"https://github.com/PichurChill/j-can-see/issues"},"bin":{"j-can-see":"dist/index.js"},"dist":{"shasum":"37ac56e2bf231082c2bb8e39edfc94d3ef0405a3","tarball":"https://registry.npmjs.org/j-can-see/-/j-can-see-0.5.2.tgz","fileCount":31,"integrity":"sha512-3G7Y4LhmKm/k/yM4s587DnssisFUMltkkto/QMhCrR/kQvnbPz+bbVzH2FwnpQoyS10lGJAwaePLnrs+rskSmg==","signatures":[{"sig":"MEUCIEm/zr++WQJZJxr+b4P0J+R6u6XZQ6471UcTP/JJVEwnAiEAgNLhAPwB4mk7o9jXtTCyr5+YnZky/01jwjFbLgd139g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":149631},"main":"dist/index.js","type":"module","engines":{"node":">=20"},"gitHead":"d171e7c9483152f3829fc11e73f5d06085fa5631","scripts":{"dev":"tsc --watch","test":"npm run typecheck && vitest run","build":"tsc","typecheck":"tsc --noEmit -p tsconfig.test.json","test:watch":"vitest","prepublishOnly":"npm run build && npm run typecheck"},"_npmUser":{"name":"jirachi","email":"jinyonghui1994@gmail.com"},"repository":{"url":"git+https://github.com/PichurChill/j-can-see.git","type":"git"},"_npmVersion":"10.9.8","description":"MCP server that gives text-only AI coding agents a vision toolkit: describe/OCR images, locate elements with pixel coordinates, diff images, pick exact colors, trace SVGs — for clients whose primary model has no multimodal input.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.4.3","jimp":"^1.6.1","image-size":"^2.0.0","@image-tracer-ts/core":"^1.0.2","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/j-can-see_0.5.2_1786935205620_0.6081181723403222","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"j-can-see","version":"0.5.3","keywords":["mcp","model-context-protocol","vision","image","ocr","claude-code","codex","grok","locate","inspect","image-diff","color-picker","svg","vectorize","ui-restoration"],"license":"MIT","_id":"j-can-see@0.5.3","maintainers":[{"name":"jirachi","email":"jinyonghui1994@gmail.com"}],"homepage":"https://github.com/PichurChill/j-can-see#readme","bugs":{"url":"https://github.com/PichurChill/j-can-see/issues"},"bin":{"j-can-see":"dist/index.js"},"dist":{"shasum":"1a80b2abe86724089078b456e73f2a284b2bfa29","tarball":"https://registry.npmjs.org/j-can-see/-/j-can-see-0.5.3.tgz","fileCount":32,"integrity":"sha512-wf0IQofCObW+91EtwMwCuEsGEzF3xKJi/dIMqWzfQgX5sfbo8Vciu6yeSRbIm1QK7mdtuxPdVBZrxEazJgTyXA==","signatures":[{"sig":"MEUCICel6f+aGxJb84YhQSYsdXFjdfEkMswRtgnCIBRPknZ6AiEAzteYpHECzYGTdJ0O74Igrh4iVDwRmk6muVJhb5zmzH8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":165537},"main":"dist/index.js","type":"module","engines":{"node":">=20"},"gitHead":"b1cc3cb53b5d3788274b823ed73bd967c123afad","scripts":{"dev":"tsc --watch","test":"npm run typecheck && vitest run","build":"tsc","typecheck":"tsc --noEmit -p tsconfig.test.json","test:watch":"vitest","prepublishOnly":"npm run build && npm run typecheck"},"_npmUser":{"name":"jirachi","email":"jinyonghui1994@gmail.com"},"repository":{"url":"git+https://github.com/PichurChill/j-can-see.git","type":"git"},"_npmVersion":"10.9.8","description":"MCP server that gives text-only AI coding agents a vision toolkit: describe/OCR images, locate elements with pixel coordinates, diff images, pick exact colors, trace SVGs — for clients whose primary model has no multimodal input.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.4.3","jimp":"^1.6.1","image-size":"^2.0.0","@image-tracer-ts/core":"^1.0.2","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/j-can-see_0.5.3_1786948059727_0.9311792374012926","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"j-can-see","version":"0.6.0","keywords":["mcp","model-context-protocol","vision","image","ocr","claude-code","codex","grok","locate","inspect","image-diff","color-picker","svg","vectorize","ui-restoration"],"license":"MIT","_id":"j-can-see@0.6.0","maintainers":[{"name":"jirachi","email":"jinyonghui1994@gmail.com"}],"homepage":"https://github.com/PichurChill/j-can-see#readme","bugs":{"url":"https://github.com/PichurChill/j-can-see/issues"},"bin":{"j-can-see":"dist/index.js"},"dist":{"shasum":"84812b73195bc5a575912f8a9b349a5a5dbee087","tarball":"https://registry.npmjs.org/j-can-see/-/j-can-see-0.6.0.tgz","fileCount":36,"integrity":"sha512-uClUn2MKGwo6bsTtTONBjbLpkooWe6NFbRMqjkE0qgvWzU8cWZ6SLaJPvEZMpIGEV30AwFZ2CwvG2qaENcvouw==","signatures":[{"sig":"MEUCIQCFzjoRKlCJ+10VlUCj/5Bt5Y8qgVR9S4wvG3dQXNpZkgIgJ8RVWOcmH8ACx6PaiJs217QYVjen0NG85RtNpuNSFmo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":181052},"main":"dist/index.js","type":"module","engines":{"node":">=20"},"gitHead":"3b14879c8e46f79288cf6e1355a924b47d283e48","scripts":{"dev":"tsc --watch","test":"npm run typecheck && vitest run","build":"tsc","typecheck":"tsc --noEmit -p tsconfig.test.json","test:watch":"vitest","prepublishOnly":"npm run build && npm run typecheck"},"_npmUser":{"name":"jirachi","email":"jinyonghui1994@gmail.com"},"repository":{"url":"git+https://github.com/PichurChill/j-can-see.git","type":"git"},"_npmVersion":"10.9.8","description":"MCP server that gives text-only AI coding agents a vision toolkit: describe/OCR images, locate elements with pixel coordinates, diff images, pick exact colors, trace SVGs — for clients whose primary model has no multimodal input.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.4.3","jimp":"^1.6.1","image-size":"^2.0.0","@image-tracer-ts/core":"^1.0.2","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/j-can-see_0.6.0_1787020205180_0.22340506195265886","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"j-can-see","version":"0.7.0","keywords":["mcp","model-context-protocol","vision","image","ocr","claude-code","codex","grok","locate","inspect","image-diff","color-picker","svg","vectorize","ui-restoration"],"license":"MIT","_id":"j-can-see@0.7.0","maintainers":[{"name":"jirachi","email":"jinyonghui1994@gmail.com"}],"homepage":"https://github.com/PichurChill/j-can-see#readme","bugs":{"url":"https://github.com/PichurChill/j-can-see/issues"},"bin":{"j-can-see":"dist/index.js"},"dist":{"shasum":"e059c45474335fd8177fcac04261c31647a68bb0","tarball":"https://registry.npmjs.org/j-can-see/-/j-can-see-0.7.0.tgz","fileCount":36,"integrity":"sha512-EkIywjat8ec/M591OttIu/nLPLqdEU1Kg/mmxnaUuS0Bvvs69060txJItI5SId7fbvaVsOL8LSedI2a4iQVNGA==","signatures":[{"sig":"MEUCIGakbrfBIDoNeXF629vlvRjFMfXNG3JKK9PvajYjWFx6AiEA54ZqiQ744AIdFLZnDLk8Ww/fnwNa6VMT5vTXlGZ88yI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":198308},"main":"dist/index.js","type":"module","engines":{"node":">=20"},"gitHead":"22d92a631a7d7cc58ced65df34babb2f0651aeb7","scripts":{"dev":"tsc --watch","test":"npm run typecheck && vitest run","build":"tsc","typecheck":"tsc --noEmit -p tsconfig.test.json","test:watch":"vitest","prepublishOnly":"npm run build && npm run typecheck"},"_npmUser":{"name":"jirachi","email":"jinyonghui1994@gmail.com"},"repository":{"url":"git+https://github.com/PichurChill/j-can-see.git","type":"git"},"_npmVersion":"10.9.8","description":"MCP server that gives text-only AI coding agents a vision toolkit: describe/OCR images, locate elements with pixel coordinates, diff images, pick exact colors, trace SVGs — for clients whose primary model has no multimodal input.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.4.3","jimp":"^1.6.1","image-size":"^2.0.0","@image-tracer-ts/core":"^1.0.2","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/j-can-see_0.7.0_1787035334226_0.5451516601797584","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"j-can-see","version":"0.7.1","keywords":["mcp","model-context-protocol","vision","image","ocr","claude-code","codex","grok","locate","inspect","image-diff","color-picker","svg","vectorize","ui-restoration"],"license":"MIT","_id":"j-can-see@0.7.1","maintainers":[{"name":"jirachi","email":"jinyonghui1994@gmail.com"}],"homepage":"https://github.com/PichurChill/j-can-see#readme","bugs":{"url":"https://github.com/PichurChill/j-can-see/issues"},"bin":{"j-can-see":"dist/index.js"},"dist":{"shasum":"b41e18c7725fc450b17030228443a85b91afe809","tarball":"https://registry.npmjs.org/j-can-see/-/j-can-see-0.7.1.tgz","fileCount":36,"integrity":"sha512-WKO698hfVFJ1GeTi6lTm4Wi/gr0uq0DrJjC8Yl+meywuYn4gPfoOTKVVn7+nLNcSXeVBgPksW3tlDmyfZW8pbQ==","signatures":[{"sig":"MEQCIGNbhJJ9jmbFWuHk0fBCNeHvNl78JdZ/mfM7E27sS2m/AiBJPgbxI08pqjDyMWDVmnpps1AvzXJK8NUI55OZlUDGcQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":203175},"main":"dist/index.js","type":"module","engines":{"node":">=20"},"gitHead":"33a6df52b4d40e8e1cb0ee1317af2f2a137bfd9d","scripts":{"dev":"tsc --watch","test":"npm run typecheck && vitest run","build":"tsc","typecheck":"tsc --noEmit -p tsconfig.test.json","test:watch":"vitest","prepublishOnly":"npm run build && npm run typecheck"},"_npmUser":{"name":"jirachi","email":"jinyonghui1994@gmail.com"},"repository":{"url":"git+https://github.com/PichurChill/j-can-see.git","type":"git"},"_npmVersion":"10.9.8","description":"MCP server that gives text-only AI coding agents a vision toolkit: describe/OCR images, locate elements with pixel coordinates, diff images, pick exact colors, trace SVGs — for clients whose primary model has no multimodal input.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.4.3","jimp":"^1.6.1","image-size":"^2.0.0","@image-tracer-ts/core":"^1.0.2","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/j-can-see_0.7.1_1787806243682_0.41456181411844484","host":"s3://npm-registry-packages-npm-production"}},"0.7.2":{"name":"j-can-see","version":"0.7.2","keywords":["mcp","model-context-protocol","vision","image","ocr","claude-code","codex","grok","locate","inspect","image-diff","color-picker","svg","vectorize","ui-restoration"],"license":"MIT","_id":"j-can-see@0.7.2","maintainers":[{"name":"jirachi","email":"jinyonghui1994@gmail.com"}],"homepage":"https://github.com/PichurChill/j-ai-kit/tree/main/packages/j-can-see#readme","bugs":{"url":"https://github.com/PichurChill/j-ai-kit/issues"},"bin":{"j-can-see":"dist/index.js"},"dist":{"shasum":"40183367019a90085dcf741dae0ec1a068d1227d","tarball":"https://registry.npmjs.org/j-can-see/-/j-can-see-0.7.2.tgz","fileCount":35,"integrity":"sha512-8lqaGZgcLuI6xd2imiriTkucw+o5bsyvhJVOzVkCf/VpxH4XLXeLXk8mAvYOAs8ubH86QNLwggPSsnMPQP7TVw==","signatures":[{"sig":"MEUCIQCY1fr4xAtmVNcFao/wwvX4vet8Tajf56/Dz6C1+GcoiQIgYzp0BWR4qFIJyyk3FnAifiCqparOwp53CSEs/RameZI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":201465},"main":"dist/index.js","type":"module","engines":{"node":">=20"},"gitHead":"3b60ec80dfcda5cb84c5c63876d8a6434bcf8b48","scripts":{"dev":"tsc --watch","test":"npm run typecheck && vitest run","build":"tsc","typecheck":"tsc --noEmit -p tsconfig.test.json","test:watch":"vitest","prepublishOnly":"npm run build && npm run typecheck","publish:official":"npm publish --registry=https://registry.npmjs.org/"},"_npmUser":{"name":"jirachi","email":"jinyonghui1994@gmail.com"},"repository":{"url":"git+https://github.com/PichurChill/j-ai-kit.git","type":"git","directory":"packages/j-can-see"},"_npmVersion":"10.9.8","description":"MCP server that gives text-only AI coding agents a vision toolkit: describe/OCR images, locate elements with pixel coordinates, diff images, pick exact colors, trace SVGs — for clients whose primary model has no multimodal input.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.4.3","jimp":"^1.6.1","image-size":"^2.0.0","@image-tracer-ts/core":"^1.0.2","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/j-can-see_0.7.2_1788249191028_0.4409289326679269","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"j-can-see","version":"0.9.1","keywords":["mcp","model-context-protocol","vision","image","ocr","claude-code","codex","grok","locate","inspect","image-diff","color-picker","svg","vectorize","ui-restoration"],"license":"MIT","_id":"j-can-see@0.9.1","maintainers":[{"name":"jirachi","email":"jinyonghui1994@gmail.com"}],"homepage":"https://github.com/PichurChill/j-ai-kit/tree/main/packages/j-can-see#readme","bugs":{"url":"https://github.com/PichurChill/j-ai-kit/issues"},"bin":{"j-can-see":"dist/index.js"},"dist":{"shasum":"5680c2118bc70cc5e176781b2dc45145529c3ec6","tarball":"https://registry.npmjs.org/j-can-see/-/j-can-see-0.9.1.tgz","fileCount":35,"integrity":"sha512-8xoqtE07sGR9zmB5KB3X4oI6HWsz3URrxI4isgYN3tUYdN/TsD3WdYUeqmWG2iywwLY7Ffyqw4B7B3DxYEJbSw==","signatures":[{"sig":"MEUCIADK3EoktCqGW8Vos95erwZQyEi+6C97N9SU8qulYXIJAiEAiXpN5PiWjMO8oIQJxTM61lvtBAEg8W+kmrA+XowOPJ8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":234764},"main":"dist/index.js","type":"module","engines":{"node":">=20"},"gitHead":"f6b1c00dbd63ddb131f1b19d7a70350cdfdd13b7","scripts":{"dev":"tsc --watch","test":"npm run typecheck && vitest run","build":"tsc","typecheck":"tsc --noEmit -p tsconfig.test.json","test:watch":"vitest","prepublishOnly":"npm run build && npm run typecheck","publish:official":"npm publish --registry=https://registry.npmjs.org/"},"_npmUser":{"name":"jirachi","email":"jinyonghui1994@gmail.com"},"repository":{"url":"git+https://github.com/PichurChill/j-ai-kit.git","type":"git","directory":"packages/j-can-see"},"_npmVersion":"10.9.8","description":"MCP server that gives text-only AI coding agents a vision toolkit: describe/OCR images, locate elements with pixel coordinates, diff images, pick exact colors, trace SVGs — for clients whose primary model has no multimodal input.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.4.3","jimp":"^1.6.1","image-size":"^2.0.0","@image-tracer-ts/core":"^1.0.2","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/j-can-see_0.9.1_1789012964049_0.22683889905619514","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"j-can-see","version":"0.10.0","keywords":["mcp","model-context-protocol","vision","image","ocr","claude-code","codex","grok","locate","inspect","image-diff","color-picker","svg","vectorize","ui-restoration"],"license":"MIT","_id":"j-can-see@0.10.0","maintainers":[{"name":"jirachi","email":"jinyonghui1994@gmail.com"}],"homepage":"https://github.com/PichurChill/j-ai-kit/tree/main/packages/j-can-see#readme","bugs":{"url":"https://github.com/PichurChill/j-ai-kit/issues"},"bin":{"j-can-see":"dist/index.js"},"dist":{"shasum":"1aa12c6abdf58986b937ad2919bca4f8fdfef7b6","tarball":"https://registry.npmjs.org/j-can-see/-/j-can-see-0.10.0.tgz","fileCount":35,"integrity":"sha512-LB/wcBagoEGoGWQBpHO2PM2syqNyZEzF49mZOqyKN5MkJaRPKf3wqvkifbtM5jmPaDxMTytguH1lA+ac5KAU/Q==","signatures":[{"sig":"MEQCICFAp72QvAJ8DvuoBLMMmvjyH+0dzZDOZdiDWLL+6uIvAiAZQpS9E3igegf3BCTfJJ1yqoh8CkXrZ0vtfixKr61yng==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":240682},"main":"dist/index.js","type":"module","engines":{"node":">=20"},"gitHead":"0ea883b3f6b5ae5c6209582179057ae7a15fec0e","scripts":{"dev":"tsc --watch","test":"npm run typecheck && vitest run","build":"tsc","typecheck":"tsc --noEmit -p tsconfig.test.json","test:watch":"vitest","prepublishOnly":"npm run build && npm run typecheck","publish:official":"npm publish --registry=https://registry.npmjs.org/"},"_npmUser":{"name":"jirachi","email":"jinyonghui1994@gmail.com"},"repository":{"url":"git+https://github.com/PichurChill/j-ai-kit.git","type":"git","directory":"packages/j-can-see"},"_npmVersion":"10.9.8","description":"MCP server that gives text-only AI coding agents a vision toolkit: describe/OCR images, locate elements with pixel coordinates, diff images, pick exact colors, trace SVGs — for clients whose primary model has no multimodal input.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.4.3","jimp":"^1.6.1","image-size":"^2.0.0","@image-tracer-ts/core":"^1.0.2","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/j-can-see_0.10.0_1789015787838_0.3855529041613257","host":"s3://npm-registry-packages-npm-production"}},"0.10.1":{"name":"j-can-see","version":"0.10.1","description":"MCP server that gives text-only AI coding agents a vision toolkit: describe/OCR images, locate elements with pixel coordinates, diff images, pick exact colors, trace SVGs — for clients whose primary model has no multimodal input.","license":"MIT","repository":{"type":"git","url":"git+https://github.com/PichurChill/j-ai-kit.git","directory":"packages/j-can-see"},"homepage":"https://github.com/PichurChill/j-ai-kit/tree/main/packages/j-can-see#readme","bugs":{"url":"https://github.com/PichurChill/j-ai-kit/issues"},"type":"module","main":"dist/index.js","bin":{"j-can-see":"dist/index.js"},"engines":{"node":">=20"},"scripts":{"build":"tsc","dev":"tsc --watch","typecheck":"tsc --noEmit -p tsconfig.test.json","test":"npm run typecheck && vitest run","test:watch":"vitest","prepublishOnly":"npm run build && npm run typecheck","publish:official":"npm publish --registry=https://registry.npmjs.org/"},"dependencies":{"@image-tracer-ts/core":"^1.0.2","@modelcontextprotocol/sdk":"^1.30.0","image-size":"^2.0.0","jimp":"^1.6.1","zod":"^4.4.3"},"devDependencies":{"@types/node":"^22.0.0","typescript":"^5.6.0","vitest":"^4.1.10"},"keywords":["mcp","model-context-protocol","vision","image","ocr","claude-code","codex","grok","locate","inspect","image-diff","color-picker","svg","vectorize","ui-restoration"],"_id":"j-can-see@0.10.1","gitHead":"0ea883b3f6b5ae5c6209582179057ae7a15fec0e","_nodeVersion":"22.22.3","_npmVersion":"10.9.8","dist":{"integrity":"sha512-fXSnbUQOOAcriIwKwnxRHoKL91VdvXlkHfDOO7JhPvpgWvj4MyLMYiRwUz2c7RuGV6NS1m34Z7NRH33KS2i1dg==","shasum":"834570a91b0d7fb11c836c4942b866343e271dfd","tarball":"https://registry.npmjs.org/j-can-see/-/j-can-see-0.10.1.tgz","fileCount":35,"unpackedSize":241161,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGbqJPAWyryP9yNZCrV6OLQ1tT44T6BJd7MLsCY9gVM8AiEA50CPmmwvtEjjPWHTGSMJLeVqj/h0WPwjss9LpqOscRc="}]},"_npmUser":{"name":"jirachi","email":"jinyonghui1994@gmail.com"},"directories":{},"maintainers":[{"name":"jirachi","email":"jinyonghui1994@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/j-can-see_0.10.1_1789460251230_0.9663309793428838"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-05T08:31:50.304Z","modified":"2026-09-15T08:17:31.581Z","0.1.0":"2026-08-05T08:31:50.513Z","0.2.0":"2026-08-13T06:46:17.024Z","0.4.0":"2026-08-13T08:19:30.997Z","0.4.1":"2026-08-13T08:25:49.168Z","0.4.2":"2026-08-14T02:42:53.729Z","0.5.0":"2026-08-15T02:37:47.695Z","0.5.1":"2026-08-16T05:46:31.549Z","0.5.2":"2026-08-17T02:53:25.761Z","0.5.3":"2026-08-17T06:27:39.877Z","0.6.0":"2026-08-18T02:30:05.325Z","0.7.0":"2026-08-18T06:42:14.372Z","0.7.1":"2026-08-27T04:50:43.921Z","0.7.2":"2026-09-01T07:53:11.175Z","0.9.1":"2026-09-10T04:02:44.234Z","0.10.0":"2026-09-10T04:49:47.969Z","0.10.1":"2026-09-15T08:17:31.383Z"},"bugs":{"url":"https://github.com/PichurChill/j-ai-kit/issues"},"license":"MIT","homepage":"https://github.com/PichurChill/j-ai-kit/tree/main/packages/j-can-see#readme","keywords":["mcp","model-context-protocol","vision","image","ocr","claude-code","codex","grok","locate","inspect","image-diff","color-picker","svg","vectorize","ui-restoration"],"repository":{"type":"git","url":"git+https://github.com/PichurChill/j-ai-kit.git","directory":"packages/j-can-see"},"description":"MCP server that gives text-only AI coding agents a vision toolkit: describe/OCR images, locate elements with pixel coordinates, diff images, pick exact colors, trace SVGs — for clients whose primary model has no multimodal input.","maintainers":[{"name":"jirachi","email":"jinyonghui1994@gmail.com"}],"readme":"# j-can-see\n\n[English](./README.md) | 中文\n\n[![npm version](https://img.shields.io/npm/v/j-can-see)](https://www.npmjs.com/package/j-can-see)\n[![npm downloads](https://img.shields.io/npm/dm/j-can-see)](https://www.npmjs.com/package/j-can-see)\n[![license: MIT](https://img.shields.io/npm/l/j-can-see)](https://www.npmjs.com/package/j-can-see)\n\n一个 MCP server，让纯文本 AI 编程客户端获得视觉能力：描述/OCR 图片、定位元素像素坐标、图片对比、取色、矢量化和抠图。\n\n## 为什么需要\n\n主模型不支持图片输入时，直接读图会在 API 层失败。`j-can-see` 把识图变成普通 MCP 工具调用，Claude Code、Codex 等客户端就能处理本地文件、URL、剪贴板图片和截图。\n\n## 环境要求\n\n- Node.js >= 20\n- 无需安装，直接通过 `npx` 运行发布包\n\n## Claude Code\n\n### 一行命令（推荐）\n\n```bash\nclaude mcp add j-can-see -s user \\\n    -e J_SEE_TOKEN='你的key' \\\n    -e J_SEE_BASE_URL='https://你的视觉端点' \\\n    -e J_SEE_MODEL='grok-4.5' \\\n    -- npx -y j-can-see\n```\n\n`-s user` 写入用户级配置，配置在 git 仓库之外。\n\n### 手动配置\n\n在 `~/.claude.json`（macOS/Linux）或 `%USERPROFILE%\\.claude.json`（Windows）的 `mcpServers` 下添加：\n\n```jsonc\n\"j-can-see\": {\n  \"command\": \"npx\",\n  \"args\": [\"-y\", \"j-can-see\"],\n  \"env\": {\n    \"J_SEE_TOKEN\": \"你的key\",\n    \"J_SEE_BASE_URL\": \"https://你的视觉端点\",\n    \"J_SEE_MODEL\": \"grok-4.5\"\n  }\n}\n```\n\n## Codex\n\n### 一行命令（推荐）\n\n```bash\ncodex mcp add j-can-see \\\n    --env J_SEE_TOKEN='你的key' \\\n    --env J_SEE_BASE_URL='https://你的视觉端点' \\\n    --env J_SEE_MODEL='grok-4.5' \\\n    -- npx -y j-can-see\n```\n\n### 手动配置\n\n在 `~/.codex/config.toml`（macOS/Linux）或 `%USERPROFILE%\\.codex\\config.toml`（Windows）中添加：\n\n```toml\n[mcp_servers.j-can-see]\ntype = \"stdio\"\ncommand = \"npx\"\nargs = [\"-y\", \"j-can-see\"]\n\n[mcp_servers.j-can-see.env]\nJ_SEE_TOKEN = \"你的key\"\nJ_SEE_BASE_URL = \"https://你的视觉端点\"\nJ_SEE_MODEL = \"grok-4.5\"\n```\n\n## 配置文件位置\n\n| 客户端 | macOS / Linux | Windows |\n|---|---|---|\n| Claude Code MCP | `~/.claude.json` | `%USERPROFILE%\\.claude.json` |\n| Claude Code Hook 设置 | `~/.claude/settings.json` | `%USERPROFILE%\\.claude\\settings.json` |\n| Codex MCP | `~/.codex/config.toml` | `%USERPROFILE%\\.codex\\config.toml` |\n\n## 环境变量\n\n| 变量 | 必填 | 默认 | 说明 |\n|---|---|---|---|\n| `J_SEE_TOKEN` | 是 | - | 视觉模型 API key |\n| `J_SEE_BASE_URL` | 是 | - | 视觉模型端点根地址；末尾斜杠自动去除 |\n| `J_SEE_MODEL` | 是 | - | 你的端点实际支持的视觉模型名 |\n| `J_SEE_API_SPEC` | 否 | `responses` | `responses` / `openai` / `anthropic` / `gemini` |\n| `J_SEE_REASONING` | 否 | `none` | 推理强度；仅 `openai` 规范生效 |\n| `J_SEE_MAX_EDGE` | 否 | `1568` | 图片压缩长边像素上限 |\n| `J_SEE_MAX_BYTES` | 否 | `52428800` | 源文件体积上限（字节） |\n| `J_SEE_MAX_PIXELS` | 否 | `40000000` | 解码后像素数上限，解码前从图片头校验 |\n| `J_SEE_TIMEOUT_MS` | 否 | `90000` | 单次视觉工具调用的总预算（毫秒，含排队与重试）；超时会自动降质重试并在结果中注明 |\n| `J_SEE_OCR_TOTAL_TIMEOUT_MS` | 否 | `85000` | `ocr_long` 多块总预算（毫秒）；耗尽时返回已完成的部分 |\n| `J_SEE_MAX_CONCURRENT` | 否 | `3` | 全局视觉并发上限（1-8）；429/5xx/超时自动降档，新调用自动试探回升 |\n| `J_SEE_MAX_ATTEMPTS` | 否 | `3` | 单次视觉调用的总尝试上限（首发 + 重试） |\n| `J_SEE_TASK_BUDGET_MS` | 否 | `85000` | `see_image` each 批量模式总预算（毫秒）；耗尽时返回部分结果 + 续调参数 |\n| `J_SEE_SKILL_AUTO_INSTALL` | 否 | `1` | 设为 `0` 关闭自动安装 skill |\n\n缺 `J_SEE_TOKEN` / `J_SEE_BASE_URL` / `J_SEE_MODEL` 不影响 server 启动：本地像素工具照常可用，视觉工具被调用时返回清晰的配置错误。\n\n## API 规范\n\n| `J_SEE_API_SPEC` | 端点 | 适用场景 |\n|---|---|---|\n| `responses`（默认） | `/v1/responses` | OpenAI Responses，与 GPT-5 / Codex 生态对齐 |\n| `openai` | `/v1/chat/completions` | OpenAI Chat Completions 及兼容代理 |\n| `anthropic` | `/v1/messages` | Anthropic 原生 API，无需代理 |\n| `gemini` | `/v1beta/models/{model}:generateContent` | Google Gemini 原生 API（AI Studio key），无需代理 |\n\n如果端点不支持 `/v1/responses`（返回 404），设 `J_SEE_API_SPEC=openai`。直连 Claude：\n\n```bash\nclaude mcp add j-can-see -s user \\\n    -e J_SEE_API_SPEC='anthropic' \\\n    -e J_SEE_TOKEN='sk-ant-...' \\\n    -e J_SEE_BASE_URL='https://api.anthropic.com' \\\n    -e J_SEE_MODEL='claude-sonnet-4-5' \\\n    -- npx -y j-can-see\n```\n\n直连 Gemini（[AI Studio](https://aistudio.google.com) 免费 key）：\n\n```bash\nclaude mcp add j-can-see -s user \\\n    -e J_SEE_API_SPEC='gemini' \\\n    -e J_SEE_TOKEN='AIza...' \\\n    -e J_SEE_BASE_URL='https://generativelanguage.googleapis.com' \\\n    -e J_SEE_MODEL='gemini-3.6-flash' \\\n    -- npx -y j-can-see\n```\n\n`gemini` 规范注意两点：`J_SEE_BASE_URL` 填**根地址**（不带 `/v1beta`——路径由本包补全；也不要用 `/v1beta/openai`，那是 Gemini 的 OpenAI 兼容层，实测拒绝 `openai` 规范必发的 `reasoning_effort` 字段）；Gemini 的 thinking 模型无法关闭思考，`gemini` 规范不发送 `J_SEE_REASONING` 对应字段。\n\n## 工具集\n\n### 视觉工具\n\n| 工具 | 用途 |\n|---|---|\n| `see_image` | 描述或对比图片，支持局部放大 |\n| `locate` | 定位单个目标并返回像素坐标与方位；支持 `region` 缩小搜索范围（长图小目标自救） |\n| `inspect` | 枚举同类元素，返回编号、文字、方位和坐标；支持 `region` 分区盘点 |\n| `ocr_long` | 超长截图分块 OCR：优先在低内容带切口（无重叠无去重负担），密集内容退回重叠兜底，逐边界审计 |\n\n### 本地工具（无需视觉配置）\n\n| 工具 | 用途 |\n|---|---|\n| `crop` | 把区域裁成文件 |\n| `image_diff` | 像素差异比例和差异最密集的网格块 |\n| `colors` | 精确主色、渐变剖面（profile）与候选色逐像素评分；深背景自动附背景排除视图（或 `exclude_background: true`），图表系列色走窄条 profile 探测 |\n| `trace` | 把扁平高对比图形矢量化成 SVG |\n| `extract_fg` | 把前景图标抠成透明 PNG |\n\n详细使用方法见 [SKILL.md](./SKILL.md)。\n\n## Agent Skill\n\nserver 每次启动会自动把 `SKILL.md` 安装到 `~/.claude/skills`、`~/.codex/skills`、`~/.agents/skills` 和 `~/.zcode/skills`，除非设置 `J_SEE_SKILL_AUTO_INSTALL=0`。\n\n```bash\nnpx j-can-see --skill        # 手动安装 skill\nnpx j-can-see --print-skill  # 打印 SKILL.md 内容\nnpx j-can-see --hook         # 输出 Claude Code hook 脚本\n```\n\n## 可选：Claude Code Hook\n\n不配置 hook 时，纯文本模型看到图片路径可能会尝试 `Read` 然后失败。hook 会拦截对图片文件的 `Read` 调用并引导到 `see_image`：\n\n```bash\nmkdir -p ~/.claude/hooks\nnpx j-can-see --hook > ~/.claude/hooks/block-image-read.mjs\nchmod +x ~/.claude/hooks/block-image-read.mjs\n```\n\n然后写入 `~/.claude/settings.json`（Windows 为 `%USERPROFILE%\\.claude\\settings.json`）：\n\n```jsonc\n{\n  \"hooks\": {\n    \"PreToolUse\": [\n      {\n        \"matcher\": \"Read\",\n        \"hooks\": [\n          {\n            \"type\": \"command\",\n            \"command\": \"node ~/.claude/hooks/block-image-read.mjs\"\n          }\n        ]\n      }\n    ]\n  }\n}\n```\n\n## 限制\n\n- Linux 不支持剪贴板，请改用文件路径\n- 透明 PNG 会转为 JPEG\n- 不重试、不降级：视觉调用失败原样上报\n\n## 开发\n\n```bash\nnpm install\nnpm test\nnpm run build\n```\n","readmeFilename":"README.zh-CN.md"}