{"_id":"algorand-mcp","_rev":"33-825442527f12d85f32bba889dd5bb9eb","name":"algorand-mcp","dist-tags":{"latest":"3.0.6"},"versions":{"1.1.0":{"name":"algorand-mcp","version":"1.1.0","keywords":["algorand","mcp","blockchain"],"author":"","license":"MIT","_id":"algorand-mcp@1.1.0","maintainers":[{"name":"emg110","email":"emg110@gmail.com"}],"dist":{"shasum":"b8863d27ac2d71a3b47659b51066ed16262ea5be","tarball":"https://registry.npmjs.org/algorand-mcp/-/algorand-mcp-1.1.0.tgz","fileCount":71,"integrity":"sha512-upWtkvt2yJVbPBSIKwXyM8wPTRgieIWPJiaciDjNHW2NJR0fJueSiB4JeqXtuVC5NrkNEQ/62AzkOvQWJkagFQ==","signatures":[{"sig":"MEUCIQDlobWXjD7YmdwWONtjEsa1yBvq8dxCAvSEccZvSp19dQIgA/8SYys2TYiJq39rrf/4W/B6YFYh7zQvozZ7MxW9nSw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":393872},"gitHead":"6ec0ab5ea0c06db9867996beade85e684ad66369","scripts":{"test":"npm run test --workspaces","build":"npm run build --workspaces","clean":"npm run clean --workspaces"},"_npmUser":{"name":"emg110","email":"emg110@gmail.com"},"workspaces":["packages/*"],"_npmVersion":"10.9.2","description":"Algorand Model Context Protocol Implementation","directories":{},"_nodeVersion":"23.6.1","dependencies":{"algosdk":"^2.9.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/algorand-mcp_1.1.0_1741990602658_0.8537662920616835","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"algorand-mcp","version":"1.2.0","keywords":["algorand","mcp","blockchain"],"author":"","license":"MIT","_id":"algorand-mcp@1.2.0","maintainers":[{"name":"emg110","email":"emg110@gmail.com"}],"dist":{"shasum":"3b773e8ddcc88905aa59f8ddb453af8d8958a19b","tarball":"https://registry.npmjs.org/algorand-mcp/-/algorand-mcp-1.2.0.tgz","fileCount":71,"integrity":"sha512-lDJIL2HdEG3hJQw703hsW2di2FGMHj/eNkeIocKV9KNv5CuTGhbjPjrxt4EPTA7F1VOgsUAbdG46s0ZVM8ElRw==","signatures":[{"sig":"MEQCIEvIoVvl1HLhOK848GHzY4xBUK7GoxVJMLvNheideNExAiAVGapNRHCuVDT3iQA7bh9y1RkKUq5bwynzvRgBKgIuEw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":393557},"gitHead":"0320c2b17bd41f258e2958d570189a2b1c3f0b06","scripts":{"test":"npm run test --workspaces","build":"npm run build --workspaces","clean":"npm run clean --workspaces"},"_npmUser":{"name":"emg110","email":"emg110@gmail.com"},"workspaces":["packages/*"],"_npmVersion":"10.9.2","description":"Algorand Model Context Protocol Implementation","directories":{},"_nodeVersion":"23.6.1","dependencies":{"algosdk":"^2.9.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/algorand-mcp_1.2.0_1741991223098_0.12292717469736392","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"algorand-mcp","version":"1.3.0","keywords":["algorand","mcp","blockchain"],"author":"","license":"MIT","_id":"algorand-mcp@1.3.0","maintainers":[{"name":"emg110","email":"emg110@gmail.com"}],"dist":{"shasum":"db7914c268f9a6c1a54d3adc7aa587009a976813","tarball":"https://registry.npmjs.org/algorand-mcp/-/algorand-mcp-1.3.0.tgz","fileCount":84,"integrity":"sha512-syGPxVkt85BDZkKMyjcE9rrJrJhsZxvXUsNhAK6KJnnU443ySa9tjzU6PsF/KoS+vJ0RmlUy4wpfCxJXEvc1Mw==","signatures":[{"sig":"MEUCIQDcdeMinL9Qq/kqoTcZ25f6OkWIIA5ylZlPHwLckWpufAIgKuPvs6U4Z2dNqawcXKb9lApPEFKY3saPrYcsXZFtdwE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":474723},"gitHead":"a9432f08f285a3ba8f7c5ac0611198d9a800eaa2","scripts":{"test":"npm run test --workspaces","build":"npm run build --workspaces","clean":"npm run clean --workspaces"},"_npmUser":{"name":"emg110","email":"emg110@gmail.com"},"workspaces":["packages/*"],"_npmVersion":"10.9.2","description":"Algorand Model Context Protocol Implementation","directories":{},"_nodeVersion":"23.6.1","dependencies":{"algosdk":"^2.9.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/algorand-mcp_1.3.0_1742254808766_0.1078930529758122","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"algorand-mcp","version":"1.4.0","keywords":["algorand","mcp","blockchain"],"author":"","license":"MIT","_id":"algorand-mcp@1.4.0","maintainers":[{"name":"emg110","email":"emg110@gmail.com"}],"dist":{"shasum":"39189c8fffecccbd820a629a199797d8ebb44081","tarball":"https://registry.npmjs.org/algorand-mcp/-/algorand-mcp-1.4.0.tgz","fileCount":84,"integrity":"sha512-LOjgJc5TzuySreMvZFv8lxmpIUr5nzbrxpddOMdMBqq6awG0TGRTi/hV8UP73+fo4VzIOLWjdEce1M68+B8HKg==","signatures":[{"sig":"MEUCIQD9O9k5iPuAi9P2BHOAvKsVOBmu+Ciqsvwfb01b6WP0FQIgek7QNyYC0cVn4SxdhOxC795UDQDJYPa4llJD3Vg0HUE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":479507},"gitHead":"6c80bf67b3f7efcba9a6d7ae8edbcb6ba9646602","scripts":{"test":"npm run test --workspaces","build":"npm run build --workspaces","clean":"npm run clean --workspaces"},"_npmUser":{"name":"emg110","email":"emg110@gmail.com"},"workspaces":["packages/*"],"_npmVersion":"10.9.2","description":"Algorand Model Context Protocol Implementation","directories":{},"_nodeVersion":"23.6.1","dependencies":{"algosdk":"^2.9.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/algorand-mcp_1.4.0_1742255495806_0.2840131955564411","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"algorand-mcp","version":"1.5.0","keywords":["algorand","mcp","blockchain"],"author":"","license":"MIT","_id":"algorand-mcp@1.5.0","maintainers":[{"name":"emg110","email":"emg110@gmail.com"}],"dist":{"shasum":"defdb9aaa5a3b8299112ec1a0a62f3d4e3b8fee1","tarball":"https://registry.npmjs.org/algorand-mcp/-/algorand-mcp-1.5.0.tgz","fileCount":84,"integrity":"sha512-d/1jte/OC6KLcvTEpUAkunP4rcSMGMKKdzub33qwts++gADinKsQyD19DdRanpTfxWKNLeUAwCPPB+RJvttn0w==","signatures":[{"sig":"MEUCIFmkjZcJo3C2TBIdRu9pKXGle7XndL4SdCEAY5/9xxL4AiEAyYy/Xc2hJE2nscwI9DlqbPdwQPRnDb3PoUMYtICUwY8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":478177},"gitHead":"3536092b89432723a712a751b6489a4d89595bcb","scripts":{"test":"npm run test --workspaces","build":"npm run build --workspaces","clean":"npm run clean --workspaces"},"_npmUser":{"name":"emg110","email":"emg110@gmail.com"},"workspaces":["packages/*"],"_npmVersion":"10.9.2","description":"Algorand Model Context Protocol Implementation","directories":{},"_nodeVersion":"23.6.1","dependencies":{"algosdk":"^2.9.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/algorand-mcp_1.5.0_1742260410961_0.25884866875901524","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"algorand-mcp","version":"1.6.0","keywords":["algorand","mcp","blockchain"],"author":"","license":"MIT","_id":"algorand-mcp@1.6.0","maintainers":[{"name":"emg110","email":"emg110@gmail.com"}],"dist":{"shasum":"e6cb096da14f7e09cfc1a9171c147e61aff8a7c6","tarball":"https://registry.npmjs.org/algorand-mcp/-/algorand-mcp-1.6.0.tgz","fileCount":84,"integrity":"sha512-mJUoCY1ksZIkjieNNDtbfO9QaZyAKCoAHF4H/wG1sAFGoCtA+6vXwpJCKroMpfDC9BY4ec37AwpoxAUFyxh+5g==","signatures":[{"sig":"MEUCIQDNQq8+gAUlutuxKKGXdVx5FMa7gnpMp9/z88CA2My99QIgSaBwJPQjEeUs8fM7zYCWGptm5NowDTLRefwvaTl8ygM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":475281},"gitHead":"cca6e7f8150a864d45c96e4d5d7ffa10f967df12","scripts":{"test":"npm run test --workspaces","build":"npm run build --workspaces","clean":"npm run clean --workspaces"},"_npmUser":{"name":"emg110","email":"emg110@gmail.com"},"workspaces":["packages/*"],"_npmVersion":"10.9.2","description":"Algorand Model Context Protocol Implementation","directories":{},"_nodeVersion":"23.6.1","dependencies":{"algosdk":"^2.9.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/algorand-mcp_1.6.0_1742297208952_0.979026285578614","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"algorand-mcp","version":"1.7.0","keywords":["algorand","mcp","blockchain"],"author":"","license":"MIT","_id":"algorand-mcp@1.7.0","maintainers":[{"name":"emg110","email":"emg110@gmail.com"}],"dist":{"shasum":"a139adfbdd86ee2bf724d8f1909867ffa04409ba","tarball":"https://registry.npmjs.org/algorand-mcp/-/algorand-mcp-1.7.0.tgz","fileCount":84,"integrity":"sha512-uVTquDVL55xLMDaLzYft/XGaiVZQ5ySCGUT33O5sg56eo5UTh0r03i3DU9qFfaQRYDs875YZseberBfhIIhHYw==","signatures":[{"sig":"MEYCIQDb58OTRv3S26IYB5u8A2uSPI4kX4RjFh0ol8IJsQom2AIhAMM5vOdxb3B7b180alvCFRR/F5BlYYm4TKwyohs8vpTk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":473209},"gitHead":"c7510944e889976c72bd24b280a4ab312c79c234","scripts":{"test":"npm run test --workspaces","build":"npm run build --workspaces","clean":"npm run clean --workspaces"},"_npmUser":{"name":"emg110","email":"emg110@gmail.com"},"workspaces":["packages/*"],"_npmVersion":"10.9.2","description":"Algorand Model Context Protocol Implementation","directories":{},"_nodeVersion":"23.6.1","dependencies":{"algosdk":"^2.9.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/algorand-mcp_1.7.0_1742298543631_0.15610888293055258","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"algorand-mcp","version":"1.8.0","keywords":["algorand","mcp","blockchain"],"author":"","license":"MIT","_id":"algorand-mcp@1.8.0","maintainers":[{"name":"emg110","email":"emg110@gmail.com"}],"dist":{"shasum":"d70ef65582ae145a2c70a93e6aea532442a7ea8b","tarball":"https://registry.npmjs.org/algorand-mcp/-/algorand-mcp-1.8.0.tgz","fileCount":84,"integrity":"sha512-4HCdbEJHMwv7L1H6ZNZzsv59uN4Oj4tLYtnQbfryK+ZdbtQEhhaaBUcTR2o2uzZpBZ6onq3c8TBhbLUNyYtudw==","signatures":[{"sig":"MEQCID6gpezkj9KRY76uqb82YmFPBSzQEox93ffIEjMcpQR4AiAeRLhrfpD9tI+Somk7Z9Yqx9z5PMoie1VbLnmuzNixYg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":473206},"gitHead":"595b8572384cb760ce8035951c11400900701152","scripts":{"test":"npm run test --workspaces","build":"npm run build --workspaces","clean":"npm run clean --workspaces"},"_npmUser":{"name":"emg110","email":"emg110@gmail.com"},"workspaces":["packages/*"],"_npmVersion":"10.9.2","description":"Algorand Model Context Protocol Implementation","directories":{},"_nodeVersion":"23.6.1","dependencies":{"algosdk":"^2.9.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/algorand-mcp_1.8.0_1742302269242_0.017825375114791875","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"algorand-mcp","version":"1.9.0","keywords":["algorand","mcp","blockchain"],"author":"","license":"MIT","_id":"algorand-mcp@1.9.0","maintainers":[{"name":"emg110","email":"emg110@gmail.com"}],"dist":{"shasum":"4e281789ce29b2d6382b0e66d5477351ca0ed7a4","tarball":"https://registry.npmjs.org/algorand-mcp/-/algorand-mcp-1.9.0.tgz","fileCount":89,"integrity":"sha512-rr6XNGcAsTG4KqOmov/YXE3h/GFXAQZumza5XCh32oUwGNjGHvZd9dF0LZzrFCnCeH6nIXqFsy3sU5HaaT9vIQ==","signatures":[{"sig":"MEQCIHZjhFkpuoP46ADMSH7l5az2rbmQLkw/Hp8X9VnD84EEAiB7ZJp/9pfqJGybhP9XQ3/8edZKHvl9yu7nhJI2cjfykg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1467561},"gitHead":"d7708b775f2d2c4aa0b1efa89df741ce0e3a9b1e","scripts":{"test":"npm run test --workspaces","build":"npm run build --workspaces","clean":"npm run clean --workspaces"},"_npmUser":{"name":"emg110","email":"emg110@gmail.com"},"workspaces":["packages/*"],"_npmVersion":"10.9.2","description":"Algorand Model Context Protocol Implementation","directories":{},"_nodeVersion":"23.6.1","dependencies":{"algosdk":"^2.9.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/algorand-mcp_1.9.0_1742381890963_0.18819871967131108","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"algorand-mcp","version":"2.0.0","keywords":["algorand","mcp","blockchain"],"author":"","license":"MIT","_id":"algorand-mcp@2.0.0","maintainers":[{"name":"emg110","email":"emg110@gmail.com"}],"dist":{"shasum":"0e73b2838abba62f72590de573cfa794e2943fa7","tarball":"https://registry.npmjs.org/algorand-mcp/-/algorand-mcp-2.0.0.tgz","fileCount":113,"integrity":"sha512-c76NaCAwbsa0DYfhLxJbYXLyxEGU5ScDc3R0wmoS+7H04f09IcCrnYgjLeYb6P2OsUmX9I4wlU/UQXBdT8h8nQ==","signatures":[{"sig":"MEUCIAoc20cI8cDhCNFLmICKjb/o72ATHDkrna7HFTeR81wMAiEA36i90zuLhBaaTgCeZLMuVmVQHhJDNej8R84shduKo3A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1618773},"gitHead":"22f4032147faa27657219f81317d8b516f83727e","scripts":{"test":"npm run test --workspaces","build":"npm run build --workspaces","clean":"npm run clean --workspaces"},"_npmUser":{"name":"emg110","email":"emg110@gmail.com"},"workspaces":["packages/*"],"_npmVersion":"10.9.2","description":"Algorand Model Context Protocol Implementation","directories":{},"_nodeVersion":"23.6.1","dependencies":{"qrcode":"^1.5.4","algosdk":"2.9.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@types/qrcode":"^1.5.5"},"_npmOperationalInternal":{"tmp":"tmp/algorand-mcp_2.0.0_1742813492377_0.3899035390333241","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"algorand-mcp","version":"2.1.0","keywords":["algorand","mcp","blockchain"],"author":"","license":"MIT","_id":"algorand-mcp@2.1.0","maintainers":[{"name":"emg110","email":"emg110@gmail.com"}],"dist":{"shasum":"ef66d19791e970d0e525e4b5f61c5b08263ed95c","tarball":"https://registry.npmjs.org/algorand-mcp/-/algorand-mcp-2.1.0.tgz","fileCount":118,"integrity":"sha512-cBhD2PgbE1M5XM4fjJbQDVD6nEjUyXII/+z9R+gXiDf5JE5KfaVnS6ciyZbeb2ypuTnBKZVPL8CbBlxOCrvmgA==","signatures":[{"sig":"MEUCIQCwwYX0KvSra0dZxElOOSIo6m8ovTOczZ2iJoWjFScQNgIgM0XKzWxBRKkkBpk9szYBymAPwqarSxk9G9Fypn2EVwE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1862346},"gitHead":"663af88ebdd40cf444bef8f440dcbb9ba0a0c549","scripts":{"test":"npm run test --workspaces","build":"npm run build --workspaces","clean":"npm run clean --workspaces"},"_npmUser":{"name":"emg110","email":"emg110@gmail.com"},"workspaces":["packages/*"],"_npmVersion":"11.2.0","description":"Algorand Model Context Protocol Implementation","directories":{},"_nodeVersion":"23.6.1","dependencies":{"qrcode":"^1.5.4","algosdk":"2.9.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@types/qrcode":"^1.5.5"},"_npmOperationalInternal":{"tmp":"tmp/algorand-mcp_2.1.0_1743264760885_0.0353619635807596","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"algorand-mcp","version":"2.2.0","keywords":["algorand","mcp","blockchain"],"author":"","license":"MIT","_id":"algorand-mcp@2.2.0","maintainers":[{"name":"emg110","email":"emg110@gmail.com"}],"dist":{"shasum":"a459554ecb8d5b09c43cfc2a52d88897588069f8","tarball":"https://registry.npmjs.org/algorand-mcp/-/algorand-mcp-2.2.0.tgz","fileCount":118,"integrity":"sha512-V5d7fJxyLu7kCzrV7+ZNfD4PlqqA5RZecbhA0/G9j5fLmoa/y7wHjKTpqEoTzXWqGtFKUBrN5bZRi6CimPq4SA==","signatures":[{"sig":"MEQCIDIEtiFRFbIjtu5R++r5xOjt1JeuqCaPVhfvwQeJ6S+vAiAuSW3fOkSZHsKwwBtMtf4aFidpImO2LnxvsqhHo6z8oA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1869506},"gitHead":"8a2f85cdd04620d2d053889ff4050c83cf1b68c5","scripts":{"test":"npm run test --workspaces","build":"npm run build --workspaces","clean":"npm run clean --workspaces"},"_npmUser":{"name":"emg110","email":"emg110@gmail.com"},"workspaces":["packages/*"],"_npmVersion":"11.2.0","description":"Algorand Model Context Protocol Implementation","directories":{},"_nodeVersion":"23.6.1","dependencies":{"qrcode":"^1.5.4","algosdk":"2.9.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@types/qrcode":"^1.5.5"},"_npmOperationalInternal":{"tmp":"tmp/algorand-mcp_2.2.0_1743265428142_0.7151624046962837","host":"s3://npm-registry-packages-npm-production"}},"2.4.0":{"name":"algorand-mcp","version":"2.4.0","keywords":["algorand","mcp","blockchain"],"author":"","license":"MIT","_id":"algorand-mcp@2.4.0","maintainers":[{"name":"emg110","email":"emg110@gmail.com"}],"dist":{"shasum":"65b90a72e8b6c940a29e7d844a93a27887005c47","tarball":"https://registry.npmjs.org/algorand-mcp/-/algorand-mcp-2.4.0.tgz","fileCount":921,"integrity":"sha512-ksX7qLJjTTXIgnrP5rkLgcvZWEnGY430+EbFnR2rUUqfpMLKiCGVCuYEpd0nPfcX4Z7P4toS7ip5kx/s0zNY9A==","signatures":[{"sig":"MEQCIBs4hVXqIf5ms3bx6zROq3sQ89rUJ0uDHAdjjU8PEV9cAiAIyvJEAyKMar8WPNn7o58cDemjwFZCFIejkkOhg1bm7A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8276486},"gitHead":"0126d7ad88c23fb7ed6ba13804f53d9f464cb72d","scripts":{"test":"npm run test --workspaces","build":"npm run build --workspaces","clean":"npm run clean --workspaces"},"_npmUser":{"name":"emg110","email":"emg110@gmail.com"},"workspaces":["packages/*"],"_npmVersion":"11.2.0","description":"Algorand Model Context Protocol Implementation","directories":{},"_nodeVersion":"23.6.1","dependencies":{"qrcode":"^1.5.4","algosdk":"2.9.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@types/qrcode":"^1.5.5"},"_npmOperationalInternal":{"tmp":"tmp/algorand-mcp_2.4.0_1744560198171_0.607839115565084","host":"s3://npm-registry-packages-npm-production"}},"2.5.0":{"name":"algorand-mcp","version":"2.5.0","keywords":["algorand","mcp","blockchain"],"author":"","license":"MIT","_id":"algorand-mcp@2.5.0","maintainers":[{"name":"emg110","email":"emg110@gmail.com"}],"dist":{"shasum":"8e8f4bdbbe145988a8ad854e986a6fc099823335","tarball":"https://registry.npmjs.org/algorand-mcp/-/algorand-mcp-2.5.0.tgz","fileCount":920,"integrity":"sha512-sA2Hbt6IHcK1bLMDLCT5lpwqJpdz6BkNFviL/XWO7Oze+bLt7QYTUwxefE+2PcWV9AEoOYY6zYTggaoKjdhopg==","signatures":[{"sig":"MEUCIESbJblWhhQe/8lBDKO+3UowW5i7LiA1IVqKrftYIhkRAiEAw20qUgjZjII7699RlOPP4+OCRBXfhsyik97TfpWT0wo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7971911},"gitHead":"7be6800d541dca00837248b4d7274f0cd4ec7c18","scripts":{"test":"npm run test --workspaces","build":"npm run build --workspaces","clean":"npm run clean --workspaces"},"_npmUser":{"name":"emg110","email":"emg110@gmail.com"},"workspaces":["packages/*"],"_npmVersion":"11.2.0","description":"Algorand Model Context Protocol Implementation","directories":{},"_nodeVersion":"23.6.1","dependencies":{"qrcode":"^1.5.4","algosdk":"2.9.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@types/qrcode":"^1.5.5"},"_npmOperationalInternal":{"tmp":"tmp/algorand-mcp_2.5.0_1744568129785_0.11850577668497175","host":"s3://npm-registry-packages-npm-production"}},"2.6.0":{"name":"algorand-mcp","version":"2.6.0","keywords":["algorand","mcp","blockchain"],"author":"","license":"MIT","_id":"algorand-mcp@2.6.0","maintainers":[{"name":"emg110","email":"emg110@gmail.com"}],"dist":{"shasum":"2bfbd83c19efa21ea7cb7a327a2cc8e9963e50bf","tarball":"https://registry.npmjs.org/algorand-mcp/-/algorand-mcp-2.6.0.tgz","fileCount":920,"integrity":"sha512-A6Ya6XVVKlOvRqza5ObtD/RW5024jrSo/WOCKjBAuBeTrkqrNMt14ejZ5+GjyDWvvEKBtjDH0yrcBx6lzLd74g==","signatures":[{"sig":"MEUCIFexChETmPibfo5FTvEmGJeJDkr54T6VvEFRAL3aT23/AiEAl+xEjRKRHvAOMHkFzCdOn4wDN3P/mJMfTc2s1+zfH9w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8061876},"gitHead":"681573df60c5e1796dd96d965cc8fbbd6da06290","scripts":{"test":"npm run test --workspaces","build":"npm run build --workspaces","clean":"npm run clean --workspaces"},"_npmUser":{"name":"emg110","email":"emg110@gmail.com"},"workspaces":["packages/*"],"_npmVersion":"11.2.0","description":"Algorand Model Context Protocol Implementation","directories":{},"_nodeVersion":"23.6.1","dependencies":{"qrcode":"^1.5.4","algosdk":"2.9.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@types/qrcode":"^1.5.5"},"_npmOperationalInternal":{"tmp":"tmp/algorand-mcp_2.6.0_1745855002650_0.6962486868106457","host":"s3://npm-registry-packages-npm-production"}},"2.7.0":{"name":"algorand-mcp","version":"2.7.0","keywords":["algorand","mcp","blockchain"],"author":"","license":"MIT","_id":"algorand-mcp@2.7.0","maintainers":[{"name":"emg110","email":"emg110@gmail.com"}],"dist":{"shasum":"b162edb82db9aa27116a5135ec5ff66bb001738e","tarball":"https://registry.npmjs.org/algorand-mcp/-/algorand-mcp-2.7.0.tgz","fileCount":920,"integrity":"sha512-Yc5ZkvWpjZbHPrLqv1s29U/kTzsK3TB8t0tO7r4i3I09AENSCTzNWNg+Z5tRA2SOdrwDSBT2QLB1gE50cvd9Cg==","signatures":[{"sig":"MEYCIQDUPBi+D4VM/AGl6+mdlPALDFFbDcTmBATq5gfSAgJ0YQIhAPP6qgT/1vrYEQBPP7NFAjra/wIXaPhqxVfvgR5xAbUB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8062271},"gitHead":"12bbf22413f2e4ce6393347896b2a8b5ee58c6a8","scripts":{"test":"npm run test --workspaces","build":"npm run build --workspaces","clean":"npm run clean --workspaces"},"_npmUser":{"name":"emg110","email":"emg110@gmail.com"},"workspaces":["packages/*"],"_npmVersion":"11.2.0","description":"Algorand Model Context Protocol Implementation","directories":{},"_nodeVersion":"23.6.1","dependencies":{"qrcode":"^1.5.4","algosdk":"2.9.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@types/qrcode":"^1.5.5"},"_npmOperationalInternal":{"tmp":"tmp/algorand-mcp_2.7.0_1745917446936_0.9171951629770583","host":"s3://npm-registry-packages-npm-production"}},"2.7.1":{"name":"algorand-mcp","version":"2.7.1","keywords":["algorand","mcp","blockchain"],"author":"","license":"MIT","_id":"algorand-mcp@2.7.1","maintainers":[{"name":"emg110","email":"emg110@gmail.com"}],"dist":{"shasum":"e793a603196c1ae4730e3eb402f5ad4a1b9a923c","tarball":"https://registry.npmjs.org/algorand-mcp/-/algorand-mcp-2.7.1.tgz","fileCount":920,"integrity":"sha512-u44eVPd2a/9lZnjhKYvsKKU3EORX/pWaKDJQkeJVuSS8WrzjBeYQl4Y7c9HskxP/2LYt6yMMGFDk1mGUMinrww==","signatures":[{"sig":"MEYCIQD0Db0eYa9tc7ANTV5EvAY2905hiKT3wJtB5ZZu+imNfwIhAIYNnroVFCJDndBKgTSH6GPAHh5/QzzMmIN4r7ebD22C","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8062632},"gitHead":"b03faaeaaccd7337b64509466141dc560dd485a8","scripts":{"test":"npm run test --workspaces","build":"npm run build --workspaces","clean":"npm run clean --workspaces"},"_npmUser":{"name":"emg110","email":"emg110@gmail.com"},"workspaces":["packages/*"],"_npmVersion":"11.2.0","description":"Algorand Model Context Protocol Implementation","directories":{},"_nodeVersion":"23.6.1","dependencies":{"qrcode":"^1.5.4","algosdk":"2.9.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@types/qrcode":"^1.5.5"},"_npmOperationalInternal":{"tmp":"tmp/algorand-mcp_2.7.1_1745919621696_0.9663004792198868","host":"s3://npm-registry-packages-npm-production"}},"2.7.2":{"name":"algorand-mcp","version":"2.7.2","keywords":["algorand","mcp","blockchain"],"author":"","license":"MIT","_id":"algorand-mcp@2.7.2","maintainers":[{"name":"emg110","email":"emg110@gmail.com"}],"dist":{"shasum":"8741b80e0cae7f4fa462ff47e02d5d4cd1c5ac35","tarball":"https://registry.npmjs.org/algorand-mcp/-/algorand-mcp-2.7.2.tgz","fileCount":920,"integrity":"sha512-OA98VQKP/CJ39setKTq8KF0j2aX/B3h0FpQl3DFTab9DzAGzd/xGyBUullIghXla4R/SyEiZgZ/kyqwD/9b0XA==","signatures":[{"sig":"MEYCIQDwGyRx8wYT230OELRLQxBb7ZVt3Z8C+wKI1VgYyECxGQIhAODFhDosCN4pCLAB50c8Ny+lEnCh7+5J8hp6ftewmEpm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8063177},"gitHead":"9e19098a37cf5d19476fdc31ebb874bee75cebe9","scripts":{"test":"npm run test --workspaces","build":"npm run build --workspaces","clean":"npm run clean --workspaces"},"_npmUser":{"name":"emg110","email":"emg110@gmail.com"},"workspaces":["packages/*"],"_npmVersion":"11.2.0","description":"Algorand Model Context Protocol Implementation","directories":{},"_nodeVersion":"23.6.1","dependencies":{"qrcode":"^1.5.4","algosdk":"2.9.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@types/qrcode":"^1.5.5"},"_npmOperationalInternal":{"tmp":"tmp/algorand-mcp_2.7.2_1745920477697_0.02756493916302638","host":"s3://npm-registry-packages-npm-production"}},"2.7.3":{"name":"algorand-mcp","version":"2.7.3","keywords":["algorand","mcp","blockchain"],"author":"","license":"MIT","_id":"algorand-mcp@2.7.3","maintainers":[{"name":"emg110","email":"emg110@gmail.com"}],"dist":{"shasum":"3f1b9f9853726518f0b9b26378d1f2b1302d81cc","tarball":"https://registry.npmjs.org/algorand-mcp/-/algorand-mcp-2.7.3.tgz","fileCount":1843,"integrity":"sha512-m4pYxFdvoIAySTHXgGvXix33ypCtWvjnaXddVDLdO3juBnGDXU0eQB4YMLGBQyRDOAzr+Y5qEtDyVjX3JMuipQ==","signatures":[{"sig":"MEUCIGrL5/q6t6a+X1fAuFvSYv/gQTlBFLb6K9VvCiC9zl/5AiEA7qXypwa821hFh1+3MkhS3hcYsjk8zv2Cxkd3lI3M8SM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14715295},"gitHead":"77d3bdf3a1ae309e243836a22efabac9da2fb758","scripts":{"test":"npm run test --workspaces","build":"npm run build --workspaces","clean":"npm run clean --workspaces"},"_npmUser":{"name":"emg110","email":"emg110@gmail.com"},"workspaces":["packages/*"],"_npmVersion":"11.2.0","description":"Algorand Model Context Protocol Implementation","directories":{},"_nodeVersion":"23.6.1","dependencies":{"qrcode":"^1.5.4","algosdk":"2.9.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@types/qrcode":"^1.5.5"},"_npmOperationalInternal":{"tmp":"tmp/algorand-mcp_2.7.3_1745921722673_0.9576814009520709","host":"s3://npm-registry-packages-npm-production"}},"2.7.4":{"name":"algorand-mcp","version":"2.7.4","keywords":["algorand","mcp","blockchain"],"author":"","license":"MIT","_id":"algorand-mcp@2.7.4","maintainers":[{"name":"emg110","email":"emg110@gmail.com"}],"dist":{"shasum":"670f4e52ae5b48ba7b6932b59d8ba408d6fc9c90","tarball":"https://registry.npmjs.org/algorand-mcp/-/algorand-mcp-2.7.4.tgz","fileCount":1843,"integrity":"sha512-heGheg8SwLjU8OgaXPXKsoKgI8LO96B0/bhseRlYma3PxmIWxemh13YTHH/uH4Y9d6e4Oaw35vbdmYj48q/LMw==","signatures":[{"sig":"MEQCIGLGwh9v+d07hgFwdaiZyLwmeohwan9WKHDzbSUAYVUvAiBdKTbFxbbOqEvBqJhxn++De5BQfkp3zvnpFU+L7ykL5g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14715444},"gitHead":"df7b5cfcff78e160ee25afe713584041c41b3c84","scripts":{"test":"npm run test --workspaces","build":"npm run build --workspaces","clean":"npm run clean --workspaces"},"_npmUser":{"name":"emg110","email":"emg110@gmail.com"},"workspaces":["packages/*"],"_npmVersion":"11.2.0","description":"Algorand Model Context Protocol Implementation","directories":{},"_nodeVersion":"23.6.1","dependencies":{"qrcode":"^1.5.4","algosdk":"2.9.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@types/qrcode":"^1.5.5"},"_npmOperationalInternal":{"tmp":"tmp/algorand-mcp_2.7.4_1745923021238_0.2699907062145295","host":"s3://npm-registry-packages-npm-production"}},"2.7.5":{"name":"algorand-mcp","version":"2.7.5","keywords":["algorand","mcp","blockchain"],"author":"","license":"MIT","_id":"algorand-mcp@2.7.5","maintainers":[{"name":"emg110","email":"emg110@gmail.com"}],"dist":{"shasum":"5e59cf4a2773f3c508b2411a7708c74042614844","tarball":"https://registry.npmjs.org/algorand-mcp/-/algorand-mcp-2.7.5.tgz","fileCount":1843,"integrity":"sha512-aC6QfeujAi25cXx4ZvXWzv3u4Rhdu0/5FbQw5KiAzXmGJr0uHH5SZqvTJiYFmXn9Xs+qcRsK52A1B9HvUGnqDg==","signatures":[{"sig":"MEUCIGX8nqOnim39j7iS3wpoR4MG8QmcE1f352XWsyut07pbAiEApijbS2SUjpYqY7EJWrG8Cmyk9hFCVe8M6dYHpR3P3bs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14715593},"gitHead":"1b6e14588e3e37694ff50def2ac9b0328fa235a2","scripts":{"test":"npm run test --workspaces","build":"npm run build --workspaces","clean":"npm run clean --workspaces"},"_npmUser":{"name":"emg110","email":"emg110@gmail.com"},"workspaces":["packages/*"],"_npmVersion":"11.2.0","description":"Algorand Model Context Protocol Implementation","directories":{},"_nodeVersion":"23.6.1","dependencies":{"qrcode":"^1.5.4","algosdk":"2.9.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@types/qrcode":"^1.5.5"},"_npmOperationalInternal":{"tmp":"tmp/algorand-mcp_2.7.5_1745923152559_0.31588275157525736","host":"s3://npm-registry-packages-npm-production"}},"2.7.6":{"name":"algorand-mcp","version":"2.7.6","keywords":["algorand","mcp","blockchain"],"author":"","license":"MIT","_id":"algorand-mcp@2.7.6","maintainers":[{"name":"emg110","email":"emg110@gmail.com"}],"dist":{"shasum":"1c07143d128c76eb95cf1a1847b02fa29cf9d471","tarball":"https://registry.npmjs.org/algorand-mcp/-/algorand-mcp-2.7.6.tgz","fileCount":920,"integrity":"sha512-B392UDXN4K10lJgO1rB3/xH8abdGUe7yy/FhJiqWG1V73LXeroIzzamR4PaYMWX88qZtrjE83hRrrw/gS3kmZQ==","signatures":[{"sig":"MEQCICl/XiGDTvxOVbS24QYymuwGg2avoxUMBYlXDqI3217MAiA/A6tvvfWBAKPaDorqijERAsfG/8xgddtnVWtMc8Nu+Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8066246},"gitHead":"fd232b8c3dba39c31ab33cb6f9a01186582b7c0f","scripts":{"test":"npm run test --workspaces","build":"npm run build --workspaces","clean":"npm run clean --workspaces"},"_npmUser":{"name":"emg110","email":"emg110@gmail.com"},"workspaces":["packages/*"],"_npmVersion":"11.2.0","description":"Algorand Model Context Protocol Implementation","directories":{},"_nodeVersion":"23.6.1","dependencies":{"qrcode":"^1.5.4","algosdk":"2.9.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@types/qrcode":"^1.5.5"},"_npmOperationalInternal":{"tmp":"tmp/algorand-mcp_2.7.6_1745954950296_0.052193228670507574","host":"s3://npm-registry-packages-npm-production"}},"2.7.7":{"name":"algorand-mcp","version":"2.7.7","keywords":["algorand","mcp","blockchain"],"author":"","license":"MIT","_id":"algorand-mcp@2.7.7","maintainers":[{"name":"emg110","email":"emg110@gmail.com"}],"dist":{"shasum":"6c0858e6e68aa881b0d6f9d4ce7b4b3ed18d1a14","tarball":"https://registry.npmjs.org/algorand-mcp/-/algorand-mcp-2.7.7.tgz","fileCount":920,"integrity":"sha512-hF1ND01lwxBfjVLwPDD6EcyOPZr4mtQIOFLw2ggBXgsKOpSy6OzpDva+/q+uNPg0rpBJoFEmk1EYoPFHrreKOg==","signatures":[{"sig":"MEUCIQDjl7+as8pUV7pR9FTpeZVxalcprI0h4aJpSceNuYJS1gIgekZVCFDPRM7amZhp8She9wcr9QYhYZdeDWLhT9JyMcA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8069549},"gitHead":"f5ba7b4c780ac4ce7f2b203573a43863a51f35a3","scripts":{"test":"npm run test --workspaces","build":"npm run build --workspaces","clean":"npm run clean --workspaces"},"_npmUser":{"name":"emg110","email":"emg110@gmail.com"},"workspaces":["packages/*"],"_npmVersion":"11.2.0","description":"Algorand Model Context Protocol Implementation","directories":{},"_nodeVersion":"23.6.1","dependencies":{"qrcode":"^1.5.4","algosdk":"2.9.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@types/qrcode":"^1.5.5"},"_npmOperationalInternal":{"tmp":"tmp/algorand-mcp_2.7.7_1746102065439_0.3467958975595564","host":"s3://npm-registry-packages-npm-production"}},"2.7.8":{"name":"algorand-mcp","version":"2.7.8","keywords":["algorand","mcp","blockchain"],"author":"","license":"MIT","_id":"algorand-mcp@2.7.8","maintainers":[{"name":"emg110","email":"emg110@gmail.com"}],"bin":{"algorand-mcp":"packages/server/dist/index.js"},"dist":{"shasum":"795b414874029e907c34f95daf05f684e73d8c61","tarball":"https://registry.npmjs.org/algorand-mcp/-/algorand-mcp-2.7.8.tgz","fileCount":1837,"integrity":"sha512-GDwdNu+lcQHKYKIFCISbbC5ybjQfADO1PHECu3bL1EMDEi6EMrVPLNh21AcixjH5K0dWnzxEiPzeu9nDfqkJKg==","signatures":[{"sig":"MEYCIQCnXHnG8vuC6gaAyqQXtjZ2QA4MQzIOf7aieO2003UevQIhAIrbNUXcMvJUD8Y85zexC5ui6rWrCS7x/xXllnDivYri","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14706754},"main":"packages/server/dist/index.js","types":"./packages/server/dist/index.d.ts","gitHead":"f197d2ebeb8e7008a05b0c6d89c87039c1b880c0","scripts":{"test":"npm run test --workspaces","build":"npm run build --workspaces","clean":"npm run clean --workspaces"},"_npmUser":{"name":"emg110","email":"emg110@gmail.com"},"workspaces":["packages/*"],"_npmVersion":"11.3.0","description":"Algorand Model Context Protocol Implementation","directories":{},"_nodeVersion":"23.6.1","dependencies":{"qrcode":"^1.5.4","algosdk":"2.9.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@types/qrcode":"^1.5.5"},"_npmOperationalInternal":{"tmp":"tmp/algorand-mcp_2.7.8_1757672489589_0.2774309221486142","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"algorand-mcp","version":"3.0.0","keywords":["algorand","mcp","blockchain","model-context-protocol"],"author":"","license":"MIT","_id":"algorand-mcp@3.0.0","maintainers":[{"name":"emg110","email":"emg110@gmail.com"}],"bin":{"algorand-mcp":"dist/index.js"},"dist":{"shasum":"a63774ed4eab8ecc3d809babbb3fc37ee38db2dd","tarball":"https://registry.npmjs.org/algorand-mcp/-/algorand-mcp-3.0.0.tgz","fileCount":926,"integrity":"sha512-dvrIr8eDKXSMju/vZs+DZ92jHjsIdVDU6svFe2OuzuMpKD8Ru+xLowBkQ/TXzDIGujDGBm5OoSGsIs+IbO9SVQ==","signatures":[{"sig":"MEUCIQDCQ526yBRKrPH/r4rdkq/XL4KIcC2nXh5ZOiYI0/+FXQIgCrr4w+47AA1Quvol6LUupSSdzikXIQMkJZscpqzgXOg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6583573},"main":"dist/index.js","type":"module","_from":"file:algorand-mcp-3.0.0.tgz","types":"dist/index.d.ts","scripts":{"test":"NODE_OPTIONS='--experimental-vm-modules' jest","build":"tsc && cp -r src/resources/knowledge/taxonomy src/resources/knowledge/taxonomy-categories dist/resources/knowledge/ && chmod +x dist/index.js","clean":"rm -rf dist","test:all":"npm test && npm run test:e2e","test:e2e":"NODE_OPTIONS='--experimental-vm-modules' jest --config tests/jest.config.e2e.js","typecheck":"tsc --noEmit"},"_npmUser":{"name":"emg110","email":"emg110@gmail.com"},"_resolved":"/private/var/folders/_t/2dtgkff119707b_nhc90sys80000gn/T/40065f4527e571a7bc15c835ddfad662/algorand-mcp-3.0.0.tgz","_integrity":"sha512-dvrIr8eDKXSMju/vZs+DZ92jHjsIdVDU6svFe2OuzuMpKD8Ru+xLowBkQ/TXzDIGujDGBm5OoSGsIs+IbO9SVQ==","_npmVersion":"11.7.0","description":"Algorand Model Context Protocol Local Implementation","directories":{},"_nodeVersion":"20.19.6","dependencies":{"zod":"^3.25.61","qrcode":"^1.5.4","sql.js":"^1.14.0","algosdk":"^3.5.2","hi-base32":"^0.5.1","just-pick":"^4.2.0","@juit/qrcode":"^1.0.59","@noble/curves":"^2.0.1","@cf-wasm/photon":"^0.1.31","@napi-rs/keyring":"^1.2.0","algo-msgpack-with-bigint":"^2.1.1","@modelcontextprotocol/sdk":"^1.27.1","@tinymanorg/tinyman-js-sdk":"^5.1.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"29.7.0","ts-jest":"29.1.2","typescript":"^5.0.0","@types/jest":"29.5.12","@types/node":"^20.0.0","@jest/globals":"^30.2.0","@types/qrcode":"^1.5.5","@types/sql.js":"^1.4.9"},"_npmOperationalInternal":{"tmp":"tmp/algorand-mcp_3.0.0_1772272360246_0.9601119411756074","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"algorand-mcp","version":"3.0.1","keywords":["algorand","mcp","blockchain","model-context-protocol"],"author":"","license":"MIT","_id":"algorand-mcp@3.0.1","maintainers":[{"name":"emg110","email":"emg110@gmail.com"}],"bin":{"algorand-mcp":"dist/index.js"},"dist":{"shasum":"dbdac5556bcb83ae5d3d0051ed1d954881463328","tarball":"https://registry.npmjs.org/algorand-mcp/-/algorand-mcp-3.0.1.tgz","fileCount":926,"integrity":"sha512-lSbrVVmpB/aG4v7NX3tEG42m0WTNoylPEFmgXNxIqSM/hne4kevfRXc4cVZNydLPPw4Cii2+MvA1mXQ94VgLRg==","signatures":[{"sig":"MEYCIQDEHfKnBite8I0d0EsoAJaNA4nVob6L+WsaZjN4IiDD/AIhAII6xOAQguCZ9X5CGMi1ztMGP29yXtCXrRXs0klSD9Qt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6583576},"main":"dist/index.js","type":"module","_from":"file:algorand-mcp-3.0.1.tgz","types":"dist/index.d.ts","scripts":{"test":"NODE_OPTIONS='--experimental-vm-modules' jest","build":"tsc && cp -r src/resources/knowledge/taxonomy src/resources/knowledge/taxonomy-categories dist/resources/knowledge/ && chmod +x dist/index.js","clean":"rm -rf dist","test:all":"npm test && npm run test:e2e","test:e2e":"NODE_OPTIONS='--experimental-vm-modules' jest --config tests/jest.config.e2e.js","typecheck":"tsc --noEmit"},"_npmUser":{"name":"emg110","email":"emg110@gmail.com"},"_resolved":"/private/var/folders/_t/2dtgkff119707b_nhc90sys80000gn/T/e868c36d15ba403c01233ecd8f99b737/algorand-mcp-3.0.1.tgz","_integrity":"sha512-lSbrVVmpB/aG4v7NX3tEG42m0WTNoylPEFmgXNxIqSM/hne4kevfRXc4cVZNydLPPw4Cii2+MvA1mXQ94VgLRg==","_npmVersion":"11.7.0","description":"Algorand Model Context Protocol Local Implementation","directories":{},"_nodeVersion":"20.19.6","dependencies":{"zod":"^3.25.61","qrcode":"^1.5.4","sql.js":"^1.14.0","algosdk":"^3.5.2","hi-base32":"^0.5.1","just-pick":"^4.2.0","@juit/qrcode":"^1.0.59","@noble/curves":"^2.0.1","@cf-wasm/photon":"^0.1.31","@napi-rs/keyring":"^1.2.0","algo-msgpack-with-bigint":"^2.1.1","@modelcontextprotocol/sdk":"^1.27.1","@tinymanorg/tinyman-js-sdk":"^5.1.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"29.7.0","ts-jest":"29.1.2","typescript":"^5.0.0","@types/jest":"29.5.12","@types/node":"^20.0.0","@jest/globals":"^30.2.0","@types/qrcode":"^1.5.5","@types/sql.js":"^1.4.9"},"_npmOperationalInternal":{"tmp":"tmp/algorand-mcp_3.0.1_1772276061648_0.6814265507758555","host":"s3://npm-registry-packages-npm-production"}},"3.0.2":{"name":"algorand-mcp","version":"3.0.2","keywords":["algorand","mcp","blockchain","model-context-protocol"],"author":"","license":"MIT","_id":"algorand-mcp@3.0.2","maintainers":[{"name":"emg110","email":"emg110@gmail.com"}],"bin":{"algorand-mcp":"dist/index.js"},"dist":{"shasum":"e0ce1b853743384a0b8a8b46188fc7b7448f93bd","tarball":"https://registry.npmjs.org/algorand-mcp/-/algorand-mcp-3.0.2.tgz","fileCount":924,"integrity":"sha512-bTZItHqMKoSfRQRLdHRmaG2JbqHmeOH7/wXEeoGWzN6HNL9ctUUiTg3DhEOsvKg/OBMvYF+epTG0tlAo8nlzzA==","signatures":[{"sig":"MEYCIQCrqb8A2YNOnkgmA9MfV5AhH0edv7tn6LEmTD5SiQdZzAIhANdAhdrRymgQP3dhg7pqMo9aoHX74xY2AZSdRVn9iogi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6578549},"main":"dist/index.js","type":"module","_from":"file:algorand-mcp-3.0.2.tgz","types":"dist/index.d.ts","scripts":{"test":"NODE_OPTIONS='--experimental-vm-modules' jest","build":"tsc && cp -r src/resources/knowledge/taxonomy src/resources/knowledge/taxonomy-categories dist/resources/knowledge/ && chmod +x dist/index.js","clean":"rm -rf dist","test:all":"npm test && npm run test:e2e","test:e2e":"NODE_OPTIONS='--experimental-vm-modules' jest --config tests/jest.config.e2e.js","typecheck":"tsc --noEmit"},"_npmUser":{"name":"emg110","email":"emg110@gmail.com"},"_resolved":"/private/var/folders/_t/2dtgkff119707b_nhc90sys80000gn/T/dd7e7aef4d9a5295e5b5ed9f6e7d333f/algorand-mcp-3.0.2.tgz","_integrity":"sha512-bTZItHqMKoSfRQRLdHRmaG2JbqHmeOH7/wXEeoGWzN6HNL9ctUUiTg3DhEOsvKg/OBMvYF+epTG0tlAo8nlzzA==","_npmVersion":"11.7.0","description":"Algorand Model Context Protocol Local Implementation","directories":{},"_nodeVersion":"20.19.6","dependencies":{"zod":"^3.25.61","qrcode":"^1.5.4","sql.js":"^1.14.0","algosdk":"^3.5.2","hi-base32":"^0.5.1","just-pick":"^4.2.0","@juit/qrcode":"^1.0.59","@noble/curves":"^2.0.1","@cf-wasm/photon":"^0.1.31","@napi-rs/keyring":"^1.2.0","algo-msgpack-with-bigint":"^2.1.1","@modelcontextprotocol/sdk":"^1.27.1","@tinymanorg/tinyman-js-sdk":"^5.1.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"29.7.0","ts-jest":"29.1.2","typescript":"^5.0.0","@types/jest":"29.5.12","@types/node":"^20.0.0","@jest/globals":"^30.2.0","@types/qrcode":"^1.5.5","@types/sql.js":"^1.4.9"},"_npmOperationalInternal":{"tmp":"tmp/algorand-mcp_3.0.2_1772286333529_0.5237646520729957","host":"s3://npm-registry-packages-npm-production"}},"3.0.3":{"name":"algorand-mcp","version":"3.0.3","keywords":["algorand","mcp","blockchain","model-context-protocol"],"author":"","license":"MIT","_id":"algorand-mcp@3.0.3","maintainers":[{"name":"emg110","email":"emg110@gmail.com"}],"bin":{"algorand-mcp":"dist/index.js"},"dist":{"shasum":"af3d09d4d09cbcf798f22a3c66adbadf07c9a78c","tarball":"https://registry.npmjs.org/algorand-mcp/-/algorand-mcp-3.0.3.tgz","fileCount":924,"integrity":"sha512-thCSFhAXesg/h+INXMeU4nClvQdQvoQxhN/jxqG/IPhpHGIMm6Zi6vWl3GmcNHT0ENGjZW1LWi+iivZZ3MstDg==","signatures":[{"sig":"MEYCIQDI7IU/eJYtnG7iSQXY9IHDUFZ0dwggZ0S84Y9ia5V0ggIhAPpjTVIO3bN9HvZaKhlOUvWA9iQJjgRhW1JGKUSec0px","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6590444},"main":"dist/index.js","type":"module","_from":"file:algorand-mcp-3.0.3.tgz","types":"dist/index.d.ts","scripts":{"test":"NODE_OPTIONS='--experimental-vm-modules' jest","build":"tsc && cp -r src/resources/knowledge/taxonomy src/resources/knowledge/taxonomy-categories dist/resources/knowledge/ && chmod +x dist/index.js","clean":"rm -rf dist","test:all":"npm test && npm run test:e2e","test:e2e":"NODE_OPTIONS='--experimental-vm-modules' jest --config tests/jest.config.e2e.js","typecheck":"tsc --noEmit"},"_npmUser":{"name":"emg110","email":"emg110@gmail.com"},"_resolved":"/private/var/folders/_t/2dtgkff119707b_nhc90sys80000gn/T/8c6ceb3b40925b669615cb16f090d7de/algorand-mcp-3.0.3.tgz","_integrity":"sha512-thCSFhAXesg/h+INXMeU4nClvQdQvoQxhN/jxqG/IPhpHGIMm6Zi6vWl3GmcNHT0ENGjZW1LWi+iivZZ3MstDg==","_npmVersion":"11.7.0","description":"Algorand Model Context Protocol Local Implementation","directories":{},"_nodeVersion":"20.19.6","dependencies":{"zod":"^3.25.61","qrcode":"^1.5.4","sql.js":"^1.14.0","algosdk":"^3.5.2","hi-base32":"^0.5.1","just-pick":"^4.2.0","@juit/qrcode":"^1.0.59","@noble/curves":"^2.0.1","@cf-wasm/photon":"^0.1.31","@napi-rs/keyring":"^1.2.0","algo-msgpack-with-bigint":"^2.1.1","@modelcontextprotocol/sdk":"^1.27.1","@tinymanorg/tinyman-js-sdk":"^5.1.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"29.7.0","ts-jest":"29.1.2","typescript":"^5.0.0","@types/jest":"29.5.12","@types/node":"^20.0.0","@jest/globals":"^30.2.0","@types/qrcode":"^1.5.5","@types/sql.js":"^1.4.9"},"_npmOperationalInternal":{"tmp":"tmp/algorand-mcp_3.0.3_1772293328485_0.4305532685110296","host":"s3://npm-registry-packages-npm-production"}},"3.0.4":{"name":"algorand-mcp","version":"3.0.4","keywords":["algorand","mcp","blockchain","model-context-protocol"],"author":"","license":"MIT","_id":"algorand-mcp@3.0.4","maintainers":[{"name":"emg110","email":"emg110@gmail.com"}],"bin":{"algorand-mcp":"dist/index.js"},"dist":{"shasum":"4189da31321d0fca234860339d7bac6495edc5be","tarball":"https://registry.npmjs.org/algorand-mcp/-/algorand-mcp-3.0.4.tgz","fileCount":924,"integrity":"sha512-gaXmRvlRzxrYPa2e4YiRIFcaHG5zl97JYosms7JcUTCAR5TT0al2ubi0lSuak887iZ+4ZRiKFOqXYmMbeZJB4w==","signatures":[{"sig":"MEQCIHuVEiaINs8iXTB5dRFZvqghS5C51JoVsQlaDzSliuuaAiBntJz3/S+EX90mp8m/ol8OEP4/Rn8D8l69rf5oO2UJ4g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6595737},"main":"dist/index.js","type":"module","_from":"file:algorand-mcp-3.0.4.tgz","types":"dist/index.d.ts","scripts":{"test":"NODE_OPTIONS='--experimental-vm-modules' jest","build":"tsc && cp -r src/resources/knowledge/taxonomy src/resources/knowledge/taxonomy-categories dist/resources/knowledge/ && chmod +x dist/index.js","clean":"rm -rf dist","test:all":"npm test && npm run test:e2e","test:e2e":"NODE_OPTIONS='--experimental-vm-modules' jest --config tests/jest.config.e2e.js","typecheck":"tsc --noEmit"},"_npmUser":{"name":"emg110","email":"emg110@gmail.com"},"_resolved":"/private/var/folders/_t/2dtgkff119707b_nhc90sys80000gn/T/babfdaa5747498d756636d169a8cc08c/algorand-mcp-3.0.4.tgz","_integrity":"sha512-gaXmRvlRzxrYPa2e4YiRIFcaHG5zl97JYosms7JcUTCAR5TT0al2ubi0lSuak887iZ+4ZRiKFOqXYmMbeZJB4w==","_npmVersion":"11.7.0","description":"Algorand Model Context Protocol Local Implementation","directories":{},"_nodeVersion":"20.19.6","dependencies":{"zod":"^3.25.61","qrcode":"^1.5.4","sql.js":"^1.14.0","algosdk":"^3.5.2","hi-base32":"^0.5.1","just-pick":"^4.2.0","@juit/qrcode":"^1.0.59","@noble/curves":"^2.0.1","@cf-wasm/photon":"^0.1.31","@napi-rs/keyring":"^1.2.0","algo-msgpack-with-bigint":"^2.1.1","@modelcontextprotocol/sdk":"^1.27.1","@tinymanorg/tinyman-js-sdk":"^5.1.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"29.7.0","ts-jest":"29.1.2","typescript":"^5.0.0","@types/jest":"29.5.12","@types/node":"^20.0.0","@jest/globals":"^30.2.0","@types/qrcode":"^1.5.5","@types/sql.js":"^1.4.9"},"_npmOperationalInternal":{"tmp":"tmp/algorand-mcp_3.0.4_1772294257680_0.07938953172080687","host":"s3://npm-registry-packages-npm-production"}},"3.0.5":{"name":"algorand-mcp","version":"3.0.5","keywords":["algorand","mcp","blockchain","model-context-protocol"],"author":"","license":"MIT","_id":"algorand-mcp@3.0.5","maintainers":[{"name":"emg110","email":"emg110@gmail.com"}],"bin":{"algorand-mcp":"dist/index.js"},"dist":{"shasum":"b5559479298e0f74589129d84ec3808b3936160a","tarball":"https://registry.npmjs.org/algorand-mcp/-/algorand-mcp-3.0.5.tgz","fileCount":924,"integrity":"sha512-DBZswSryyuCMfZ213nySXsBP2jQabW2/Tl3NV/t5x/Er+jcevcWuX/W4KnPAvkgSBBByjdzxJU8nF64DtiQqyw==","signatures":[{"sig":"MEYCIQCq915eo/yjir0vUeqNjFrfmFq/cKBBqScXhdOOLer2AgIhALaa9n8OlbiobINL6LdyyGhTCYyTAVdL7bHiW9agZnp5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6596342},"main":"dist/index.js","type":"module","_from":"file:algorand-mcp-3.0.5.tgz","types":"dist/index.d.ts","scripts":{"test":"NODE_OPTIONS='--experimental-vm-modules' jest","build":"tsc && cp -r src/resources/knowledge/taxonomy src/resources/knowledge/taxonomy-categories dist/resources/knowledge/ && chmod +x dist/index.js","clean":"rm -rf dist","test:all":"npm test && npm run test:e2e","test:e2e":"NODE_OPTIONS='--experimental-vm-modules' jest --config tests/jest.config.e2e.js","typecheck":"tsc --noEmit"},"_npmUser":{"name":"emg110","email":"emg110@gmail.com"},"_resolved":"/private/var/folders/_t/2dtgkff119707b_nhc90sys80000gn/T/c5511b29970721075cacf8f8a298b6cb/algorand-mcp-3.0.5.tgz","_integrity":"sha512-DBZswSryyuCMfZ213nySXsBP2jQabW2/Tl3NV/t5x/Er+jcevcWuX/W4KnPAvkgSBBByjdzxJU8nF64DtiQqyw==","_npmVersion":"11.7.0","description":"Algorand Model Context Protocol Local Implementation","directories":{},"_nodeVersion":"20.19.6","dependencies":{"zod":"^3.25.61","qrcode":"^1.5.4","sql.js":"^1.14.0","algosdk":"^3.5.2","hi-base32":"^0.5.1","just-pick":"^4.2.0","@juit/qrcode":"^1.0.59","@noble/curves":"^2.0.1","@cf-wasm/photon":"^0.1.31","@napi-rs/keyring":"^1.2.0","algo-msgpack-with-bigint":"^2.1.1","@modelcontextprotocol/sdk":"^1.27.1","@tinymanorg/tinyman-js-sdk":"^5.1.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"29.7.0","ts-jest":"29.1.2","typescript":"^5.0.0","@types/jest":"29.5.12","@types/node":"^20.0.0","@jest/globals":"^30.2.0","@types/qrcode":"^1.5.5","@types/sql.js":"^1.4.9"},"_npmOperationalInternal":{"tmp":"tmp/algorand-mcp_3.0.5_1772294650610_0.611717529996461","host":"s3://npm-registry-packages-npm-production"}},"3.0.6":{"name":"algorand-mcp","version":"3.0.6","description":"Algorand Model Context Protocol Local Implementation","type":"module","keywords":["algorand","mcp","blockchain","model-context-protocol"],"author":"","license":"MIT","bin":{"algorand-mcp":"dist/index.js"},"main":"dist/index.js","types":"dist/index.d.ts","devDependencies":{"@jest/globals":"^30.2.0","@types/jest":"29.5.12","@types/node":"^20.0.0","@types/qrcode":"^1.5.5","@types/sql.js":"^1.4.9","jest":"29.7.0","ts-jest":"29.1.2","typescript":"^5.0.0"},"dependencies":{"@cf-wasm/photon":"^0.1.31","@juit/qrcode":"^1.0.59","@modelcontextprotocol/sdk":"^1.27.1","@napi-rs/keyring":"^1.2.0","@noble/curves":"^2.0.1","@tinymanorg/tinyman-js-sdk":"^5.1.2","algo-msgpack-with-bigint":"^2.1.1","algosdk":"^3.5.2","hi-base32":"^0.5.1","just-pick":"^4.2.0","qrcode":"^1.5.4","sql.js":"^1.14.0","zod":"^3.25.61"},"scripts":{"build":"tsc && cp -r src/resources/knowledge/taxonomy src/resources/knowledge/taxonomy-categories dist/resources/knowledge/ && chmod +x dist/index.js","clean":"rm -rf dist","test":"NODE_OPTIONS='--experimental-vm-modules' jest","test:e2e":"NODE_OPTIONS='--experimental-vm-modules' jest --config tests/jest.config.e2e.js","test:all":"npm test && npm run test:e2e","typecheck":"tsc --noEmit"},"_id":"algorand-mcp@3.0.6","_integrity":"sha512-K6zWKyW0NVwB3x62NkWYtFjWpKFUU/mcRz8SnReI3+oLCS2UKRn7rj1k/cdnP8P+b2G9QHbHv0V9OVQUV3iMwQ==","_resolved":"/private/var/folders/_t/2dtgkff119707b_nhc90sys80000gn/T/9d4a9735901a00ecfc9bc708a8e17ae2/algorand-mcp-3.0.6.tgz","_from":"file:algorand-mcp-3.0.6.tgz","_nodeVersion":"20.19.6","_npmVersion":"11.7.0","dist":{"integrity":"sha512-K6zWKyW0NVwB3x62NkWYtFjWpKFUU/mcRz8SnReI3+oLCS2UKRn7rj1k/cdnP8P+b2G9QHbHv0V9OVQUV3iMwQ==","shasum":"1256b30f0f0b8fd45b7845162124acbe8afcdb4c","tarball":"https://registry.npmjs.org/algorand-mcp/-/algorand-mcp-3.0.6.tgz","fileCount":924,"unpackedSize":6596546,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGKSewzX1TE5wHvAZEMfWvSapMpDH2Myq8kLpZ+08+igAiEArRwJWUx1XhAj7E2xQ6h/P+C3vYNr7F8g2/ZxLLgaPVY="}]},"_npmUser":{"name":"emg110","email":"emg110@gmail.com"},"directories":{},"maintainers":[{"name":"emg110","email":"emg110@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/algorand-mcp_3.0.6_1772360092505_0.9868512816974317"},"_hasShrinkwrap":false}},"time":{"created":"2025-03-14T22:16:42.657Z","modified":"2026-03-01T10:14:52.863Z","1.0.0":"2025-03-09T19:02:24.821Z","1.1.0":"2025-03-14T22:16:42.892Z","1.2.0":"2025-03-14T22:27:03.320Z","1.3.0":"2025-03-17T23:40:09.000Z","1.4.0":"2025-03-17T23:51:36.047Z","1.5.0":"2025-03-18T01:13:31.176Z","1.6.0":"2025-03-18T11:26:49.130Z","1.7.0":"2025-03-18T11:49:03.820Z","1.8.0":"2025-03-18T12:51:09.449Z","1.9.0":"2025-03-19T10:58:11.175Z","2.0.0":"2025-03-24T10:51:32.608Z","2.1.0":"2025-03-29T16:12:41.314Z","2.2.0":"2025-03-29T16:23:48.407Z","2.4.0":"2025-04-13T16:03:18.423Z","2.5.0":"2025-04-13T18:15:30.080Z","2.6.0":"2025-04-28T15:43:22.898Z","2.7.0":"2025-04-29T09:04:07.207Z","2.7.1":"2025-04-29T09:40:21.961Z","2.7.2":"2025-04-29T09:54:37.922Z","2.7.3":"2025-04-29T10:15:23.076Z","2.7.4":"2025-04-29T10:37:01.510Z","2.7.5":"2025-04-29T10:39:12.807Z","2.7.6":"2025-04-29T19:29:10.541Z","2.7.7":"2025-05-01T12:21:05.739Z","2.7.8":"2025-09-12T10:21:29.873Z","3.0.0":"2026-02-28T09:52:40.535Z","3.0.1":"2026-02-28T10:54:21.865Z","3.0.2":"2026-02-28T13:45:33.774Z","3.0.3":"2026-02-28T15:42:08.755Z","3.0.4":"2026-02-28T15:57:37.942Z","3.0.5":"2026-02-28T16:04:10.909Z","3.0.6":"2026-03-01T10:14:52.746Z"},"license":"MIT","keywords":["algorand","mcp","blockchain","model-context-protocol"],"description":"Algorand Model Context Protocol Local Implementation","maintainers":[{"name":"emg110","email":"emg110@gmail.com"}],"readme":"# Algorand MCP Server\n\n[![npm downloads](https://img.shields.io/npm/dm/algorand-mcp.svg)](https://www.npmjs.com/package/algorand-mcp)\n[![npm version](https://badge.fury.io/js/algorand-mcp.svg)](https://badge.fury.io/js/algorand-mcp)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nA comprehensive [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server that gives AI agents and LLMs full access to the Algorand blockchain. Built by [GoPlausible](https://goplausible.com).\n\nAlgorand is a carbon-negative, pure proof-of-stake Layer 1 blockchain with instant finality, low fees, and built-in support for smart contracts (AVM), standard assets (ASAs), and atomic transactions.\n\n## What is MCP?\n\n[Model Context Protocol](https://modelcontextprotocol.io/) is an open standard that lets AI applications connect to external tools and data sources. This server exposes Algorand blockchain operations as MCP tools that any compatible AI client can use — Claude Desktop, Claude Code, Cursor, Windsurf, and others.\n\n## Features\n\n- Secure wallet management via OS keychain — private keys never exposed to agents or LLMs\n- Account creation, key management, and rekeying\n- Transaction building, signing, and submission (payments, assets, applications, key registration)\n- Atomic transaction groups\n- TEAL compilation and disassembly\n- Full Algod and Indexer API access\n- NFDomains (NFD) name service integration\n- Tinyman AMM integration (pools, swaps, liquidity)\n- ARC-26 URI and QR code generation\n- Algorand knowledge base with full developer documentation taxonomy\n- Per-tool-call network selection (mainnet, testnet, localnet) and pagination\n\n## Requirements\n\n- Node.js v20 or later\n- npm, pnpm, or yarn\n\n## Installation\n\n### From npm\n\n```bash\nnpm install -g algorand-mcp\n```\n\n### From source\n\n```bash\ngit clone https://github.com/GoPlausible/algorand-mcp.git\ncd algorand-mcp\nnpm install\nnpm run build\n```\n\n## MCP Configuration\n\nThe server runs over stdio. Add it to your MCP client configuration to start using it.\n\n### Claude Desktop\n\nEdit `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\\Claude\\claude_desktop_config.json` (Windows):\n\n```json\n{\n  \"mcpServers\": {\n    \"algorand-mcp\": {\n      \"command\": \"node\",\n      \"args\": [\"/absolute/path/to/algorand-mcp/dist/index.js\"]\n    }\n  }\n}\n```\n\n### Claude Code\n\nCreate `.mcp.json` in your project root (project scope) or configure in `~/.claude.json` (user scope):\n\n```json\n{\n  \"mcpServers\": {\n    \"algorand-mcp\": {\n      \"type\": \"stdio\",\n      \"command\": \"node\",\n      \"args\": [\"/absolute/path/to/algorand-mcp/dist/index.js\"]\n    }\n  }\n}\n```\n\n### Cursor / Windsurf\n\nThese editors use the same JSON format as Claude Desktop. Add the server entry to the MCP settings panel or the corresponding config file for your editor.\n\n### Using global npm install\n\nIf you installed globally via `npm install -g algorand-mcp`, you can use the binary name directly:\n\n```json\n{\n  \"mcpServers\": {\n    \"algorand-mcp\": {\n      \"command\": \"algorand-mcp\"\n    }\n  }\n}\n```\n\nThat's it — **no environment variables are required** for standard use. Network selection, pagination, and node URLs are all handled dynamically.\n\n## Network Selection\n\nEvery tool accepts an optional `network` parameter: `\"mainnet\"` (default), `\"testnet\"`, or `\"localnet\"`. Algod and Indexer URLs are built-in for mainnet and testnet via [AlgoNode](https://algonode.io/).\n\nExample tool call:\n```json\n{ \"name\": \"api_algod_get_account_info\", \"arguments\": { \"address\": \"ABC...\", \"network\": \"testnet\" } }\n```\n\nIf no `network` is provided, tools default to **mainnet**.\n\n## Pagination\n\nAPI responses are automatically paginated. Every tool accepts an optional `itemsPerPage` parameter (default: 10). Pass the `pageToken` from a previous response to fetch the next page.\n\n## Secure Wallet\n\n### Architecture\n\nThe wallet system has two layers of storage, each with a distinct security role:\n\n| Layer | What it stores | Where | Encryption |\n|---|---|---|---|\n| **OS Keychain** | Mnemonics (secret keys) | macOS Keychain / Linux libsecret / Windows Credential Manager | OS-managed, hardware-backed where available |\n| **Embedded SQLite** | Account metadata (nicknames, allowances, spend tracking) | `~/.algorand-mcp/wallet.db` | Plaintext (no secrets) |\n\n**Private key material never appears in tool responses, MCP config files, environment variables, or logs.** The agent only sees addresses, public keys, and signed transaction blobs.\n\n### How it works\n\n```\n  Agent (LLM)                    MCP Server                     Storage\n  ──────────                     ──────────                     ───────\n       │                              │                              │\n       │  wallet_add_account          │                              │\n       │  { nickname: \"main\" }        │                              │\n       │ ──────────────────────────►  │  generate keypair            │\n       │                              │  store mnemonic ──────────►  │  OS Keychain (encrypted)\n       │                              │  store metadata ──────────►  │  SQLite (nickname, limits)\n       │  ◄─ { address, publicKey }   │                              │\n       │                              │                              │\n       │  wallet_sign_transaction     │                              │\n       │  { transaction: {...} }      │                              │\n       │ ──────────────────────────►  │  check spending limits       │\n       │                              │  retrieve mnemonic ◄──────  │  OS Keychain\n       │                              │  sign in memory              │\n       │  ◄─ { txID, blob }          │  (key discarded)             │\n       │                              │                              │\n```\n\n1. **Account creation** (`wallet_add_account`) — Generates a keypair (or imports a mnemonic), stores the mnemonic in the OS keychain, and stores metadata (nickname, spending limits) in SQLite. Returns **only** address and public key.\n2. **Active account** — One account is active at a time. `wallet_switch_account` changes it by nickname or index. All signing and query tools operate on the active account.\n3. **Transaction signing** (`wallet_sign_transaction`) — Checks per-transaction and daily spending limits, retrieves the key from the keychain, signs in memory, discards the key. Returns only the signed blob.\n4. **Data signing** (`wallet_sign_data`) — Signs arbitrary hex data using raw Ed25519 via the [`@noble/curves`](https://github.com/paulmillr/noble-curves) library (no Algorand SDK prefix). Useful for off-chain authentication.\n5. **Asset opt-in** (`wallet_optin_asset`) — Creates, signs, and submits an opt-in transaction for the active account in one step.\n\n### Spending limits\n\nEach account has two configurable limits (in microAlgos, 0 = unlimited):\n\n- **`allowance`** — Maximum amount per single transaction. Rejects any transaction exceeding this.\n- **`dailyAllowance`** — Maximum total spend per calendar day across all transactions. Automatically resets at midnight. Tracked in SQLite.\n\n### Platform keychain support\n\nThe keychain backend is provided by [`@napi-rs/keyring`](https://github.com/nicolo-ribaudo/napi-keyring) (Rust-based, prebuilt binaries):\n\n| Platform | Backend |\n|---|---|\n| macOS | Keychain Services (the system Keychain app) |\n| Linux | libsecret (GNOME Keyring) or KWallet |\n| Windows | Windows Credential Manager |\n\nAll credentials are stored under the service name `algorand-mcp`. You can inspect them with your OS keychain app (e.g. Keychain Access on macOS).\n\n## Optional Environment Variables\n\nEnvironment variables are only needed for special setups. Pass them via the `env` block in your MCP config.\n\n| Variable | Description | Default | When needed |\n|---|---|---|---|\n| `ALGORAND_TOKEN` | API token for private/authenticated nodes | `\"\"` | Connecting to a private Algod/Indexer node |\n| `ALGORAND_LOCALNET_URL` | Localnet base URL | `\"\"` | Using `network: \"localnet\"` (e.g. `http://localhost:4001`) |\n\n### Example: localnet (AlgoKit)\n\n```json\n{\n  \"mcpServers\": {\n    \"algorand-mcp\": {\n      \"command\": \"node\",\n      \"args\": [\"/path/to/algorand-mcp/dist/index.js\"],\n      \"env\": {\n        \"ALGORAND_LOCALNET_URL\": \"http://localhost:4001\",\n        \"ALGORAND_TOKEN\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"\n      }\n    }\n  }\n}\n```\n\nThen use `\"network\": \"localnet\"` in your tool calls.\n\n## Available Tools\n\n### Wallet Tools (10 tools)\n\nSee [Secure Wallet](#secure-wallet) for full architecture details.\n\n| Tool | Description |\n|---|---|\n| `wallet_add_account` | Create a new Algorand account with nickname and spending limits (returns address + public key only) |\n| `wallet_remove_account` | Remove an account from the wallet by nickname or index |\n| `wallet_list_accounts` | List all accounts with nicknames, addresses, and limits |\n| `wallet_switch_account` | Switch the active account by nickname or index |\n| `wallet_get_info` | Get active account info: address, public key, balance, and spending limits |\n| `wallet_get_assets` | Get all asset holdings for the active account |\n| `wallet_sign_transaction` | Sign a single transaction with the active account (enforces spending limits) |\n| `wallet_sign_transaction_group` | Sign a group of transactions with the active account (auto-assigns group ID) |\n| `wallet_sign_data` | Sign arbitrary hex data with raw Ed25519 (noble, no SDK prefix) |\n| `wallet_optin_asset` | Opt the active account into an asset (creates, signs, and submits) |\n\n### Account Management (8 tools)\n\n| Tool | Description |\n|---|---|\n| `create_account` | Create a new Algorand account (returns address + mnemonic in the clear) |\n| `rekey_account` | Rekey an account to a new address |\n| `mnemonic_to_mdk` | Convert mnemonic to master derivation key |\n| `mdk_to_mnemonic` | Convert master derivation key to mnemonic |\n| `secret_key_to_mnemonic` | Convert secret key to mnemonic |\n| `mnemonic_to_secret_key` | Convert mnemonic to secret key |\n| `seed_from_mnemonic` | Generate seed from mnemonic |\n| `mnemonic_from_seed` | Generate mnemonic from seed |\n\n### Utility Tools (13 tools)\n\n| Tool | Description |\n|---|---|\n| `ping` | Server connectivity check and info |\n| `validate_address` | Check if an Algorand address is valid |\n| `encode_address` | Encode a public key to an Algorand address |\n| `decode_address` | Decode an Algorand address to a public key |\n| `get_application_address` | Get address for a given application ID |\n| `bytes_to_bigint` | Convert bytes to BigInt |\n| `bigint_to_bytes` | Convert BigInt to bytes |\n| `encode_uint64` | Encode uint64 to bytes |\n| `decode_uint64` | Decode bytes to uint64 |\n| `verify_bytes` | Verify signature against bytes |\n| `sign_bytes` | Sign bytes with a secret key |\n| `encode_obj` | Encode object to msgpack |\n| `decode_obj` | Decode msgpack to object |\n\n### Transaction Tools (16 tools)\n\n| Tool | Description |\n|---|---|\n| `make_payment_txn` | Create a payment transaction |\n| `make_keyreg_txn` | Create a key registration transaction |\n| `make_asset_create_txn` | Create an asset creation transaction |\n| `make_asset_config_txn` | Create an asset configuration transaction |\n| `make_asset_destroy_txn` | Create an asset destroy transaction |\n| `make_asset_freeze_txn` | Create an asset freeze transaction |\n| `make_asset_transfer_txn` | Create an asset transfer transaction |\n| `make_app_create_txn` | Create an application creation transaction |\n| `make_app_update_txn` | Create an application update transaction |\n| `make_app_delete_txn` | Create an application delete transaction |\n| `make_app_optin_txn` | Create an application opt-in transaction |\n| `make_app_closeout_txn` | Create an application close-out transaction |\n| `make_app_clear_txn` | Create an application clear state transaction |\n| `make_app_call_txn` | Create an application call transaction |\n| `assign_group_id` | Assign group ID for atomic transactions |\n| `sign_transaction` | Sign a transaction with a secret key |\n\n### Algod Tools (5 tools)\n\n| Tool | Description |\n|---|---|\n| `compile_teal` | Compile TEAL source code |\n| `disassemble_teal` | Disassemble TEAL bytecode to source |\n| `send_raw_transaction` | Submit signed transactions to the network |\n| `simulate_raw_transactions` | Simulate raw transactions |\n| `simulate_transactions` | Simulate transactions with detailed config |\n\n### Algod API Tools (13 tools)\n\n| Tool | Description |\n|---|---|\n| `api_algod_get_account_info` | Get account balance, assets, and auth address |\n| `api_algod_get_account_application_info` | Get account-specific application info |\n| `api_algod_get_account_asset_info` | Get account-specific asset info |\n| `api_algod_get_application_by_id` | Get application information |\n| `api_algod_get_application_box` | Get application box by name |\n| `api_algod_get_application_boxes` | Get all application boxes |\n| `api_algod_get_asset_by_id` | Get asset information |\n| `api_algod_get_pending_transaction` | Get pending transaction info |\n| `api_algod_get_pending_transactions_by_address` | Get pending transactions for an address |\n| `api_algod_get_pending_transactions` | Get all pending transactions |\n| `api_algod_get_transaction_params` | Get suggested transaction parameters |\n| `api_algod_get_node_status` | Get current node status |\n| `api_algod_get_node_status_after_block` | Get node status after a specific round |\n\n### Indexer API Tools (17 tools)\n\n| Tool | Description |\n|---|---|\n| `api_indexer_lookup_account_by_id` | Get account information |\n| `api_indexer_lookup_account_assets` | Get account assets |\n| `api_indexer_lookup_account_app_local_states` | Get account app local states |\n| `api_indexer_lookup_account_created_applications` | Get apps created by account |\n| `api_indexer_search_for_accounts` | Search accounts with filters |\n| `api_indexer_lookup_applications` | Get application information |\n| `api_indexer_lookup_application_logs` | Get application log messages |\n| `api_indexer_search_for_applications` | Search applications |\n| `api_indexer_lookup_application_box` | Get application box by name |\n| `api_indexer_lookup_application_boxes` | Get all application boxes |\n| `api_indexer_lookup_asset_by_id` | Get asset info and configuration |\n| `api_indexer_lookup_asset_balances` | Get asset holders and balances |\n| `api_indexer_lookup_asset_transactions` | Get transactions for an asset |\n| `api_indexer_search_for_assets` | Search assets |\n| `api_indexer_lookup_transaction_by_id` | Get transaction by ID |\n| `api_indexer_lookup_account_transactions` | Get account transaction history |\n| `api_indexer_search_for_transactions` | Search transactions |\n\n### NFDomains Tools (6 tools)\n\n| Tool | Description |\n|---|---|\n| `api_nfd_get_nfd` | Get NFD by name or application ID |\n| `api_nfd_get_nfds_for_addresses` | Get NFDs for specific addresses |\n| `api_nfd_get_nfd_activity` | Get activity/changes for NFDs |\n| `api_nfd_get_nfd_analytics` | Get NFD analytics data |\n| `api_nfd_browse_nfds` | Browse NFDs with filters |\n| `api_nfd_search_nfds` | Search NFDs |\n\n### Tinyman AMM Tools (9 tools)\n\n| Tool | Description |\n|---|---|\n| `api_tinyman_get_pool` | Get pool info by asset pair |\n| `api_tinyman_get_pool_analytics` | Get pool analytics |\n| `api_tinyman_get_pool_creation_quote` | Get quote for creating a pool |\n| `api_tinyman_get_liquidity_quote` | Get quote for adding liquidity |\n| `api_tinyman_get_remove_liquidity_quote` | Get quote for removing liquidity |\n| `api_tinyman_get_swap_quote` | Get quote for swapping assets |\n| `api_tinyman_get_asset_optin_quote` | Get quote for asset opt-in |\n| `api_tinyman_get_validator_optin_quote` | Get quote for validator opt-in |\n| `api_tinyman_get_validator_optout_quote` | Get quote for validator opt-out |\n\n### ARC-26 URI Tools (1 tool)\n\n| Tool | Description |\n|---|---|\n| `generate_algorand_uri` | Generate Algorand URI and QR code per ARC-26 spec |\n\n### Knowledge Tools (1 tool)\n\n| Tool | Description |\n|---|---|\n| `get_knowledge_doc` | Get markdown content for Algorand knowledge documents |\n\n\n## Resources\n\nThe server exposes MCP resources for direct data access. Wallet resources are described in the [Secure Wallet](#secure-wallet) section above.\n\n### Knowledge Resources\n\n| URI | Description |\n|---|---|\n| `algorand://knowledge/taxonomy` | Full Algorand knowledge taxonomy |\n| `algorand://knowledge/taxonomy/arcs` | Algorand Request for Comments |\n| `algorand://knowledge/taxonomy/sdks` | SDK documentation |\n| `algorand://knowledge/taxonomy/algokit` | AlgoKit documentation |\n| `algorand://knowledge/taxonomy/algokit-utils` | AlgoKit Utils documentation |\n| `algorand://knowledge/taxonomy/tealscript` | TEALScript documentation |\n| `algorand://knowledge/taxonomy/puya` | Puya documentation |\n| `algorand://knowledge/taxonomy/liquid-auth` | Liquid Auth documentation |\n| `algorand://knowledge/taxonomy/python` | Python SDK documentation |\n| `algorand://knowledge/taxonomy/developers` | Developer documentation |\n| `algorand://knowledge/taxonomy/clis` | CLI tools documentation |\n| `algorand://knowledge/taxonomy/nodes` | Node management documentation |\n| `algorand://knowledge/taxonomy/details` | Technical details documentation |\n\n## Project Structure\n\n```\nalgorand-mcp/\n├── src/                         # TypeScript source\n│   ├── index.ts                 # Server entry point\n│   ├── networkConfig.ts         # Hardcoded network URLs and client factories\n│   ├── algorand-client.ts       # Re-exports from networkConfig\n│   ├── env.ts                   # Legacy env shim (unused)\n│   ├── types.ts                 # Shared types (Zod schemas)\n│   ├── resources/               # MCP Resources\n│   │   ├── knowledge/           # Documentation taxonomy\n│   │   └── wallet/              # Wallet resources\n│   ├── tools/                   # MCP Tools\n│   │   ├── commonParams.ts      # Network + pagination schema fragments\n│   │   ├── walletManager.ts     # Secure wallet (keychain + SQLite)\n│   │   ├── accountManager.ts    # Account operations\n│   │   ├── utilityManager.ts    # Utility functions\n│   │   ├── algodManager.ts      # TEAL compile, simulate, submit\n│   │   ├── arc26Manager.ts      # ARC-26 URI generation\n│   │   ├── knowledgeManager.ts  # Knowledge document access\n│   │   ├── transactionManager/  # Transaction building\n│   │   │   ├── accountTransactions.ts\n│   │   │   ├── assetTransactions.ts\n│   │   │   ├── appTransactions/\n│   │   │   └── generalTransaction.ts\n│   │   └── apiManager/          # API integrations\n│   │       ├── algod/           # Algod API\n│   │       ├── indexer/         # Indexer API\n│   │       ├── nfd/             # NFDomains\n│   │       ├── tinyman/         # Tinyman AMM\n│   │       └── example/         # Example tools\n│   └── utils/\n│       └── responseProcessor.ts # Pagination and formatting\n├── tests/                       # Test suite\n│   ├── helpers/                 # Shared test utilities\n│   │   ├── mockFactories.ts     # Mock algod/indexer/keychain factories\n│   │   ├── testConfig.ts        # Category enable/disable logic\n│   │   ├── e2eSetup.ts          # E2E account provisioning + invokeTool()\n│   │   └── testConstants.ts     # Well-known testnet addresses and asset IDs\n│   ├── unit/                    # 11 unit test suites (mocked, fast)\n│   ├── e2e/                     # 11 E2E test suites (live testnet)\n│   │   ├── globalSetup.ts       # Account provisioning + fund-check\n│   │   └── globalTeardown.ts    # Cleanup\n│   └── jest.config.e2e.js       # E2E-specific Jest config\n├── dist/                        # Compiled output\n├── jest.config.js               # Unit test Jest config\n├── tsconfig.json                # Production TypeScript config\n├── tsconfig.test.json           # Test TypeScript config\n└── package.json\n```\n\n## Response Format\n\nAll tool responses follow the MCP content format. API responses include automatic pagination when datasets exceed `itemsPerPage` (default 10):\n\n```json\n{\n  \"data\": { ... },\n  \"metadata\": {\n    \"totalItems\": 100,\n    \"itemsPerPage\": 10,\n    \"currentPage\": 1,\n    \"totalPages\": 10,\n    \"hasNextPage\": true,\n    \"pageToken\": \"eyJ...\"\n  }\n}\n```\n\nPass `pageToken` from a previous response to fetch the next page. Set `itemsPerPage` on any tool call to control page size.\n\n## Development\n\n```bash\n# Install dependencies\nnpm install\n\n# Type-check\nnpm run typecheck\n\n# Build\nnpm run build\n\n# Clean build output\nnpm run clean\n```\n\n## Testing\n\nThe project has a comprehensive dual-layer test suite: fast **unit tests** (mocked, no network) and real **E2E tests** (live testnet). Both use [Jest 29](https://jestjs.io/) with [ts-jest](https://kulshekhar.github.io/ts-jest/) and ESM support.\n\n### Quick start\n\n```bash\nnpm test                    # Unit tests (fast, no network)\nnpm run test:e2e            # E2E tests (testnet, generates account + fund link)\nnpm run test:all            # Both\n```\n\n### Unit tests\n\nUnit tests cover all 11 tool categories with fully mocked network dependencies. They run in parallel and finish in ~5 seconds. No environment variables or funded accounts are needed.\n\n```bash\nnpm test\n```\n\n**Coverage:** 11 suites, 75+ tests covering success paths, error handling, and edge cases for every tool category.\n\n| Suite | What it tests |\n|---|---|\n| `accountManager` | Account creation, mnemonic round-trips, rekey parameter validation |\n| `utilityManager` | Ping, address validation, encode/decode, sign/verify bytes, encode/decode objects |\n| `walletManager` | Full lifecycle: add → list → switch → get info → sign data → remove (mocked keychain + SQLite) |\n| `transactionManager` | Payment, asset, app transaction building; sign_transaction; assign_group_id |\n| `algodManager` | TEAL compile/disassemble, send raw, simulate |\n| `apiAlgod` | All 13 algod API tools with correct mock routing |\n| `apiIndexer` | All 17 indexer API tools with fluent builder mocks |\n| `apiNfd` | NFD get/search/browse with mocked fetch |\n| `apiTinyman` | Tinyman pool/swap with error handling |\n| `arc26Manager` | ARC-26 URI generation and QR code SVG output |\n| `knowledgeManager` | Knowledge document retrieval and missing-doc error handling |\n\n#### How mocking works\n\nUnit tests use `jest.unstable_mockModule()` (ESM-compatible) to intercept imports before they load. The shared [tests/helpers/mockFactories.ts](tests/helpers/mockFactories.ts) provides:\n\n- **`setupNetworkMocks()`** — Replaces `algorand-client.ts` with mock algod/indexer clients that return deterministic responses without any network calls.\n- **`createKeychainMock()`** — Replaces `@napi-rs/keyring` with an in-memory `Map`, so wallet tests work without an OS keychain.\n- **Fluent Proxy mocks** — Algorand's Indexer SDK uses a builder pattern (`.searchForAssets().limit(5).do()`). The mock factory uses ES `Proxy` objects that return themselves for any chained method and resolve when `.do()` is called.\n\n### E2E tests\n\nE2E tests call tool handlers directly against **Algorand testnet** (via [AlgoNode](https://algonode.io/) public nodes). They run serially to avoid rate-limiting.\n\n```bash\nnpm run test:e2e\n```\n\nOn first run (no mnemonic provided), the test setup:\n1. Generates a new Algorand account\n2. Prints the address and mnemonic\n3. Prints a fund link: https://lora.algokit.io/testnet/fund\n4. Runs all tests (unfunded tests still pass)\n\nTo run with a funded account:\n\n```bash\nE2E_MNEMONIC=\"word1 word2 ... word25\" npm run test:e2e\n```\n\n**Coverage:** 11 suites, 35+ tests covering real network interactions.\n\n| Suite | What it tests |\n|---|---|\n| `account` | Account creation, mnemonic-to-key round-trip chain |\n| `utility` | Ping, address validation, encode/decode, sign/verify bytes, encode/decode objects |\n| `wallet` | Full wallet lifecycle: add → list → switch → get info → get assets → sign data → remove |\n| `transaction` | Build payment → sign → verify txID; build asset opt-in; build group with assign_group_id |\n| `algod` | Compile + disassemble TEAL round-trip |\n| `algodApi` | Account info, suggested params, node status, asset info via algod |\n| `indexerApi` | Account lookup, asset/transaction/account search via indexer |\n| `nfd` | Look up \"algo.algo\", search NFDs, browse NFDs |\n| `tinyman` | Get ALGO/USDC pool |\n| `arc26` | Generate ARC-26 URI, verify format + QR SVG |\n| `knowledge` | Retrieve known knowledge doc content |\n\n### Category activation\n\nE2E tests can be selectively enabled by category or individual tool via environment variables. **By default all categories are enabled.**\n\n#### Enable specific categories\n\n```bash\nE2E_WALLET=1 npm run test:e2e            # Only wallet tests\nE2E_ALGOD=1 E2E_UTILITY=1 npm run test:e2e  # Algod + utility tests\n```\n\n#### Available category flags\n\n| Env var | Category |\n|---|---|\n| `E2E_ALL=1` | All categories (explicit) |\n| `E2E_WALLET=1` | Wallet tools |\n| `E2E_ACCOUNT=1` | Account tools |\n| `E2E_UTILITY=1` | Utility tools |\n| `E2E_TRANSACTION=1` | Transaction tools |\n| `E2E_ALGOD=1` | Algod tools |\n| `E2E_ALGOD_API=1` | Algod API tools |\n| `E2E_INDEXER_API=1` | Indexer API tools |\n| `E2E_NFD=1` | NFDomains tools |\n| `E2E_TINYMAN=1` | Tinyman tools |\n| `E2E_ARC26=1` | ARC-26 tools |\n| `E2E_KNOWLEDGE=1` | Knowledge tools |\n\n**Important:** Setting any individual flag (e.g. `E2E_WALLET=1`) disables all other categories unless `E2E_ALL=1` is also set.\n\n#### Enable specific tools\n\n```bash\nE2E_TOOLS=ping,validate_address npm run test:e2e\n```\n\nThe `E2E_TOOLS` variable accepts a comma-separated list of tool names. Only tests for those specific tools will run.\n\n### Test file structure\n\n```\ntests/\n├── helpers/\n│   ├── mockFactories.ts       # Mock algod/indexer/keychain factories\n│   ├── testConfig.ts          # Category enable/disable logic\n│   ├── e2eSetup.ts            # E2E account provisioning + invokeTool()\n│   └── testConstants.ts       # Well-known testnet addresses and asset IDs\n├── unit/                      # 11 unit test files (*.test.ts)\n│   ├── accountManager.test.ts\n│   ├── utilityManager.test.ts\n│   ├── walletManager.test.ts\n│   ├── transactionManager.test.ts\n│   ├── algodManager.test.ts\n│   ├── apiAlgod.test.ts\n│   ├── apiIndexer.test.ts\n│   ├── apiNfd.test.ts\n│   ├── apiTinyman.test.ts\n│   ├── arc26Manager.test.ts\n│   └── knowledgeManager.test.ts\n├── e2e/                       # 11 E2E test files (*.e2e.test.ts)\n│   ├── globalSetup.ts         # Account provisioning + fund-check\n│   ├── globalTeardown.ts      # Cleanup\n│   ├── account.e2e.test.ts\n│   ├── utility.e2e.test.ts\n│   ├── wallet.e2e.test.ts\n│   ├── transaction.e2e.test.ts\n│   ├── algod.e2e.test.ts\n│   ├── algodApi.e2e.test.ts\n│   ├── indexerApi.e2e.test.ts\n│   ├── nfd.e2e.test.ts\n│   ├── tinyman.e2e.test.ts\n│   ├── arc26.e2e.test.ts\n│   └── knowledge.e2e.test.ts\n└── jest.config.e2e.js         # E2E-specific Jest config\n```\n\n### Jest configuration\n\n| Config | Purpose | Key settings |\n|---|---|---|\n| `jest.config.js` (root) | Unit tests | `testTimeout: 10s`, parallel workers, `testMatch: tests/unit/**` |\n| `tests/jest.config.e2e.js` | E2E tests | `testTimeout: 60s`, `maxWorkers: 1` (serial), `globalSetup/globalTeardown` |\n| `tsconfig.test.json` | TypeScript for tests | `rootDir: \".\"`, includes both `src/` and `tests/` |\n\n### Writing new tests\n\n**Unit test template:**\n\n```typescript\nimport { jest } from '@jest/globals';\nimport { setupNetworkMocks } from '../helpers/mockFactories.js';\n\njest.unstable_mockModule('../../src/algorand-client.js', () => setupNetworkMocks());\n\nconst { YourManager } = await import('../../src/tools/yourManager.js');\n\ndescribe('YourManager', () => {\n  it('does something', async () => {\n    const result = await YourManager.handleTool('tool_name', { arg: 'value' });\n    const data = JSON.parse(result.content[0].text);\n    expect(data.field).toBeDefined();\n  });\n});\n```\n\n**E2E test template:**\n\n```typescript\nimport { describeIf, testConfig } from '../helpers/testConfig.js';\nimport { invokeTool, parseToolResponse } from '../helpers/e2eSetup.js';\n\ndescribeIf(testConfig.isCategoryEnabled('your-category'))('Your Tools (E2E)', () => {\n  it('does something on testnet', async () => {\n    const data = parseToolResponse(\n      await invokeTool('tool_name', { arg: 'value', network: 'testnet' }),\n    );\n    expect(data.field).toBeDefined();\n  });\n});\n```\n\n## Dependencies\n\n- [algosdk](https://github.com/algorand/js-algorand-sdk) v3 — Algorand JavaScript SDK\n- [@modelcontextprotocol/sdk](https://github.com/modelcontextprotocol/typescript-sdk) — MCP TypeScript SDK\n- [@napi-rs/keyring](https://github.com/nicolo-ribaudo/napi-keyring) — Native OS keychain access (macOS Keychain, Linux libsecret, Windows Credential Manager)\n- [sql.js](https://github.com/sql-js/sql.js) — Embedded SQLite (WASM) for wallet metadata persistence\n- [@noble/curves](https://github.com/paulmillr/noble-curves) — Pure JS Ed25519 for raw data signing (`wallet_sign_data`)\n- [@tinymanorg/tinyman-js-sdk](https://github.com/tinymanorg/tinyman-js-sdk) — Tinyman AMM SDK\n- [zod](https://github.com/colinhacks/zod) — Runtime type validation\n- [qrcode](https://github.com/soldair/node-qrcode) — QR code generation for ARC-26\n\n## License\n\nMIT\n","readmeFilename":"README.md"}