{"versions":{"0.1.0":{"name":"agnost","version":"0.1.0","description":"Analytics SDK for Model Context Protocol Servers","main":"dist/index.js","types":"dist/index.d.ts","type":"module","scripts":{"build":"tsc","prepublishOnly":"npm run build","test":"jest"},"keywords":["analytics","mcp","model context protocol","ai","tools"],"author":{"name":"Agnost AI","email":"founders@agnost.ai"},"homepage":"https://github.com/agnost-ai/analytics-sdk","repository":{"type":"git","url":"git+https://github.com/agnostai/agnostai.git"},"bugs":{"url":"https://docs.agnost.ai"},"devDependencies":{"@types/express":"^5.0.3","@types/jest":"^29.0.0","@types/node":"^18.19.127","@types/uuid":"^10.0.0","jest":"^29.0.0","typescript":"^5.9.2","vitest":"^3.2.4"},"dependencies":{"axios":"^1.4.0","uuid":"^9.0.0"},"peerDependencies":{"@modelcontextprotocol/sdk":"^0.5.0"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":false}},"_id":"agnost@0.1.0","gitHead":"dae2502e2da71541107d569872352244667ed3e0","_nodeVersion":"23.11.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-7DKIJZHSmZWzFKQzGb8K/XRuhljSntjOVzXrndVbTE0cg9mT5gQOSkyNJACS7hRn9H4O+a5yLfh671pLvtXxDg==","shasum":"4bdb19c422936e65e6dac229cafa9ac0d74a804e","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/agnost/-/agnost-0.1.0.tgz","fileCount":40,"unpackedSize":79658,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDYmkAPPKzUYIzozm8G5skaxKA6Yrl06rSvjkLXNk94VAiBTUZ/O2O8u3AsGIEPoP4flVnpB4YAovf90w3BMUl05bQ=="}],"size":17607},"_npmUser":{"name":"anonymous","email":"ajmeraparth132@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"ajmeraparth132@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/agnost_0.1.0_1758812444772_0.31033133483590825"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-09-25T15:00:44.945Z","publish_time":1758812444945,"_source_registry_name":"default","contributors":[]},"0.1.1":{"name":"agnost","version":"0.1.1","description":"Analytics SDK for Model Context Protocol Servers","main":"dist/index.js","types":"dist/index.d.ts","type":"module","scripts":{"build":"tsc","prepublishOnly":"npm run build","test":"jest"},"keywords":["analytics","mcp","model context protocol","ai","tools"],"author":{"name":"Agnost AI","email":"founders@agnost.ai"},"homepage":"https://agnost.ai","bugs":{"url":"https://docs.agnost.ai"},"devDependencies":{"@types/express":"^5.0.3","@types/jest":"^29.0.0","@types/node":"^18.19.127","@types/uuid":"^10.0.0","jest":"^29.0.0","typescript":"^5.9.2","vitest":"^3.2.4"},"dependencies":{"axios":"^1.4.0","uuid":"^9.0.0"},"_id":"agnost@0.1.1","gitHead":"6c7d8c575e0a8706edb9bcd19b875ad167c33297","_nodeVersion":"23.11.1","_npmVersion":"10.9.2","dist":{"integrity":"sha512-31WunIgpoyW/hGkSBQ/xV/k/eGJ4HkH/X864kJLXPXtsvZX6wrBnSWlrhCAGE3brcFVRN05dI6fSRF2qH4UdPg==","shasum":"f29be678db6b02fc8dbe2d77e29262c4863e56ea","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/agnost/-/agnost-0.1.1.tgz","fileCount":34,"unpackedSize":60850,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICllXyqaLeu83yHlRCoXBQJaSYkMr+ni4FUeoaH4N3WGAiEAo630HlKYHKh1QieweSZETP/f/Cap95YagV/aRzlpVm0="}],"size":14978},"_npmUser":{"name":"anonymous","email":"ajmeraparth132@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"ajmeraparth132@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/agnost_0.1.1_1758837321282_0.7216845411861696"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-09-25T21:55:21.492Z","publish_time":1758837321492,"_source_registry_name":"default","contributors":[]},"0.1.2":{"name":"agnost","version":"0.1.2","description":"Analytics SDK for Model Context Protocol Servers","main":"dist/index.js","types":"dist/index.d.ts","type":"module","scripts":{"build":"tsc","prepublishOnly":"npm run build","test":"jest"},"keywords":["analytics","mcp","model context protocol","ai","tools"],"author":{"name":"Agnost AI","email":"founders@agnost.ai"},"homepage":"https://agnost.ai","bugs":{"url":"https://docs.agnost.ai"},"devDependencies":{"@types/express":"^5.0.3","@types/jest":"^29.0.0","@types/node":"^18.19.127","@types/uuid":"^10.0.0","jest":"^29.0.0","typescript":"^5.9.2","vitest":"^3.2.4"},"dependencies":{"@modelcontextprotocol/sdk":"^1.18.2","axios":"^1.4.0","dotenv":"^17.2.2","uuid":"^9.0.0","zod":"^3.25.76"},"_id":"agnost@0.1.2","gitHead":"86206a8e3c97e7873174c316f718b361ee8f2c68","_nodeVersion":"23.11.1","_npmVersion":"10.9.2","dist":{"integrity":"sha512-vTxJm1j9OK4x5Hvm8vjLMVimzwmIYegOvNSZfyy02Lip1eFHJEvr0H0YWYNiThci+WYbM9vBvjrHXDfN73tt1A==","shasum":"25e92f9032961cbea1061d055679cfc370a9ce8f","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/agnost/-/agnost-0.1.2.tgz","fileCount":34,"unpackedSize":65012,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDAfsX6pEeNRnwc8xBrPiuNOTIf4i6ElAAiN9bgH3j7rQIgRSMgFHHJHGrr6AA7Nzcn9aXVv/UqlusK+LYA7bKpBn0="}],"size":15980},"_npmUser":{"name":"anonymous","email":"ajmeraparth132@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"ajmeraparth132@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/agnost_0.1.2_1759130964681_0.045296964002802254"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-09-29T07:29:24.892Z","publish_time":1759130964892,"_source_registry_name":"default","contributors":[]},"0.1.3":{"name":"agnost","version":"0.1.3","description":"Analytics SDK for Model Context Protocol Servers","main":"dist/index.js","types":"dist/index.d.ts","type":"module","scripts":{"build":"tsc","prepublishOnly":"npm run build","test":"jest"},"keywords":["analytics","mcp","model context protocol","ai","tools"],"author":{"name":"Agnost AI","email":"founders@agnost.ai"},"homepage":"https://agnost.ai","bugs":{"url":"https://docs.agnost.ai"},"devDependencies":{"@types/express":"^5.0.3","@types/jest":"^29.0.0","@types/node":"^18.19.127","@types/uuid":"^10.0.0","jest":"^29.0.0","typescript":"^5.9.2","vitest":"^3.2.4"},"dependencies":{"@modelcontextprotocol/sdk":"^1.18.2","axios":"^1.4.0","dotenv":"^17.2.2","uuid":"^9.0.0","zod":"^3.25.76"},"_id":"agnost@0.1.3","gitHead":"9f421957de4341d08e3531b4d61ad2eb1221c6d5","_nodeVersion":"23.11.1","_npmVersion":"10.9.2","dist":{"integrity":"sha512-ZR3Pj21kqULQq64MudVOEEuz7X5i4EaOy6rji8Kux1UtQyfjEPOzVCRuIbL6kSCFYoM3ZxBQeI2GqSas7py+Dw==","shasum":"d83bbaeefb73b6ebdfaf2b755afb92a7c50715fb","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/agnost/-/agnost-0.1.3.tgz","fileCount":34,"unpackedSize":64920,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBlT0TJ5uDFVmth+tHujv/C77mNzDa34G4Qc9LttB6yUAiBUDovEnP3v7MpvpB1qn2PM5rXFYKgw8hIbWU7QCvHVQA=="}],"size":15795},"_npmUser":{"name":"anonymous","email":"ajmeraparth132@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"ajmeraparth132@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/agnost_0.1.3_1759142837729_0.9904141478582027"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-09-29T10:47:18.000Z","publish_time":1759142838000,"_source_registry_name":"default","contributors":[]},"0.1.4":{"name":"agnost","version":"0.1.4","description":"Analytics SDK for Model Context Protocol Servers","main":"dist/index.js","types":"dist/index.d.ts","type":"module","scripts":{"build":"tsc","prepublishOnly":"npm run build","test":"jest"},"keywords":["analytics","mcp","model context protocol","ai","tools"],"author":{"name":"Agnost AI","email":"founders@agnost.ai"},"homepage":"https://agnost.ai","bugs":{"url":"https://docs.agnost.ai"},"devDependencies":{"@types/express":"^5.0.3","@types/jest":"^29.0.0","@types/node":"^18.19.127","@types/uuid":"^10.0.0","jest":"^29.0.0","typescript":"^5.9.2","vitest":"^3.2.4"},"dependencies":{"@modelcontextprotocol/sdk":"^1.18.2","axios":"^1.4.0","dotenv":"^17.2.2","uuid":"^9.0.0","zod":"^3.25.76"},"_id":"agnost@0.1.4","gitHead":"62bc9e64f28e04c521df74fbc2b184e8a8c856df","_nodeVersion":"23.11.1","_npmVersion":"10.9.2","dist":{"integrity":"sha512-XtUdxj7lGgM+jLlLl9kbOvdWLzAxSlRGfxm4rsdemdqonQ422Q3W8dADVh3t5FXUxiPGElaOA0N6wFdAOIMn9A==","shasum":"d4bb17d0c41dbfd951ea590c39410a64a04c7243","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/agnost/-/agnost-0.1.4.tgz","fileCount":34,"unpackedSize":71299,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGEMoT21zU6AzCOtQ45D90QOJy6jrMlxQpMgBFKT18NxAiEA+RBo237vsWi8NDlI7BOEdJarQKFr2m0A8FeORTwGLAE="}],"size":17043},"_npmUser":{"name":"anonymous","email":"ajmeraparth132@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"ajmeraparth132@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/agnost_0.1.4_1762512597892_0.9811035532282981"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-11-07T10:49:58.080Z","publish_time":1762512598080,"_source_registry_name":"default","contributors":[]},"0.1.5":{"name":"agnost","version":"0.1.5","description":"Analytics SDK for Model Context Protocol Servers","main":"dist/index.js","types":"dist/index.d.ts","type":"module","scripts":{"build":"tsc","prepublishOnly":"npm run build","test":"jest"},"keywords":["analytics","mcp","model context protocol","ai","tools"],"author":{"name":"Agnost AI","email":"founders@agnost.ai"},"homepage":"https://agnost.ai","bugs":{"url":"https://docs.agnost.ai"},"devDependencies":{"@types/express":"^5.0.3","@types/jest":"^29.0.0","@types/node":"^18.19.127","@types/uuid":"^10.0.0","jest":"^29.0.0","typescript":"^5.9.2","vitest":"^3.2.4"},"dependencies":{"@modelcontextprotocol/sdk":"^1.18.2","axios":"^1.4.0","dotenv":"^17.2.2","uuid":"^9.0.0","zod":"^3.25.76"},"_id":"agnost@0.1.5","gitHead":"0e9220a9e9ef1dd20d3975fe0847065dddd92ac5","_nodeVersion":"23.11.1","_npmVersion":"10.9.2","dist":{"integrity":"sha512-aDDgP96uKi3D6+6feFOlWL8oXvRZL3VUrtnv7fnUmOIoQTV7Z8t1FJo5KvhsRw/CjMUIE96JixprcHGIb6AJPw==","shasum":"edcb44a357d1993ace6be7770dae25c260d1b0c2","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/agnost/-/agnost-0.1.5.tgz","fileCount":34,"unpackedSize":71754,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC7NEF5zqvwPpnY+KBYfA89LUTn+p4cr5t2MPyr7cI91QIgFpZ6U1rtP6RNZkK1fvIl/UCGTEiuL5t3RnP1pb//dVw="}],"size":17151},"_npmUser":{"name":"anonymous","email":"ajmeraparth132@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"ajmeraparth132@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/agnost_0.1.5_1762518828491_0.5616717790243695"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-11-07T12:33:48.728Z","publish_time":1762518828728,"_source_registry_name":"default","contributors":[]},"0.1.6":{"name":"agnost","version":"0.1.6","description":"Analytics SDK for Model Context Protocol Servers","main":"dist/index.js","types":"dist/index.d.ts","type":"module","scripts":{"build":"tsc","prepublishOnly":"npm run build","test":"jest"},"keywords":["analytics","mcp","model context protocol","ai","tools"],"author":{"name":"Agnost AI","email":"founders@agnost.ai"},"homepage":"https://agnost.ai","bugs":{"url":"https://docs.agnost.ai"},"devDependencies":{"@types/express":"^5.0.3","@types/jest":"^29.0.0","@types/node":"^18.19.127","@types/uuid":"^10.0.0","jest":"^29.0.0","typescript":"^5.9.2","vitest":"^3.2.4"},"dependencies":{"@modelcontextprotocol/sdk":"^1.18.2","axios":"^1.4.0","dotenv":"^17.2.2","uuid":"^9.0.0","zod":"^3.25.76"},"_id":"agnost@0.1.6","gitHead":"acd908d19b5383dfea147b752f1ad360b6467db1","_nodeVersion":"23.11.1","_npmVersion":"10.9.2","dist":{"integrity":"sha512-4u1oZiESXHJjhZ265okglykKdcLlzW91fXnLP4WxzlEDaQ7x4ZtILwXvmXj4qbZeuP1fbL5ulaGK3OQ7IU/CkQ==","shasum":"952f3992fc225384bd868163769a1b05197f32bb","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/agnost/-/agnost-0.1.6.tgz","fileCount":34,"unpackedSize":78806,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGV+XWKYf6IUb86Psg2/kCVUOaNtOFrLsCynTXQjrIjUAiEAh0qsoTGdxNUAbsB9hfg0th5m5ZNWIVRq2H8DBT/jOOs="}],"size":18526},"_npmUser":{"name":"anonymous","email":"ajmeraparth132@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"ajmeraparth132@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/agnost_0.1.6_1764879400400_0.4351260407186981"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-12-04T20:16:40.568Z","publish_time":1764879400568,"_source_registry_name":"default","contributors":[]},"0.1.7":{"name":"agnost","version":"0.1.7","description":"Analytics SDK for Model Context Protocol Servers","main":"dist/index.js","types":"dist/index.d.ts","type":"module","scripts":{"build":"tsc","prepublishOnly":"npm run build","test":"jest"},"keywords":["analytics","mcp","model context protocol","ai","tools"],"author":{"name":"Agnost AI","email":"founders@agnost.ai"},"homepage":"https://agnost.ai","bugs":{"url":"https://docs.agnost.ai"},"devDependencies":{"@types/express":"^5.0.3","@types/jest":"^29.0.0","@types/node":"^18.19.127","@types/uuid":"^10.0.0","jest":"^29.0.0","typescript":"^5.9.2","vitest":"^3.2.4"},"dependencies":{"@modelcontextprotocol/sdk":"^1.18.2","axios":"^1.4.0","dotenv":"^17.2.2","uuid":"^9.0.0","zod":"^3.25.76"},"_id":"agnost@0.1.7","gitHead":"7117ae1d5ad0ba19ddfaef20f0822e4e6866d573","_nodeVersion":"23.11.1","_npmVersion":"10.9.2","dist":{"integrity":"sha512-djIpQxgcbLbpGPbnKaGGBYopXBVT6vmu2V2isl4vgbPqTLSf6t+CKDSZGfAIT4VDe5vuZOlEQ6CD7W8vbpmacA==","shasum":"b9774501c36f483d5f72b4300998790da554b3a0","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/agnost/-/agnost-0.1.7.tgz","fileCount":34,"unpackedSize":84830,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBXAxwlhQUt4d8gVtb7/8wR0xB1MCT0XxiL+pOZCPw+qAiAKXvEAWFHx48Y3x2/5UBY7ptN6kzURWViKZHgZm7uSqQ=="}],"size":20113},"_npmUser":{"name":"anonymous","email":"ajmeraparth132@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"ajmeraparth132@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/agnost_0.1.7_1764942579161_0.11061659193853357"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-12-05T13:49:39.310Z","publish_time":1764942579310,"_source_registry_name":"default","contributors":[]},"0.1.8":{"name":"agnost","version":"0.1.8","description":"Analytics SDK for Model Context Protocol Servers","main":"dist/index.js","types":"dist/index.d.ts","type":"module","scripts":{"build":"tsc","prepublishOnly":"npm run build","test":"jest"},"keywords":["analytics","mcp","model context protocol","ai","tools"],"author":{"name":"Agnost AI","email":"founders@agnost.ai"},"homepage":"https://agnost.ai","bugs":{"url":"https://docs.agnost.ai"},"devDependencies":{"@types/express":"^5.0.3","@types/jest":"^29.0.0","@types/node":"^18.19.127","@types/uuid":"^10.0.0","jest":"^29.0.0","typescript":"^5.9.2","vitest":"^3.2.4"},"dependencies":{"@modelcontextprotocol/sdk":"^1.18.2","axios":"^1.4.0","dotenv":"^17.2.2","uuid":"^9.0.0","zod":"^3.25.76"},"_id":"agnost@0.1.8","gitHead":"5dffc15e51013fcaf4681ea5210b160aeec3d637","_nodeVersion":"23.11.1","_npmVersion":"10.9.2","dist":{"integrity":"sha512-0558xURK3LQtD58vk8SrLOhJ5/mFylJ5AKbnOR6nAInJTItpZT2kWsMWoEPmBpiNkB6CAAhewK8RDnhv6omqvQ==","shasum":"b696a9cfb5f0445fab7efc8c057f647d212c8041","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/agnost/-/agnost-0.1.8.tgz","fileCount":34,"unpackedSize":99025,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGMmOV6wBTRimjSgwMJDeXf93AOAcBKvyrLQzh+NjO+FAiBbj3z+3kxuULKArPGECXrKfgTck8o/7tCJSvJqEzTTfg=="}],"size":23752},"_npmUser":{"name":"anonymous","email":"ajmeraparth132@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"ajmeraparth132@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/agnost_0.1.8_1770222997992_0.4666825642753676"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-02-04T16:36:38.132Z","publish_time":1770222998132,"_source_registry_name":"default","contributors":[]},"0.1.9":{"name":"agnost","version":"0.1.9","description":"Analytics SDK for Model Context Protocol Servers","main":"dist/index.js","types":"dist/index.d.ts","type":"module","scripts":{"build":"tsc","prepublishOnly":"npm run build","test":"jest"},"keywords":["analytics","mcp","model context protocol","ai","tools"],"author":{"name":"Agnost AI","email":"founders@agnost.ai"},"homepage":"https://agnost.ai","bugs":{"url":"https://docs.agnost.ai"},"devDependencies":{"@types/express":"^5.0.3","@types/jest":"^29.0.0","@types/node":"^18.19.127","@types/uuid":"^10.0.0","jest":"^29.0.0","typescript":"^5.9.2","vitest":"^3.2.4"},"dependencies":{"@modelcontextprotocol/sdk":"^1.18.2","axios":"^1.4.0","dotenv":"^17.2.2","uuid":"^9.0.0","zod":"^3.25.76"},"_id":"agnost@0.1.9","gitHead":"5aaa761cad33e3acfb1bc894ed48d212de8ca891","_nodeVersion":"23.11.1","_npmVersion":"10.9.2","dist":{"integrity":"sha512-02SUym2eis6RCVOFBhcPUCd9eU+pzQKqSCM5/gyf1fP7qoCYQAGWSi8Atw2vq0wpB2cFl2YjK357pVkVAy65lA==","shasum":"2f5b2c81b766ce8c0ee5a834c321bf4081fb1283","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/agnost/-/agnost-0.1.9.tgz","fileCount":34,"unpackedSize":101330,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDlNSn8AUx2Ae5fHjkJ1+E87smxpylGoCLd5WdxrvoNhwIhALhC5GfbMwqJJTimb7BQZ3qI+rv+nGhIfjMTqSwhB4G9"}],"size":24188},"_npmUser":{"name":"anonymous","email":"ajmeraparth132@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"ajmeraparth132@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/agnost_0.1.9_1770332824564_0.4955440253874268"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-02-05T23:07:04.724Z","publish_time":1770332824724,"_source_registry_name":"default","contributors":[]},"0.1.10":{"name":"agnost","version":"0.1.10","description":"Analytics SDK for Model Context Protocol Servers","main":"dist/index.js","types":"dist/index.d.ts","type":"module","scripts":{"build":"tsc","prepublishOnly":"npm run build","test":"jest"},"keywords":["analytics","mcp","model context protocol","ai","tools"],"author":{"name":"Agnost AI","email":"founders@agnost.ai"},"homepage":"https://agnost.ai","bugs":{"url":"https://docs.agnost.ai"},"devDependencies":{"@types/express":"^5.0.3","@types/jest":"^29.0.0","@types/node":"^18.19.127","@types/uuid":"^10.0.0","jest":"^29.0.0","typescript":"^5.9.2","vitest":"^3.2.4"},"dependencies":{"@modelcontextprotocol/sdk":"^1.18.2","axios":"^1.4.0","dotenv":"^17.2.2","uuid":"^9.0.0","zod":"^3.25.76"},"_id":"agnost@0.1.10","gitHead":"a1e6f27b83073065eef133fcf8b2f251aa54935a","_nodeVersion":"23.11.1","_npmVersion":"10.9.2","dist":{"integrity":"sha512-zXMsVGeD0KuWcQ6OhpL5wHkF+6eawun1T1wx2tlCheQoGUtclRz/UKdsY9x9LE6gqczxzylmlIiUTN5gaQnPmg==","shasum":"ceddca9cb7226adef2ad84e5fc62aa58dba082ee","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/agnost/-/agnost-0.1.10.tgz","fileCount":34,"unpackedSize":108687,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEAzi6X09j6EbkQfrxTpS5GMR3wr+M20uE7kIe1wbq/PAiEA2Z86BgpGa/FJSlyStCCko2OGlMAGnF93bEBMxA+jMqo="}],"size":25747},"_npmUser":{"name":"anonymous","email":"ajmeraparth132@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"ajmeraparth132@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/agnost_0.1.10_1770415652405_0.31765777662266603"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-02-06T22:07:32.535Z","publish_time":1770415652535,"_source_registry_name":"default","contributors":[]}},"dist-tags":{"latest":"0.1.10"},"name":"agnost","time":{"created":"2025-09-25T15:01:01.620Z","modified":"2026-02-06T22:07:47.625Z","0.1.0":"2025-09-25T15:00:44.945Z","0.1.1":"2025-09-25T21:55:21.492Z","0.1.2":"2025-09-29T07:29:24.892Z","0.1.3":"2025-09-29T10:47:18.000Z","0.1.4":"2025-11-07T10:49:58.080Z","0.1.5":"2025-11-07T12:33:48.728Z","0.1.6":"2025-12-04T20:16:40.568Z","0.1.7":"2025-12-05T13:49:39.310Z","0.1.8":"2026-02-04T16:36:38.132Z","0.1.9":"2026-02-05T23:07:04.724Z","0.1.10":"2026-02-06T22:07:32.535Z"},"readme":"# Agnost Analytics SDK (TypeScript)\n\n[![npm version](https://badge.fury.io/js/agnost.svg)](https://badge.fury.io/js/agnost)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAnalytics SDK for tracking and analyzing Model Context Protocol (MCP) server interactions.\n\n## Installation\n\n```bash\nnpm install agnost\n```\n\n## Setup Example\n\n```typescript\nimport { trackMCP, createConfig } from 'agnost';\nimport { Server } from '@modelcontextprotocol/sdk/server/index.js';\n\n// Create your MCP server instance\nconst server = new Server(\n  {\n    name: \"my-server\",\n    version: \"1.0.0\"\n  },\n  {\n    capabilities: {\n      tools: {}\n    }\n  }\n);\n\n// Configure analytics\nconst config = createConfig({\n  endpoint: \"https://api.agnost.ai\",\n  disableInput: false,\n  disableOutput: false\n});\n\n// Enable analytics tracking\nconst trackedServer = trackMCP(server, \"your-organization-id\", config);\n```\n\n## Configuration Example\n\n```typescript\nimport { trackMCP, createConfig } from 'agnost';\n\n// Create a custom configuration\nconst config = createConfig({\n  endpoint: \"https://api.agnost.ai\",\n  disableInput: false,   // Set to true to disable input tracking\n  disableOutput: false,  // Set to true to disable output tracking\n  disableLogs: false     // Set to true to completely disable all SDK logs\n});\n\n// Apply the configuration\ntrackMCP(\n  server,\n  \"your-organization-id\",\n  config\n);\n```\n\n### Disabling All Logs\n\nTo completely disable all SDK logs (including error logs), you can use the `disableLogs` option:\n\n```typescript\nimport { trackMCP, createConfig } from 'agnost';\n\n// Configuration with all logs disabled\nconst config = createConfig({\n  endpoint: \"https://api.agnost.ai\",\n  disableLogs: true  // This will disable ALL SDK logs\n});\n\ntrackMCP(server, \"your-organization-id\", config);\n```\n\nAlternatively, you can use environment variables:\n\n```bash\n# Disable all logs via environment variable\nexport AGNOST_DISABLE_LOGS=true\n\n# Or control log level (debug, info, warning, error)\nexport AGNOST_LOG_LEVEL=error\n```\n\n## User Identification\n\nThe SDK supports user identification to track analytics per user. This is especially useful for understanding usage patterns across different users and roles.\n\n### Basic User Identification\n\n```typescript\nimport { trackMCP, createConfig } from 'agnost';\n\n// Enable user identification\ntrackMCP(server, 'your-org-id', {\n  // .. other config like disableInput, disableOutput\n  identify: (request, env) => ({\n    userId: request?.headers?.['x-user-id'] || env?.USER_ID || 'anonymous',\n    email: request?.headers?.['x-user-email'] || env?.USER_EMAIL,\n    role: request?.headers?.['x-user-role'] || env?.USER_ROLE || 'user'\n  })\n});\n```\n\n### Advanced User Identification\n\n```typescript\nimport { trackMCP, createConfig } from 'agnost';\n\n// Complex identification logic with async operations\ntrackMCP(server, 'your-org-id', {\n  identify: async (request, env) => {\n    try {\n      // Extract token from headers\n      const token = request?.headers?.['authorization']?.replace('Bearer ', '');\n      if (!token) {\n        return { userId: 'anonymous' };\n      }\n\n      // You could validate token and fetch user info\n      // const userInfo = await validateTokenAndGetUser(token);\n\n      // Return user identity with custom fields\n      return {\n        userId: 'user-123',\n        email: 'user@example.com',\n        role: 'admin',\n        organization: 'acme-corp',\n        subscription: 'premium'\n      };\n    } catch (error) {\n      console.warn('User identification failed:', error);\n      return { userId: 'anonymous' };\n    }\n  }\n});\n```\n\n### User Identity Interface\n\nThe identify function should return a `UserIdentity` object or `null`:\n\n```typescript\ninterface UserIdentity {\n  userId: string;        // Required: Unique user identifier\n  [key: string]: any;   // Optional: Any additional user properties\n}\n\ntype IdentifyFunction = (\n  request?: any,                              // MCP request object with headers, params, etc.\n  env?: Record<string, string | undefined>    // Environment variables (process.env)\n) => UserIdentity | null | Promise<UserIdentity | null>;\n```\n\n### Identify Function Parameters\n\n- **`request`**: The incoming MCP request object containing:\n  - `headers`: HTTP-style headers (e.g., `x-user-id`, `authorization`)\n  - `params`: Request parameters including tool name and arguments\n  - Other request metadata from the MCP protocol\n\n- **`env`**: Environment variables from `process.env`, useful for:\n  - Reading user info from environment variables\n  - Accessing configuration secrets\n  - Getting deployment-specific user context\n\n### Common Usage Patterns\n\n#### 1. Header-based Identification\n```typescript\nidentify: (request, env) => ({\n  userId: request?.headers?.['x-user-id'] || 'anonymous',\n  role: request?.headers?.['x-user-role'] || 'user'\n})\n```\n\n#### 2. Environment Variable Identification\n```typescript\nidentify: (request, env) => ({\n  userId: env?.USER_ID || env?.LOGGED_IN_USER || 'anonymous',\n  workspace: env?.WORKSPACE_ID\n})\n```\n\n#### 3. Token-based Identification\n```typescript\nidentify: async (request, env) => {\n  const authHeader = request?.headers?.['authorization'];\n  if (authHeader?.startsWith('Bearer ')) {\n    const token = authHeader.replace('Bearer ', '');\n    const decoded = await decodeJWT(token);\n    return {\n      userId: decoded.sub,\n      email: decoded.email,\n      role: decoded.role\n    };\n  }\n  return { userId: 'anonymous' };\n}\n```\n\n### Important Notes\n\n- The `userId` field is **required** in the returned `UserIdentity` object\n- If identification fails, return `null` or `{ userId: 'anonymous' }`\n- User identification happens once per session and is cached\n- Any errors in the identify function are logged and fallback to anonymous tracking\n- Additional fields beyond `userId` are included in analytics for segmentation\n\n### Configuration Options\n\n| Option | Type | Default | Description |\n|--------|------|---------|-------------|\n| `endpoint` | `string` | `\"https://api.agnost.ai\"` | API endpoint URL |\n| `disableInput` | `boolean` | `false` | Disable tracking of input arguments |\n| `disableOutput` | `boolean` | `false` | Disable tracking of output results |\n| `disableLogs` | `boolean` | `false` | Completely disable all SDK logs |\n| `identify` | `IdentifyFunction` | `undefined` | Function to identify users from request context |\n\n## Performance Monitoring with Checkpoints\n\nThe TypeScript SDK provides a powerful `checkpoint()` function for detailed latency breakup of tool calls. Checkpoints allow you to track specific points in your tool's execution, providing granular observability into where time is being spent.\n\n### Overview\n\nWhen analyzing tool performance, knowing the total execution time is often not enough. The `checkpoint()` function lets you mark specific points in your execution flow to understand:\n\n- Which operations are slow\n- Where bottlenecks occur\n- How time is distributed across different phases\n- Performance impact of external API calls, database queries, or processing steps\n\nAll checkpoint data is automatically captured and visualized in the Agnost AI dashboard with interactive timeline charts.\n\n### Function Signature\n\n```typescript\nimport { checkpoint } from 'agnost';\n\ncheckpoint(name: string, metadata?: any): void\n```\n\n**Parameters:**\n- `name` (string): A descriptive name for the checkpoint (e.g., \"database_query_start\", \"api_call_complete\")\n- `metadata` (optional): Any additional context to attach to this checkpoint (e.g., row counts, response sizes, status codes)\n\n### Basic Usage\n\n```typescript\nimport { checkpoint } from 'agnost';\nimport { z } from 'zod';\n\n// Define your tool\nserver.tool(\n  'get_user_data',\n  'Fetches and processes user data from the database',\n  {\n    userId: z.string().describe('The user ID to fetch')\n  },\n  async ({ userId }) => {\n    // Mark the start of input validation\n    checkpoint('input_validation_start');\n\n    if (!userId || userId.length === 0) {\n      throw new Error('Invalid user ID');\n    }\n\n    checkpoint('input_validation_complete');\n\n    // Mark the start of database query\n    checkpoint('database_query_start');\n\n    const userData = await db.query('SELECT * FROM users WHERE id = ?', [userId]);\n\n    checkpoint('database_query_complete', {\n      rowCount: userData.length\n    });\n\n    // Mark the start of data processing\n    checkpoint('data_processing_start');\n\n    const processed = await processUserData(userData);\n\n    checkpoint('data_processing_complete', {\n      recordsProcessed: processed.length\n    });\n\n    return {\n      content: [\n        {\n          type: 'text',\n          text: JSON.stringify(processed)\n        }\n      ]\n    };\n  }\n);\n```\n\n### Advanced Example: API Call Monitoring\n\n```typescript\nimport { checkpoint } from 'agnost';\n\nserver.tool(\n  'fetch_weather',\n  'Fetches weather data from external API',\n  {\n    city: z.string()\n  },\n  async ({ city }) => {\n    // Track input normalization\n    checkpoint('input_normalization_start');\n    const normalizedCity = city.trim().toLowerCase();\n    checkpoint('input_normalization_complete');\n\n    // Track cache lookup\n    checkpoint('cache_lookup_start');\n    const cached = await cache.get(`weather:${normalizedCity}`);\n    checkpoint('cache_lookup_complete', { cacheHit: !!cached });\n\n    if (cached) {\n      checkpoint('returning_cached_data');\n      return cached;\n    }\n\n    // Track external API call\n    checkpoint('api_call_start');\n    const response = await fetch(`https://api.weather.com/v1/${normalizedCity}`);\n    checkpoint('api_call_complete', {\n      statusCode: response.status,\n      responseSize: response.headers.get('content-length')\n    });\n\n    // Track response parsing\n    checkpoint('response_parsing_start');\n    const data = await response.json();\n    checkpoint('response_parsing_complete');\n\n    // Track cache update\n    checkpoint('cache_update_start');\n    await cache.set(`weather:${normalizedCity}`, data, 3600);\n    checkpoint('cache_update_complete');\n\n    return {\n      content: [\n        {\n          type: 'text',\n          text: JSON.stringify(data)\n        }\n      ]\n    };\n  }\n);\n```\n\n### How Checkpoints Work\n\n1. **Automatic Context Tracking**: When a tool is called, the SDK automatically creates an execution context using AsyncLocalStorage\n2. **Relative Timestamps**: Each checkpoint records the time elapsed since the tool execution started (in milliseconds)\n3. **Metadata Capture**: Optional metadata is stored with each checkpoint for additional context\n4. **Safe Operation**: Checkpoints called outside of tool execution are safely ignored (no errors thrown)\n5. **Zero Performance Impact**: Checkpoints are optimized for minimal overhead and won't affect your tool's performance\n\n### Checkpoint Data Structure\n\nEach checkpoint is recorded with the following structure:\n\n```typescript\ninterface Checkpoint {\n  name: string;           // The checkpoint name\n  timestamp: number;      // Milliseconds since execution start\n  metadata?: any;         // Optional metadata object\n}\n```\n\n### Dashboard Visualization\n\nCheckpoints are automatically visualized in the Agnost AI dashboard with:\n\n- **Timeline Bar Chart**: Visual representation of time spent between checkpoints\n- **Detailed Breakdown**: List of all checkpoints with:\n  - Absolute timestamp (ms from start)\n  - Duration since previous checkpoint\n  - Percentage of total latency\n  - Metadata display\n- **Remaining Time Analysis**: Shows overhead/time not covered by explicit checkpoints\n\nExample timeline visualization:\n```\n[0ms--------50ms][50ms---------200ms][200ms----250ms]\n  Input Valid    DB Query           Processing\n```\n\n### Best Practices\n\n1. **Use Descriptive Names**: Make checkpoint names clear and specific\n   ```typescript\n   // Good\n   checkpoint('database_query_complete');\n   checkpoint('external_api_call_start');\n\n   // Avoid\n   checkpoint('step1');\n   checkpoint('done');\n   ```\n\n2. **Track Start and End**: For operations you want to measure, add both start and end checkpoints\n   ```typescript\n   checkpoint('operation_start');\n   await expensiveOperation();\n   checkpoint('operation_complete');\n   ```\n\n3. **Add Useful Metadata**: Include context that helps debug performance issues\n   ```typescript\n   checkpoint('query_complete', {\n     rowCount: results.length,\n     queryTime: Date.now() - startTime,\n     cacheHit: false\n   });\n   ```\n\n4. **Focus on Expensive Operations**: Add checkpoints around:\n   - Database queries\n   - External API calls\n   - File I/O operations\n   - Heavy computation\n   - Network requests\n\n5. **Don't Over-checkpoint**: Too many checkpoints can make analysis harder. Focus on meaningful boundaries\n   ```typescript\n   // Good: Major operation boundaries\n   checkpoint('fetch_data_start');\n   checkpoint('fetch_data_complete');\n   checkpoint('process_data_complete');\n\n   // Avoid: Too granular\n   checkpoint('variable_declared');\n   checkpoint('loop_iteration_1');\n   checkpoint('loop_iteration_2');\n   ```\n\n### Common Patterns\n\n#### Pattern 1: Database Operations\n```typescript\ncheckpoint('db_connection_start');\nconst connection = await pool.getConnection();\ncheckpoint('db_connection_acquired');\n\ncheckpoint('db_query_start');\nconst results = await connection.query(sql);\ncheckpoint('db_query_complete', { rowCount: results.length });\n```\n\n#### Pattern 2: Multi-Step Processing Pipeline\n```typescript\ncheckpoint('fetch_raw_data');\nconst raw = await fetchData();\n\ncheckpoint('transform_data');\nconst transformed = transform(raw);\n\ncheckpoint('validate_data');\nconst validated = validate(transformed);\n\ncheckpoint('store_data');\nawait store(validated);\ncheckpoint('pipeline_complete');\n```\n\n#### Pattern 3: Parallel Operations\n```typescript\ncheckpoint('parallel_operations_start');\n\nconst [result1, result2, result3] = await Promise.all([\n  operation1(),\n  operation2(),\n  operation3()\n]);\n\ncheckpoint('parallel_operations_complete', {\n  operation1Time: result1.duration,\n  operation2Time: result2.duration,\n  operation3Time: result3.duration\n});\n```\n\n### Troubleshooting\n\n**Checkpoints not appearing in dashboard:**\n- Ensure you're calling `checkpoint()` inside a tracked tool handler\n- Verify analytics tracking is enabled with `trackMCP()`\n- Check that your organization ID is correct\n\n**Timestamps seem incorrect:**\n- Timestamps are relative to tool execution start (not absolute time)\n- Ensure you're not calling `checkpoint()` outside of tool execution context\n\n**Performance concerns:**\n- Checkpoints have minimal overhead (< 1ms per checkpoint)\n- They use object pooling and efficient timestamp recording\n- Safe to use even in high-frequency tools","users":{}}