{"_id":"@ar-agents/identity-attest","_rev":"15-5de9a0d1133dbeef3944002bd2d3c40b","name":"@ar-agents/identity-attest","dist-tags":{"latest":"0.9.0"},"versions":{"0.1.0":{"name":"@ar-agents/identity-attest","version":"0.1.0","keywords":["identity","kyc","attestation","verification","otp","magic-link","ai-sdk","vercel-ai","agent","agentic","renaper","argentina"],"author":{"name":"Nazareno Clemente","email":"naza@helloastro.co"},"license":"MIT","_id":"@ar-agents/identity-attest@0.1.0","maintainers":[{"name":"naza-ar","email":"clementenaza@gmail.com"}],"homepage":"https://github.com/ar-agents/ar-agents/tree/main/packages/identity-attest","bugs":{"url":"https://github.com/ar-agents/ar-agents/issues"},"dist":{"shasum":"c0dc9172703fce438edb1440a16ea4645268e73f","tarball":"https://registry.npmjs.org/@ar-agents/identity-attest/-/identity-attest-0.1.0.tgz","fileCount":12,"integrity":"sha512-ehhfIH/HUOcJRHQB57lEX9m4ToB2CKInV2NYJBpUDvXgjMC2ek/BWaKDcaXajiO6zCFMt63CiORJrFqt2g6zDQ==","signatures":[{"sig":"MEUCIE+zRGAgoL351i+yXrfwSf83CjlFH6JUnQ8/w9NSDENZAiEA0jo4Pn5Qg+X4JfuF6Ot8yT65x7n4zoFDu3WuAZT8Prk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":254967},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"1f0cb48c7d1defa1d104ed9f22a78902249e3494","scripts":{"lint":"echo 'no lint configured yet'","size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","validate":"publint && attw --pack .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"naza-ar","email":"clementenaza@gmail.com"},"repository":{"url":"git+https://github.com/ar-agents/ar-agents.git","type":"git","directory":"packages/identity-attest"},"size-limit":[{"name":"ESM","path":"dist/index.js","limit":"12 KB","ignore":["node:crypto","crypto"]},{"name":"CJS","path":"dist/index.cjs","limit":"12 KB","ignore":["node:crypto","crypto"]}],"_npmVersion":"10.9.2","description":"Identity attestation pattern for AI agents — orchestrate verification flows (WhatsApp OTP, email magic link, Auth0, MercadoPago Identity, SID gov) and get back a signed attestation with a trust level. The RENAPER workaround that lets agents do KYC without","directories":{},"_nodeVersion":"22.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ai":"^6.0.175","zod":"^4.4.3","tsup":"^8.3.5","vitest":"^2.1.8","typescript":"^5.9.3","@types/node":"^20.19.39","@ar-agents/whatsapp":"workspace:*"},"peerDependencies":{"ai":">=6.0.0","zod":">=3.0.0"},"peerDependenciesMeta":{"@ar-agents/whatsapp":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/identity-attest_0.1.0_1778009259300_0.05320352571259046","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@ar-agents/identity-attest","version":"0.2.0","keywords":["identity","kyc","attestation","verification","otp","magic-link","ai-sdk","vercel-ai","agent","agentic","renaper","argentina"],"author":{"name":"Nazareno Clemente","email":"naza@helloastro.co"},"license":"MIT","_id":"@ar-agents/identity-attest@0.2.0","maintainers":[{"name":"naza-ar","email":"clementenaza@gmail.com"}],"homepage":"https://github.com/ar-agents/ar-agents/tree/main/packages/identity-attest","bugs":{"url":"https://github.com/ar-agents/ar-agents/issues"},"dist":{"shasum":"58806fe9c8b6c21589ceaad4d30990525400a337","tarball":"https://registry.npmjs.org/@ar-agents/identity-attest/-/identity-attest-0.2.0.tgz","fileCount":12,"integrity":"sha512-0awy4mT10ItH6M5JLuZrsUXyx6adW6RossS1TT2BKrFMg48PTgS5WCG5ChEkhQMvQk4BVw73z7PPs4FWBUaNdg==","signatures":[{"sig":"MEYCIQDDhtya4hnLdM3br36A3aOD1LBfMPbWC1kivVl1yYEO+QIhAJ3H58fo9dIacFL1eZ9XXRvh3fjJloSXgbnwdOuVWfUa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":358840},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"c04f844b94729dd8a2989ca8522f656451da8138","scripts":{"lint":"echo 'no lint configured yet'","size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","validate":"publint && attw --pack .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"naza-ar","email":"clementenaza@gmail.com"},"repository":{"url":"git+https://github.com/ar-agents/ar-agents.git","type":"git","directory":"packages/identity-attest"},"size-limit":[{"name":"ESM","path":"dist/index.js","limit":"30 KB","ignore":["node:crypto","crypto"]},{"name":"CJS","path":"dist/index.cjs","limit":"30 KB","ignore":["node:crypto","crypto"]}],"_npmVersion":"10.9.2","description":"Identity attestation pattern for AI agents — orchestrate verification flows (WhatsApp OTP, email magic link, Auth0, MercadoPago Identity, SID gov) and get back a signed attestation with a trust level. The RENAPER workaround that lets agents do KYC without","directories":{},"_nodeVersion":"22.15.0","dependencies":{"jose":"^6.2.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ai":"^6.0.175","zod":"^4.4.3","tsup":"^8.3.5","vitest":"^2.1.8","typescript":"^5.9.3","@types/node":"^20.19.39","@magic-sdk/admin":"^2.8.2","@ar-agents/whatsapp":"workspace:*"},"peerDependencies":{"ai":">=6.0.0","zod":">=3.0.0","@magic-sdk/admin":">=2.0.0"},"peerDependenciesMeta":{"@magic-sdk/admin":{"optional":true},"@ar-agents/whatsapp":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/identity-attest_0.2.0_1778013185628_0.22392578792018036","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@ar-agents/identity-attest","version":"0.3.0","keywords":["identity","kyc","attestation","verification","otp","magic-link","ai-sdk","vercel-ai","agent","agentic","renaper","argentina"],"author":{"name":"Nazareno Clemente","email":"naza@helloastro.co"},"license":"MIT","_id":"@ar-agents/identity-attest@0.3.0","maintainers":[{"name":"naza-ar","email":"clementenaza@gmail.com"}],"homepage":"https://github.com/ar-agents/ar-agents/tree/main/packages/identity-attest","bugs":{"url":"https://github.com/ar-agents/ar-agents/issues"},"dist":{"shasum":"e2bfc3bf34779931971c677f72e126fc1326c343","tarball":"https://registry.npmjs.org/@ar-agents/identity-attest/-/identity-attest-0.3.0.tgz","fileCount":12,"integrity":"sha512-QQGGKoA/UL5/GxaHtmz3PIaQy4FohPt+AuLRY+K7mUtX6v370szax7WkhuzSkvd6FUyMGMGYHIPFJQIin2HSvw==","signatures":[{"sig":"MEYCIQDRGEQwnlyJOu8x8uNydj+9SmwEWm9pxCEYR+A3I2WlJwIhAI63YZBmTVm3BAe5m557uD9K1J8xbPRafeBDP8ytdZG5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":374106},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"funding":{"url":"https://github.com/sponsors/naza00000","type":"github"},"gitHead":"8f4301af034942dd46ea09191d62136526d0202d","scripts":{"lint":"echo 'no lint configured yet'","size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","validate":"publint && attw --pack .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"naza-ar","email":"clementenaza@gmail.com"},"repository":{"url":"git+https://github.com/ar-agents/ar-agents.git","type":"git","directory":"packages/identity-attest"},"size-limit":[{"name":"ESM","path":"dist/index.js","limit":"30 KB","ignore":["node:crypto","crypto"]},{"name":"CJS","path":"dist/index.cjs","limit":"30 KB","ignore":["node:crypto","crypto"]}],"_npmVersion":"10.9.2","description":"Identity attestation pattern for AI agents — orchestrate verification flows (WhatsApp OTP, email magic link, Auth0, MercadoPago Identity, SID gov) and get back a signed attestation with a trust level. The RENAPER workaround that lets agents do KYC without","directories":{},"_nodeVersion":"22.15.0","dependencies":{"jose":"^6.2.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ai":"^6.0.175","zod":"^4.4.3","tsup":"^8.3.5","vitest":"^2.1.8","typescript":"^5.9.3","@types/node":"^20.19.39","@magic-sdk/admin":"^2.8.2","@ar-agents/whatsapp":"workspace:*"},"peerDependencies":{"ai":">=6.0.0","zod":">=3.0.0","@magic-sdk/admin":">=2.0.0"},"peerDependenciesMeta":{"@magic-sdk/admin":{"optional":true},"@ar-agents/whatsapp":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/identity-attest_0.3.0_1778098132950_0.2751118745487924","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@ar-agents/identity-attest","version":"0.4.0","keywords":["identity","kyc","attestation","verification","otp","magic-link","ai-sdk","vercel-ai","agent","agentic","renaper","argentina"],"author":{"name":"Nazareno Clemente","email":"naza@helloastro.co"},"license":"MIT","_id":"@ar-agents/identity-attest@0.4.0","maintainers":[{"name":"naza-ar","email":"clementenaza@gmail.com"}],"homepage":"https://github.com/ar-agents/ar-agents/tree/main/packages/identity-attest","bugs":{"url":"https://github.com/ar-agents/ar-agents/issues"},"dist":{"shasum":"fe0161edc144f6f5bb85747681c3d3523c426ae0","tarball":"https://registry.npmjs.org/@ar-agents/identity-attest/-/identity-attest-0.4.0.tgz","fileCount":26,"integrity":"sha512-R8pzw/V/h5fpyqOe+ovofqd6ReXKKT0tAzWTr5tji0MPCtWzy1bQkfYs/HQyIz2omOMJgZQpEatb+Z+PGmoyIQ==","signatures":[{"sig":"MEQCIDhS6qV2veIJp49hyxaXyu9lYpYl7jUE8hkjQFCgayiFAiBH9gbxwoJqFfWgku6CX1JtYb5lhD5nIImwVRBwrAvKCw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":454271},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./auth0":{"import":{"types":"./dist/auth0.d.ts","default":"./dist/auth0.js"},"require":{"types":"./dist/auth0.d.cts","default":"./dist/auth0.cjs"}},"./magic-link-sdk":{"import":{"types":"./dist/magic-link-sdk.d.ts","default":"./dist/magic-link-sdk.js"},"require":{"types":"./dist/magic-link-sdk.d.cts","default":"./dist/magic-link-sdk.cjs"}}},"funding":{"url":"https://github.com/sponsors/naza00000","type":"github"},"gitHead":"3ddd3498a7ec68c338e362a8592dc2c72de66f73","scripts":{"lint":"echo 'no lint configured yet'","size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","validate":"publint && attw --pack .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"naza-ar","email":"clementenaza@gmail.com"},"repository":{"url":"git+https://github.com/ar-agents/ar-agents.git","type":"git","directory":"packages/identity-attest"},"size-limit":[{"name":"ESM","path":"dist/index.js","limit":"30 KB","ignore":["node:crypto","crypto"]},{"name":"CJS","path":"dist/index.cjs","limit":"30 KB","ignore":["node:crypto","crypto"]}],"_npmVersion":"10.9.2","description":"Identity attestation pattern for AI agents — orchestrate verification flows (WhatsApp OTP, email magic link, Auth0, MercadoPago Identity, SID gov) and get back a signed attestation with a trust level. The RENAPER workaround that lets agents do KYC without","directories":{},"_nodeVersion":"22.15.0","dependencies":{"jose":"^6.2.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ai":"^6.0.175","zod":"^4.4.3","tsup":"^8.3.5","vitest":"^2.1.8","typescript":"^5.9.3","@types/node":"^20.19.39","@magic-sdk/admin":"^2.8.2","@ar-agents/whatsapp":"workspace:*"},"peerDependencies":{"ai":">=6.0.0","zod":">=3.0.0","@magic-sdk/admin":">=2.0.0"},"peerDependenciesMeta":{"@magic-sdk/admin":{"optional":true},"@ar-agents/whatsapp":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/identity-attest_0.4.0_1778101006866_0.45261339464086925","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@ar-agents/identity-attest","version":"0.4.1","keywords":["identity","kyc","attestation","verification","otp","magic-link","ai-sdk","vercel-ai","agent","agentic","renaper","argentina"],"author":{"name":"Nazareno Clemente","email":"naza@helloastro.co"},"license":"MIT","_id":"@ar-agents/identity-attest@0.4.1","maintainers":[{"name":"naza-ar","email":"clementenaza@gmail.com"}],"homepage":"https://github.com/ar-agents/ar-agents/tree/main/packages/identity-attest","bugs":{"url":"https://github.com/ar-agents/ar-agents/issues"},"dist":{"shasum":"3a397b3447684b15c7c8e0c6ad3cf21fa167a7f7","tarball":"https://registry.npmjs.org/@ar-agents/identity-attest/-/identity-attest-0.4.1.tgz","fileCount":26,"integrity":"sha512-KAr9enLoq2VQQe1roCi1mHF110l1d03gq2xquEmI9k/SVw+Zuq+bILqKyzVLl2Dh7C5LXy5VTlWJITZ+C2GUHg==","signatures":[{"sig":"MEQCICgwKtqB8wjUPOUzQMcn6cUwP50UL6Shg86cxSGMayAMAiA8zmgX9N7/QiIXnn2ArBPWvvgLgqC4R2DGZlbQjrWRrw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":454391},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./auth0":{"import":{"types":"./dist/auth0.d.ts","default":"./dist/auth0.js"},"require":{"types":"./dist/auth0.d.cts","default":"./dist/auth0.cjs"}},"./magic-link-sdk":{"import":{"types":"./dist/magic-link-sdk.d.ts","default":"./dist/magic-link-sdk.js"},"require":{"types":"./dist/magic-link-sdk.d.cts","default":"./dist/magic-link-sdk.cjs"}}},"funding":{"url":"https://github.com/sponsors/naza00000","type":"github"},"gitHead":"86a714bfc43f4ece9b0d4c12381814bf2fec4a9e","scripts":{"lint":"echo 'no lint configured yet'","size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","validate":"publint && attw --pack .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"naza-ar","email":"clementenaza@gmail.com"},"repository":{"url":"git+https://github.com/ar-agents/ar-agents.git","type":"git","directory":"packages/identity-attest"},"size-limit":[{"name":"ESM","path":"dist/index.js","limit":"30 KB","ignore":["node:crypto","crypto"]},{"name":"CJS","path":"dist/index.cjs","limit":"30 KB","ignore":["node:crypto","crypto"]}],"_npmVersion":"10.9.2","description":"Identity attestation pattern for AI agents — orchestrate verification flows (WhatsApp OTP, email magic link, Auth0, MercadoPago Identity, SID gov) and get back a signed attestation with a trust level. The RENAPER workaround that lets agents do KYC without","directories":{},"_nodeVersion":"22.15.0","dependencies":{"jose":"^6.2.3"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"auth0":["./dist/auth0.d.ts"],"magic-link-sdk":["./dist/magic-link-sdk.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"ai":"^6.0.175","zod":"^4.4.3","tsup":"^8.3.5","vitest":"^2.1.8","typescript":"^5.9.3","@types/node":"^20.19.39","@magic-sdk/admin":"^2.8.2","@ar-agents/whatsapp":"workspace:*"},"peerDependencies":{"ai":">=6.0.0","zod":">=3.0.0","@magic-sdk/admin":">=2.0.0"},"peerDependenciesMeta":{"@magic-sdk/admin":{"optional":true},"@ar-agents/whatsapp":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/identity-attest_0.4.1_1778101335557_0.42218647890195027","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@ar-agents/identity-attest","version":"0.4.2","keywords":["identity","kyc","attestation","verification","otp","magic-link","ai-sdk","vercel-ai","agent","agentic","renaper","argentina"],"author":{"name":"Nazareno Clemente","email":"naza@helloastro.co"},"license":"MIT","_id":"@ar-agents/identity-attest@0.4.2","maintainers":[{"name":"naza-ar","email":"clementenaza@gmail.com"}],"homepage":"https://github.com/ar-agents/ar-agents/tree/main/packages/identity-attest","bugs":{"url":"https://github.com/ar-agents/ar-agents/issues"},"dist":{"shasum":"f90cded126050307a0d0feed970140b7251cd816","tarball":"https://registry.npmjs.org/@ar-agents/identity-attest/-/identity-attest-0.4.2.tgz","fileCount":26,"integrity":"sha512-e9F7QHDKNzguirWvX/m9csOQhjebuEb8FoUfLpM6eegPo1mEpMSgzhBPsNkSpjYGNW7vPPZl7pnRhFOZCK38OA==","signatures":[{"sig":"MEUCIAWIQWX39/GmGKG+zPGjnafnVuDaIhLElfBkGbK5FjvcAiEAqxpc41ndYjSSTrWGe0bgCZsrj0DNvjDLso2tkyDNWGs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ar-agents%2fidentity-attest@0.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":454988},"main":"./dist/index.cjs","type":"module","_from":"file:ar-agents-identity-attest-0.4.2.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./auth0":{"import":{"types":"./dist/auth0.d.ts","default":"./dist/auth0.js"},"require":{"types":"./dist/auth0.d.cts","default":"./dist/auth0.cjs"}},"./magic-link-sdk":{"import":{"types":"./dist/magic-link-sdk.d.ts","default":"./dist/magic-link-sdk.js"},"require":{"types":"./dist/magic-link-sdk.d.cts","default":"./dist/magic-link-sdk.cjs"}}},"funding":{"url":"https://github.com/sponsors/naza00000","type":"github"},"scripts":{"lint":"echo 'no lint configured yet'","size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","validate":"publint && attw --pack .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"naza-ar","email":"clementenaza@gmail.com"},"_resolved":"/tmp/c47cf7afeaacc21f7bccdaf05dc56343/ar-agents-identity-attest-0.4.2.tgz","_integrity":"sha512-e9F7QHDKNzguirWvX/m9csOQhjebuEb8FoUfLpM6eegPo1mEpMSgzhBPsNkSpjYGNW7vPPZl7pnRhFOZCK38OA==","repository":{"url":"git+https://github.com/ar-agents/ar-agents.git","type":"git","directory":"packages/identity-attest"},"size-limit":[{"name":"ESM","path":"dist/index.js","limit":"30 KB","ignore":["node:crypto","crypto"]},{"name":"CJS","path":"dist/index.cjs","limit":"30 KB","ignore":["node:crypto","crypto"]}],"_npmVersion":"10.8.2","description":"Identity attestation pattern for AI agents — orchestrate verification flows (WhatsApp OTP, email magic link, Auth0, MercadoPago Identity, SID gov) and get back a signed attestation with a trust level. The RENAPER workaround that lets agents do KYC without","directories":{},"_nodeVersion":"20.20.2","dependencies":{"jose":"^6.2.3"},"publishConfig":{"access":"public","provenance":true},"typesVersions":{"*":{"auth0":["./dist/auth0.d.ts"],"magic-link-sdk":["./dist/magic-link-sdk.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"ai":"^6.0.175","zod":"^4.4.3","tsup":"^8.3.5","vitest":"^2.1.8","typescript":"^5.9.3","@types/node":"^20.19.39","@magic-sdk/admin":"^2.8.2","@ar-agents/whatsapp":"0.3.1"},"peerDependencies":{"ai":">=6.0.0","zod":">=3.0.0","@magic-sdk/admin":">=2.0.0"},"peerDependenciesMeta":{"@magic-sdk/admin":{"optional":true},"@ar-agents/whatsapp":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/identity-attest_0.4.2_1778174209975_0.518350329151392","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@ar-agents/identity-attest","version":"0.5.0","keywords":["identity","kyc","attestation","verification","otp","magic-link","ai-sdk","vercel-ai","agent","agentic","renaper","argentina"],"author":{"name":"Nazareno Clemente","email":"naza@helloastro.co"},"license":"MIT","_id":"@ar-agents/identity-attest@0.5.0","maintainers":[{"name":"naza-ar","email":"clementenaza@gmail.com"}],"homepage":"https://github.com/ar-agents/ar-agents/tree/main/packages/identity-attest","bugs":{"url":"https://github.com/ar-agents/ar-agents/issues"},"dist":{"shasum":"320d165ae5c8c25bbb77ec24f0e75d1f61dc8efa","tarball":"https://registry.npmjs.org/@ar-agents/identity-attest/-/identity-attest-0.5.0.tgz","fileCount":26,"integrity":"sha512-2bM/hXkPFnMO8/mvaSXP2b6aCjAEkRMPNBdTZtKdzqvfnMdQQGiThUsc+0EK1EvVJ8UPOGlZ6kvJe7klba+itg==","signatures":[{"sig":"MEUCIQCATnxA9VhHr1QOg8ME34DwpyZm73hXZCjdBDV/8PRdDgIgD/QhAby0aNYhIY/S0cOcyCIFN5blHmkfUa0Sp6T/94Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ar-agents%2fidentity-attest@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":458044},"main":"./dist/index.cjs","type":"module","_from":"file:ar-agents-identity-attest-0.5.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./auth0":{"import":{"types":"./dist/auth0.d.ts","default":"./dist/auth0.js"},"require":{"types":"./dist/auth0.d.cts","default":"./dist/auth0.cjs"}},"./magic-link-sdk":{"import":{"types":"./dist/magic-link-sdk.d.ts","default":"./dist/magic-link-sdk.js"},"require":{"types":"./dist/magic-link-sdk.d.cts","default":"./dist/magic-link-sdk.cjs"}},"./tools.manifest.json":"./tools.manifest.json"},"funding":{"url":"https://github.com/sponsors/naza00000","type":"github"},"scripts":{"lint":"echo 'no lint configured yet'","size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","validate":"publint && attw --pack .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"naza-ar","email":"clementenaza@gmail.com"},"_resolved":"/tmp/869110b508d7bcd62e99de8b70d8e00d/ar-agents-identity-attest-0.5.0.tgz","_integrity":"sha512-2bM/hXkPFnMO8/mvaSXP2b6aCjAEkRMPNBdTZtKdzqvfnMdQQGiThUsc+0EK1EvVJ8UPOGlZ6kvJe7klba+itg==","repository":{"url":"git+https://github.com/ar-agents/ar-agents.git","type":"git","directory":"packages/identity-attest"},"size-limit":[{"name":"ESM","path":"dist/index.js","limit":"30 KB","ignore":["node:crypto","crypto"]},{"name":"CJS","path":"dist/index.cjs","limit":"30 KB","ignore":["node:crypto","crypto"]}],"_npmVersion":"10.8.2","description":"Identity attestation pattern for AI agents — orchestrate verification flows (WhatsApp OTP, email magic link, Auth0, MercadoPago Identity, SID gov) and get back a signed attestation with a trust level. The RENAPER workaround that lets agents do KYC without","directories":{},"_nodeVersion":"20.20.2","dependencies":{"jose":"^6.2.3","@ar-agents/core":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"typesVersions":{"*":{"auth0":["./dist/auth0.d.ts"],"magic-link-sdk":["./dist/magic-link-sdk.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"ai":"^6.0.175","zod":"^4.4.3","tsup":"^8.3.5","vitest":"^2.1.8","typescript":"^5.9.3","@types/node":"^20.19.39","@magic-sdk/admin":"^2.8.2","@ar-agents/whatsapp":"0.5.0"},"peerDependencies":{"ai":">=6.0.0","zod":">=3.0.0","@magic-sdk/admin":">=2.0.0"},"peerDependenciesMeta":{"@magic-sdk/admin":{"optional":true},"@ar-agents/whatsapp":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/identity-attest_0.5.0_1779728037402_0.5315688524755373","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@ar-agents/identity-attest","version":"0.5.1","keywords":["identity","kyc","attestation","verification","otp","magic-link","ai-sdk","vercel-ai","agent","agentic","renaper","argentina"],"author":{"name":"Nazareno Clemente","email":"naza@helloastro.co"},"license":"MIT","_id":"@ar-agents/identity-attest@0.5.1","maintainers":[{"name":"naza-ar","email":"clementenaza@gmail.com"}],"homepage":"https://github.com/ar-agents/ar-agents/tree/main/packages/identity-attest","bugs":{"url":"https://github.com/ar-agents/ar-agents/issues"},"dist":{"shasum":"64ebb458b36151c9185398ffce1e33faa4aad18e","tarball":"https://registry.npmjs.org/@ar-agents/identity-attest/-/identity-attest-0.5.1.tgz","fileCount":26,"integrity":"sha512-4288UMYQkAP1xHEUr6Erwt9Nc3ymFGlXEUXHMTv/6XSyWXnm4tbzqYGZFz2cDIxvUhNg2o1+49AnR/ufjxzyCw==","signatures":[{"sig":"MEYCIQDcVR6/evpSWHX4bbF7+aK0vea3AQ82i09IDM7GWkjlbAIhAIE8werCk3lz9AZqzvaBe4uQ/u5+prSx3Vuit3LHsUaS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ar-agents%2fidentity-attest@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":458283},"main":"./dist/index.cjs","type":"module","_from":"file:ar-agents-identity-attest-0.5.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./auth0":{"import":{"types":"./dist/auth0.d.ts","default":"./dist/auth0.js"},"require":{"types":"./dist/auth0.d.cts","default":"./dist/auth0.cjs"}},"./magic-link-sdk":{"import":{"types":"./dist/magic-link-sdk.d.ts","default":"./dist/magic-link-sdk.js"},"require":{"types":"./dist/magic-link-sdk.d.cts","default":"./dist/magic-link-sdk.cjs"}},"./tools.manifest.json":"./tools.manifest.json"},"funding":{"url":"https://github.com/sponsors/naza00000","type":"github"},"scripts":{"lint":"echo 'no lint configured yet'","size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","validate":"publint && attw --pack .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"naza-ar","email":"clementenaza@gmail.com"},"_resolved":"/tmp/381de9cd93ef5fe5baa64918e0705109/ar-agents-identity-attest-0.5.1.tgz","_integrity":"sha512-4288UMYQkAP1xHEUr6Erwt9Nc3ymFGlXEUXHMTv/6XSyWXnm4tbzqYGZFz2cDIxvUhNg2o1+49AnR/ufjxzyCw==","repository":{"url":"git+https://github.com/ar-agents/ar-agents.git","type":"git","directory":"packages/identity-attest"},"size-limit":[{"name":"ESM","path":"dist/index.js","limit":"30 KB","ignore":["node:crypto","crypto"]},{"name":"CJS","path":"dist/index.cjs","limit":"30 KB","ignore":["node:crypto","crypto"]}],"_npmVersion":"10.8.2","description":"Identity attestation pattern for AI agents: orchestrate verification flows (WhatsApp OTP, email magic link, Auth0, MercadoPago Identity, SID gov) and get back a signed attestation with a trust level. The RENAPER workaround that lets agents do KYC without ","directories":{},"_nodeVersion":"20.20.2","dependencies":{"jose":"^6.2.3","@ar-agents/core":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"typesVersions":{"*":{"auth0":["./dist/auth0.d.ts"],"magic-link-sdk":["./dist/magic-link-sdk.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"ai":"^6.0.175","zod":"^4.4.3","tsup":"^8.3.5","vitest":"^2.1.8","typescript":"^5.9.3","@types/node":"^20.19.39","@magic-sdk/admin":"^2.8.2","@ar-agents/whatsapp":"0.5.0"},"peerDependencies":{"ai":">=6.0.0","zod":">=3.0.0","@magic-sdk/admin":">=2.0.0"},"peerDependenciesMeta":{"@magic-sdk/admin":{"optional":true},"@ar-agents/whatsapp":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/identity-attest_0.5.1_1781269121716_0.5416104648247126","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@ar-agents/identity-attest","version":"0.5.2","keywords":["identity","kyc","attestation","verification","otp","magic-link","ai-sdk","vercel-ai","agent","agentic","renaper","argentina"],"author":{"name":"Nazareno Clemente","email":"naza@helloastro.co"},"license":"MIT","_id":"@ar-agents/identity-attest@0.5.2","maintainers":[{"name":"naza-ar","email":"clementenaza@gmail.com"}],"homepage":"https://github.com/ar-agents/ar-agents/tree/main/packages/identity-attest","bugs":{"url":"https://github.com/ar-agents/ar-agents/issues"},"dist":{"shasum":"7f66001f30a44cdc6f9c44c2d91cd36f810639cb","tarball":"https://registry.npmjs.org/@ar-agents/identity-attest/-/identity-attest-0.5.2.tgz","fileCount":26,"integrity":"sha512-RsWLx8KveTVdALQvf78C7b6vGh6H0FSzbVP3VO5OapYV+msjIpvnffr/VNJncPbFwK2ztG7XsJ1hrNVIAwXutg==","signatures":[{"sig":"MEYCIQC1IZ9t5IgZNUW35F6kAfzGbFZw6HLVzq6VnoFf7Yb3vAIhANC3Y63SfOvcb7SQxxeoFhJrdTVu9n19wuO/OQSbzkIO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ar-agents%2fidentity-attest@0.5.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":459314},"main":"./dist/index.cjs","type":"module","_from":"file:ar-agents-identity-attest-0.5.2.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./auth0":{"import":{"types":"./dist/auth0.d.ts","default":"./dist/auth0.js"},"require":{"types":"./dist/auth0.d.cts","default":"./dist/auth0.cjs"}},"./magic-link-sdk":{"import":{"types":"./dist/magic-link-sdk.d.ts","default":"./dist/magic-link-sdk.js"},"require":{"types":"./dist/magic-link-sdk.d.cts","default":"./dist/magic-link-sdk.cjs"}},"./tools.manifest.json":"./tools.manifest.json"},"funding":{"url":"https://github.com/sponsors/naza00000","type":"github"},"scripts":{"lint":"echo 'no lint configured yet'","size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","validate":"publint && attw --pack .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"naza-ar","email":"clementenaza@gmail.com"},"_resolved":"/tmp/0d5da898a20b84b14a677191deaf25d4/ar-agents-identity-attest-0.5.2.tgz","_integrity":"sha512-RsWLx8KveTVdALQvf78C7b6vGh6H0FSzbVP3VO5OapYV+msjIpvnffr/VNJncPbFwK2ztG7XsJ1hrNVIAwXutg==","repository":{"url":"git+https://github.com/ar-agents/ar-agents.git","type":"git","directory":"packages/identity-attest"},"size-limit":[{"name":"ESM","path":"dist/index.js","limit":"30 KB","ignore":["node:crypto","crypto"]},{"name":"CJS","path":"dist/index.cjs","limit":"30 KB","ignore":["node:crypto","crypto"]}],"_npmVersion":"10.8.2","description":"Identity attestation pattern for AI agents: orchestrate verification flows (WhatsApp OTP, email magic link, Auth0, MercadoPago Identity, SID gov) and get back a signed attestation with a trust level. The RENAPER workaround that lets agents do KYC without ","directories":{},"_nodeVersion":"20.20.2","dependencies":{"jose":"^6.2.3","@ar-agents/core":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"typesVersions":{"*":{"auth0":["./dist/auth0.d.ts"],"magic-link-sdk":["./dist/magic-link-sdk.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"ai":"^6.0.175","zod":"^4.4.3","tsup":"^8.3.5","vitest":"^2.1.8","typescript":"^5.9.3","@types/node":"^20.19.39","@magic-sdk/admin":"^2.8.2","@ar-agents/whatsapp":"0.5.1"},"peerDependencies":{"ai":">=6.0.0","zod":">=3.0.0","@magic-sdk/admin":">=2.0.0"},"peerDependenciesMeta":{"@magic-sdk/admin":{"optional":true},"@ar-agents/whatsapp":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/identity-attest_0.5.2_1781280168631_0.6171993371828719","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@ar-agents/identity-attest","version":"0.6.0","keywords":["identity","kyc","attestation","verification","otp","magic-link","ai-sdk","vercel-ai","agent","agentic","renaper","argentina"],"author":{"name":"Nazareno Clemente","email":"naza@helloastro.co"},"license":"MIT","_id":"@ar-agents/identity-attest@0.6.0","maintainers":[{"name":"naza-ar","email":"clementenaza@gmail.com"}],"homepage":"https://github.com/ar-agents/ar-agents/tree/main/packages/identity-attest","bugs":{"url":"https://github.com/ar-agents/ar-agents/issues"},"dist":{"shasum":"2d34d9f09277dbdb28d53674c260f3094723be16","tarball":"https://registry.npmjs.org/@ar-agents/identity-attest/-/identity-attest-0.6.0.tgz","fileCount":26,"integrity":"sha512-iJ5NqUHQ+WWHyaTupFH+LFFk+0t3H59+pUse9U5X6RjhnRQP3vRwAPHOfDMbA6Wa/IxdPBYWZIdE6rQ5Qr9KYw==","signatures":[{"sig":"MEUCIAaRNIwCI5EP0hDo7YNBIzvuSESz3F3lpc7xyKiiumQTAiEA/7EVSiJEpHJBSCtkH7D4iacGn6QvlPNKUIs4jwEGUdg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ar-agents%2fidentity-attest@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":484551},"main":"./dist/index.cjs","type":"module","_from":"file:ar-agents-identity-attest-0.6.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./auth0":{"import":{"types":"./dist/auth0.d.ts","default":"./dist/auth0.js"},"require":{"types":"./dist/auth0.d.cts","default":"./dist/auth0.cjs"}},"./magic-link-sdk":{"import":{"types":"./dist/magic-link-sdk.d.ts","default":"./dist/magic-link-sdk.js"},"require":{"types":"./dist/magic-link-sdk.d.cts","default":"./dist/magic-link-sdk.cjs"}},"./tools.manifest.json":"./tools.manifest.json"},"funding":{"url":"https://github.com/sponsors/naza00000","type":"github"},"scripts":{"lint":"echo 'no lint configured yet'","size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","validate":"publint && attw --pack .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"naza-ar","email":"clementenaza@gmail.com"},"_resolved":"/tmp/586a7f30340d1b6bee9a83fff1215a9e/ar-agents-identity-attest-0.6.0.tgz","_integrity":"sha512-iJ5NqUHQ+WWHyaTupFH+LFFk+0t3H59+pUse9U5X6RjhnRQP3vRwAPHOfDMbA6Wa/IxdPBYWZIdE6rQ5Qr9KYw==","repository":{"url":"git+https://github.com/ar-agents/ar-agents.git","type":"git","directory":"packages/identity-attest"},"size-limit":[{"name":"ESM","path":"dist/index.js","limit":"30 KB","ignore":["node:crypto","crypto"]},{"name":"CJS","path":"dist/index.cjs","limit":"30 KB","ignore":["node:crypto","crypto"]}],"_npmVersion":"10.9.8","description":"Identity attestation pattern for AI agents: orchestrate verification flows (WhatsApp OTP, email magic link, Auth0, MercadoPago Identity, SID gov) and get back a signed attestation with a trust level. The RENAPER workaround that lets agents do KYC without ","directories":{},"_nodeVersion":"22.23.0","dependencies":{"jose":"^6.2.3","@ar-agents/core":"^0.2.1"},"publishConfig":{"access":"public","provenance":true},"typesVersions":{"*":{"auth0":["./dist/auth0.d.ts"],"magic-link-sdk":["./dist/magic-link-sdk.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"ai":"^7.0.0","zod":"^4.4.3","tsup":"^8.3.5","vitest":"^2.1.8","typescript":"^5.9.3","@types/node":"^20.19.39","@magic-sdk/admin":"^2.8.2","@ar-agents/whatsapp":"0.5.1"},"peerDependencies":{"ai":">=6.0.0","zod":">=3.0.0","@magic-sdk/admin":">=2.0.0"},"peerDependenciesMeta":{"@magic-sdk/admin":{"optional":true},"@ar-agents/whatsapp":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/identity-attest_0.6.0_1782411842454_0.9729022705764223","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@ar-agents/identity-attest","version":"0.7.0","keywords":["identity","kyc","attestation","verification","otp","magic-link","ai-sdk","vercel-ai","agent","agentic","renaper","argentina"],"author":{"name":"Nazareno Clemente","email":"naza@helloastro.co"},"license":"MIT","_id":"@ar-agents/identity-attest@0.7.0","maintainers":[{"name":"naza-ar","email":"clementenaza@gmail.com"}],"homepage":"https://github.com/ar-agents/ar-agents/tree/main/packages/identity-attest","bugs":{"url":"https://github.com/ar-agents/ar-agents/issues"},"dist":{"shasum":"e1fcfbc4d539dedd10451c0cbe734f2e724ba7b5","tarball":"https://registry.npmjs.org/@ar-agents/identity-attest/-/identity-attest-0.7.0.tgz","fileCount":26,"integrity":"sha512-S1wgxEgjeDU66TGV2hQF0lDtbeT7ldLDLmn4PKjX45ZMrs3mcK0ah3mt9G0lMf9er/B5/Fvey/7sIXIr5KklfQ==","signatures":[{"sig":"MEYCIQDUsj+D04ZOiLh0qtuyhSXAB2VCEcsCMR0aKrVKVV/3YgIhAN/N6oa58ZvUPrchkGs2S3iilwY0SGbmkI/eVvKAxUy8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ar-agents%2fidentity-attest@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":518039},"main":"./dist/index.cjs","type":"module","_from":"file:ar-agents-identity-attest-0.7.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./auth0":{"import":{"types":"./dist/auth0.d.ts","default":"./dist/auth0.js"},"require":{"types":"./dist/auth0.d.cts","default":"./dist/auth0.cjs"}},"./magic-link-sdk":{"import":{"types":"./dist/magic-link-sdk.d.ts","default":"./dist/magic-link-sdk.js"},"require":{"types":"./dist/magic-link-sdk.d.cts","default":"./dist/magic-link-sdk.cjs"}},"./tools.manifest.json":"./tools.manifest.json"},"funding":{"url":"https://github.com/sponsors/naza00000","type":"github"},"scripts":{"lint":"echo 'no lint configured yet'","size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","validate":"publint && attw --pack .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"naza-ar","email":"clementenaza@gmail.com"},"_resolved":"/tmp/53019a40671c2f69261995a1cecacdb6/ar-agents-identity-attest-0.7.0.tgz","_integrity":"sha512-S1wgxEgjeDU66TGV2hQF0lDtbeT7ldLDLmn4PKjX45ZMrs3mcK0ah3mt9G0lMf9er/B5/Fvey/7sIXIr5KklfQ==","repository":{"url":"git+https://github.com/ar-agents/ar-agents.git","type":"git","directory":"packages/identity-attest"},"size-limit":[{"name":"ESM","path":"dist/index.js","limit":"30 KB","ignore":["node:crypto","crypto"]},{"name":"CJS","path":"dist/index.cjs","limit":"30 KB","ignore":["node:crypto","crypto"]}],"_npmVersion":"10.9.8","description":"Identity attestation pattern for AI agents: orchestrate verification flows (WhatsApp OTP, email magic link, Auth0, MercadoPago Identity, SID gov) and get back a signed attestation with a trust level. The RENAPER workaround that lets agents do KYC without ","directories":{},"_nodeVersion":"22.23.0","dependencies":{"jose":"^6.2.3","@ar-agents/core":"^0.2.1"},"publishConfig":{"access":"public","provenance":true},"typesVersions":{"*":{"auth0":["./dist/auth0.d.ts"],"magic-link-sdk":["./dist/magic-link-sdk.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"ai":"^7.0.0","zod":"^4.4.3","tsup":"^8.3.5","vitest":"^2.1.8","typescript":"^5.9.3","@types/node":"^20.19.39","@magic-sdk/admin":"^2.8.2","@ar-agents/whatsapp":"0.5.1"},"peerDependencies":{"ai":">=6.0.0","zod":">=3.0.0","@magic-sdk/admin":">=2.0.0"},"peerDependenciesMeta":{"@magic-sdk/admin":{"optional":true},"@ar-agents/whatsapp":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/identity-attest_0.7.0_1782416724251_0.7377418544267178","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@ar-agents/identity-attest","version":"0.8.0","keywords":["identity","kyc","attestation","verification","otp","magic-link","ai-sdk","vercel-ai","agent","agentic","renaper","argentina"],"author":{"name":"Nazareno Clemente","email":"naza@helloastro.co"},"license":"MIT","_id":"@ar-agents/identity-attest@0.8.0","maintainers":[{"name":"naza-ar","email":"clementenaza@gmail.com"}],"homepage":"https://github.com/ar-agents/ar-agents/tree/main/packages/identity-attest","bugs":{"url":"https://github.com/ar-agents/ar-agents/issues"},"dist":{"shasum":"947592c236198cef0b3a910921c3d8b38bcd6f79","tarball":"https://registry.npmjs.org/@ar-agents/identity-attest/-/identity-attest-0.8.0.tgz","fileCount":26,"integrity":"sha512-ishEoG+RAU87s/HRAJN76ii/wtut5Silqpp+KUw/aNvxrf4P7vxAEmtaLABDk03oX+j8pFrCNI4QQsy+mnYKtQ==","signatures":[{"sig":"MEQCIBleX3MNLqUkmGGlhqb5hCtuOxV+3DAkAOJEo7kQ4hKjAiBWToJ12WCGUvIsmUisDHJyQJ+SzHCn2rfd0WvfwQdmRw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ar-agents%2fidentity-attest@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":560057},"main":"./dist/index.cjs","type":"module","_from":"file:ar-agents-identity-attest-0.8.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./auth0":{"import":{"types":"./dist/auth0.d.ts","default":"./dist/auth0.js"},"require":{"types":"./dist/auth0.d.cts","default":"./dist/auth0.cjs"}},"./magic-link-sdk":{"import":{"types":"./dist/magic-link-sdk.d.ts","default":"./dist/magic-link-sdk.js"},"require":{"types":"./dist/magic-link-sdk.d.cts","default":"./dist/magic-link-sdk.cjs"}},"./tools.manifest.json":"./tools.manifest.json"},"funding":{"url":"https://github.com/sponsors/naza00000","type":"github"},"scripts":{"lint":"echo 'no lint configured yet'","size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","validate":"publint && attw --pack .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"naza-ar","email":"clementenaza@gmail.com"},"_resolved":"/tmp/a8ab56f99941a2ddd94c922dfdb090b0/ar-agents-identity-attest-0.8.0.tgz","_integrity":"sha512-ishEoG+RAU87s/HRAJN76ii/wtut5Silqpp+KUw/aNvxrf4P7vxAEmtaLABDk03oX+j8pFrCNI4QQsy+mnYKtQ==","repository":{"url":"git+https://github.com/ar-agents/ar-agents.git","type":"git","directory":"packages/identity-attest"},"size-limit":[{"name":"ESM","path":"dist/index.js","limit":"30 KB","ignore":["node:crypto","crypto"]},{"name":"CJS","path":"dist/index.cjs","limit":"30 KB","ignore":["node:crypto","crypto"]}],"_npmVersion":"10.9.8","description":"Identity attestation pattern for AI agents: orchestrate verification flows (WhatsApp OTP, email magic link, Auth0, MercadoPago Identity, SID gov) and get back a signed attestation with a trust level. The RENAPER workaround that lets agents do KYC without ","directories":{},"_nodeVersion":"22.23.0","dependencies":{"jose":"^6.2.3","@ar-agents/core":"^0.2.1"},"publishConfig":{"access":"public","provenance":true},"typesVersions":{"*":{"auth0":["./dist/auth0.d.ts"],"magic-link-sdk":["./dist/magic-link-sdk.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"ai":"^7.0.0","zod":"^4.4.3","tsup":"^8.3.5","vitest":"^2.1.8","typescript":"^5.9.3","@types/node":"^20.19.39","@magic-sdk/admin":"^2.8.2","@ar-agents/whatsapp":"0.5.1"},"peerDependencies":{"ai":">=6.0.0","zod":">=3.0.0","@magic-sdk/admin":">=2.0.0"},"peerDependenciesMeta":{"@magic-sdk/admin":{"optional":true},"@ar-agents/whatsapp":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/identity-attest_0.8.0_1782419515793_0.31727059025331816","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"@ar-agents/identity-attest","version":"0.8.1","keywords":["identity","kyc","attestation","verification","otp","magic-link","ai-sdk","vercel-ai","agent","agentic","renaper","argentina"],"author":{"name":"Nazareno Clemente","email":"naza@helloastro.co"},"license":"MIT","_id":"@ar-agents/identity-attest@0.8.1","maintainers":[{"name":"naza-ar","email":"clementenaza@gmail.com"}],"homepage":"https://github.com/ar-agents/ar-agents/tree/main/packages/identity-attest","bugs":{"url":"https://github.com/ar-agents/ar-agents/issues"},"dist":{"shasum":"56cca80544e9bfbe13b24ec96140ca5e0bab11d1","tarball":"https://registry.npmjs.org/@ar-agents/identity-attest/-/identity-attest-0.8.1.tgz","fileCount":26,"integrity":"sha512-botvFvR6bJ39WCE1r6tixLe+QU8QQPtJaZ3JfJ9UY8TWSbfiA1VuF2UxVRp5e1dohmxJg8Wpfph39ms7d9RQvg==","signatures":[{"sig":"MEQCIG7ldOAZEFM2D6Ni2vX96Qqq4RSSs2gilHpjz/kgAzJEAiAZd39LqzvXawe5qk1T3acQyohfQpw/+VyreBcR6jEoIQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ar-agents%2fidentity-attest@0.8.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":560441},"main":"./dist/index.cjs","type":"module","_from":"file:ar-agents-identity-attest-0.8.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./auth0":{"import":{"types":"./dist/auth0.d.ts","default":"./dist/auth0.js"},"require":{"types":"./dist/auth0.d.cts","default":"./dist/auth0.cjs"}},"./magic-link-sdk":{"import":{"types":"./dist/magic-link-sdk.d.ts","default":"./dist/magic-link-sdk.js"},"require":{"types":"./dist/magic-link-sdk.d.cts","default":"./dist/magic-link-sdk.cjs"}},"./tools.manifest.json":"./tools.manifest.json"},"funding":{"url":"https://github.com/sponsors/naza00000","type":"github"},"scripts":{"lint":"echo 'no lint configured yet'","size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","validate":"publint && attw --pack .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"naza-ar","email":"clementenaza@gmail.com"},"_resolved":"/tmp/a08236a0fb282ac0814966fe0236fe16/ar-agents-identity-attest-0.8.1.tgz","_integrity":"sha512-botvFvR6bJ39WCE1r6tixLe+QU8QQPtJaZ3JfJ9UY8TWSbfiA1VuF2UxVRp5e1dohmxJg8Wpfph39ms7d9RQvg==","repository":{"url":"git+https://github.com/ar-agents/ar-agents.git","type":"git","directory":"packages/identity-attest"},"size-limit":[{"name":"ESM","path":"dist/index.js","limit":"30 KB","ignore":["node:crypto","crypto"]},{"name":"CJS","path":"dist/index.cjs","limit":"30 KB","ignore":["node:crypto","crypto"]}],"_npmVersion":"10.9.8","description":"Identity attestation pattern for AI agents: orchestrate verification flows (WhatsApp OTP, email magic link, Auth0, MercadoPago Identity, SID gov) and get back a signed attestation with a trust level. The RENAPER workaround that lets agents do KYC without ","directories":{},"_nodeVersion":"22.23.0","dependencies":{"jose":"^6.2.3","@ar-agents/core":"^0.3.0"},"publishConfig":{"access":"public","provenance":true},"typesVersions":{"*":{"auth0":["./dist/auth0.d.ts"],"magic-link-sdk":["./dist/magic-link-sdk.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"ai":"^7.0.0","zod":"^4.4.3","tsup":"^8.3.5","vitest":"^2.1.8","typescript":"^5.9.3","@types/node":"^20.19.39","@magic-sdk/admin":"^2.8.2","@ar-agents/whatsapp":"0.5.2"},"peerDependencies":{"ai":">=6.0.0","zod":">=3.0.0","@magic-sdk/admin":">=2.0.0"},"peerDependenciesMeta":{"@magic-sdk/admin":{"optional":true},"@ar-agents/whatsapp":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/identity-attest_0.8.1_1782899911083_0.9653751320122073","host":"s3://npm-registry-packages-npm-production"}},"0.8.2":{"name":"@ar-agents/identity-attest","version":"0.8.2","keywords":["identity","kyc","attestation","verification","otp","magic-link","ai-sdk","vercel-ai","agent","agentic","renaper","argentina"],"author":{"name":"Nazareno Clemente","email":"naza@naza.ar"},"license":"MIT","_id":"@ar-agents/identity-attest@0.8.2","maintainers":[{"name":"naza-ar","email":"clementenaza@gmail.com"}],"homepage":"https://github.com/ar-agents/ar-agents/tree/main/packages/identity-attest","bugs":{"url":"https://github.com/ar-agents/ar-agents/issues"},"dist":{"shasum":"1ef56a6bfceb63c31e4fea3d786d7efd3d0ec48c","tarball":"https://registry.npmjs.org/@ar-agents/identity-attest/-/identity-attest-0.8.2.tgz","fileCount":26,"integrity":"sha512-ocqANG9Rl57cLdP/iN0Fefj+RjXtgO0AE4vaT/7sDakOPrkVlflkppTjdJ3mD2rUBasi9sU18e8Ey97l7hq44Q==","signatures":[{"sig":"MEQCIHkyErEfY+2hCPVLDGNXqlIgtYGYJr7u2aJUCqjwYDC/AiBRnFU12rmyEdBfc9pVcquImAhMlwYYiUc5h3Ta9VUUkQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ar-agents%2fidentity-attest@0.8.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":563752},"main":"./dist/index.cjs","type":"module","_from":"file:ar-agents-identity-attest-0.8.2.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./auth0":{"import":{"types":"./dist/auth0.d.ts","default":"./dist/auth0.js"},"require":{"types":"./dist/auth0.d.cts","default":"./dist/auth0.cjs"}},"./magic-link-sdk":{"import":{"types":"./dist/magic-link-sdk.d.ts","default":"./dist/magic-link-sdk.js"},"require":{"types":"./dist/magic-link-sdk.d.cts","default":"./dist/magic-link-sdk.cjs"}},"./tools.manifest.json":"./tools.manifest.json"},"funding":{"url":"https://github.com/sponsors/naza00000","type":"github"},"scripts":{"lint":"echo 'no lint configured yet'","size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","validate":"publint && attw --pack .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"naza-ar","email":"clementenaza@gmail.com"},"_resolved":"/tmp/bb54e0d5a42ed0c612d156ee21619d4a/ar-agents-identity-attest-0.8.2.tgz","_integrity":"sha512-ocqANG9Rl57cLdP/iN0Fefj+RjXtgO0AE4vaT/7sDakOPrkVlflkppTjdJ3mD2rUBasi9sU18e8Ey97l7hq44Q==","repository":{"url":"git+https://github.com/ar-agents/ar-agents.git","type":"git","directory":"packages/identity-attest"},"size-limit":[{"name":"ESM","path":"dist/index.js","limit":"30 KB","ignore":["node:crypto","crypto"]},{"name":"CJS","path":"dist/index.cjs","limit":"30 KB","ignore":["node:crypto","crypto"]}],"_npmVersion":"10.9.8","description":"Identity attestation pattern for AI agents: orchestrate verification flows (WhatsApp OTP, email magic link, Auth0, MercadoPago Identity, SID gov) and get back a signed attestation with a trust level. The RENAPER workaround that lets agents do KYC without ","directories":{},"_nodeVersion":"22.23.1","dependencies":{"jose":"^6.2.3","@ar-agents/core":"^0.3.1"},"publishConfig":{"access":"public","provenance":true},"typesVersions":{"*":{"auth0":["./dist/auth0.d.ts"],"magic-link-sdk":["./dist/magic-link-sdk.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"ai":"^7.0.0","zod":"^4.4.3","tsup":"^8.3.5","vitest":"^2.1.8","typescript":"^5.9.3","@types/node":"^20.19.39","@magic-sdk/admin":"^2.8.2","@ar-agents/whatsapp":"0.6.0"},"peerDependencies":{"ai":">=6.0.0","zod":">=3.0.0","@magic-sdk/admin":">=2.0.0"},"peerDependenciesMeta":{"@magic-sdk/admin":{"optional":true},"@ar-agents/whatsapp":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/identity-attest_0.8.2_1783069167123_0.09982265303675408","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@ar-agents/identity-attest","version":"0.9.0","description":"Identity attestation pattern for AI agents: orchestrate verification flows (WhatsApp OTP, email magic link, Auth0, MercadoPago Identity, SID gov) and get back a signed attestation with a trust level. The RENAPER workaround that lets agents do KYC without ","keywords":["identity","kyc","attestation","verification","otp","magic-link","ai-sdk","vercel-ai","agent","agentic","renaper","argentina"],"license":"MIT","author":{"name":"Nazareno Clemente","email":"naza@naza.ar"},"funding":{"type":"github","url":"https://github.com/sponsors/naza00000"},"homepage":"https://github.com/ar-agents/ar-agents/tree/main/packages/identity-attest","repository":{"type":"git","url":"git+https://github.com/ar-agents/ar-agents.git","directory":"packages/identity-attest"},"bugs":{"url":"https://github.com/ar-agents/ar-agents/issues"},"type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./auth0":{"import":{"types":"./dist/auth0.d.ts","default":"./dist/auth0.js"},"require":{"types":"./dist/auth0.d.cts","default":"./dist/auth0.cjs"}},"./magic-link-sdk":{"import":{"types":"./dist/magic-link-sdk.d.ts","default":"./dist/magic-link-sdk.js"},"require":{"types":"./dist/magic-link-sdk.d.cts","default":"./dist/magic-link-sdk.cjs"}},"./tools.manifest.json":"./tools.manifest.json"},"typesVersions":{"*":{"auth0":["./dist/auth0.d.ts"],"magic-link-sdk":["./dist/magic-link-sdk.d.ts"]}},"size-limit":[{"name":"ESM","path":"dist/index.js","limit":"30 KB","ignore":["node:crypto","crypto"]},{"name":"CJS","path":"dist/index.cjs","limit":"34 KB","ignore":["node:crypto","crypto"]}],"peerDependencies":{"ai":">=6.0.0","zod":">=3.0.0","@magic-sdk/admin":">=2.0.0"},"peerDependenciesMeta":{"@ar-agents/whatsapp":{"optional":true},"@magic-sdk/admin":{"optional":true}},"devDependencies":{"@magic-sdk/admin":"^2.8.2","@types/node":"^20.19.39","ai":"^7.0.0","tsup":"^8.3.5","typescript":"^5.9.3","vitest":"^2.1.8","zod":"^4.4.3","@ar-agents/whatsapp":"0.6.1"},"publishConfig":{"access":"public","provenance":true},"engines":{"node":">=20.0.0"},"dependencies":{"jose":"^6.2.3","@ar-agents/core":"^0.4.0"},"scripts":{"build":"tsup","test":"vitest run","test:watch":"vitest","test:coverage":"vitest run --coverage","typecheck":"tsc --noEmit","lint":"echo 'no lint configured yet'","validate":"publint && attw --pack .","size":"size-limit","clean":"rm -rf dist"},"_id":"@ar-agents/identity-attest@0.9.0","_integrity":"sha512-3AoFYlc9m5b1HEmJH/A4+4C65zmAW3EEeDNvmB+i5GzcqUhAOLVW8oVQubu8hYyD+9uvL15e3EqtoDS+5tkWvA==","_resolved":"/tmp/1512783e79c06bbfc453c73871db6663/ar-agents-identity-attest-0.9.0.tgz","_from":"file:ar-agents-identity-attest-0.9.0.tgz","_nodeVersion":"22.23.1","_npmVersion":"10.9.8","dist":{"integrity":"sha512-3AoFYlc9m5b1HEmJH/A4+4C65zmAW3EEeDNvmB+i5GzcqUhAOLVW8oVQubu8hYyD+9uvL15e3EqtoDS+5tkWvA==","shasum":"18e4906658e788ee4bc1936aea00b2473c69ce21","tarball":"https://registry.npmjs.org/@ar-agents/identity-attest/-/identity-attest-0.9.0.tgz","fileCount":26,"unpackedSize":572025,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ar-agents%2fidentity-attest@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICshNwGIGfLuNt8AJivYzBvrNcENfxtq7oFqre7ks60zAiATQCuR8yYnV27KV8droHBWggqC1UbooFdBWWzCaFNRiA=="}]},"_npmUser":{"name":"naza-ar","email":"clementenaza@gmail.com"},"directories":{},"maintainers":[{"name":"naza-ar","email":"clementenaza@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/identity-attest_0.9.0_1783077265308_0.20173498290441527"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-05T19:27:39.227Z","modified":"2026-07-03T11:14:25.949Z","0.1.0":"2026-05-05T19:27:39.552Z","0.2.0":"2026-05-05T20:33:05.847Z","0.3.0":"2026-05-06T20:08:53.090Z","0.4.0":"2026-05-06T20:56:47.022Z","0.4.1":"2026-05-06T21:02:15.927Z","0.4.2":"2026-05-07T17:16:50.152Z","0.5.0":"2026-05-25T16:53:57.562Z","0.5.1":"2026-06-12T12:58:41.886Z","0.5.2":"2026-06-12T16:02:48.812Z","0.6.0":"2026-06-25T18:24:02.676Z","0.7.0":"2026-06-25T19:45:24.450Z","0.8.0":"2026-06-25T20:31:55.971Z","0.8.1":"2026-07-01T09:58:31.269Z","0.8.2":"2026-07-03T08:59:27.273Z","0.9.0":"2026-07-03T11:14:25.470Z"},"bugs":{"url":"https://github.com/ar-agents/ar-agents/issues"},"author":{"name":"Nazareno Clemente","email":"naza@naza.ar"},"license":"MIT","homepage":"https://github.com/ar-agents/ar-agents/tree/main/packages/identity-attest","keywords":["identity","kyc","attestation","verification","otp","magic-link","ai-sdk","vercel-ai","agent","agentic","renaper","argentina"],"repository":{"type":"git","url":"git+https://github.com/ar-agents/ar-agents.git","directory":"packages/identity-attest"},"description":"Identity attestation pattern for AI agents: orchestrate verification flows (WhatsApp OTP, email magic link, Auth0, MercadoPago Identity, SID gov) and get back a signed attestation with a trust level. The RENAPER workaround that lets agents do KYC without ","maintainers":[{"name":"naza-ar","email":"clementenaza@gmail.com"}],"readme":"# @ar-agents/identity-attest\n\n> The \"RENAPER workaround\" pattern. Orchestrate identity verification (WhatsApp OTP, email magic-link, Auth0, MercadoPago Identity, SID gov) and get back a signed attestation with a trust level. Designed for AI agents that need to do KYC without institutional API access.\n\n[![npm](https://img.shields.io/npm/v/@ar-agents/identity-attest.svg)](https://www.npmjs.com/package/@ar-agents/identity-attest)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![npm provenance](https://img.shields.io/badge/npm%20provenance-SLSA%20v1-7C3AED?logo=npm)](https://docs.npmjs.com/generating-provenance-statements)\n\n## The problem\n\nRENAPER (the Argentine national identity registry) is closed to indie devs: $60/transaction, requires formal institutional agreement. There is no public API for \"is this person who they say they are\" in Argentina.\n\n## The pattern\n\nThe agent doesn't verify directly. It **orchestrates** the user proving themselves via a third-party provider (WhatsApp OTP, email magic-link, Auth0, etc.) and receives a cryptographically-signed `Attestation` with a `trustLevel` (0..1). The agent then decides if the trust is sufficient for the action requested.\n\nThink of it as: agent acts as the verifier of verifiers, not the verifier itself.\n\n## Install\n\n```bash\npnpm add @ar-agents/identity-attest ai zod\n```\n\n## Quick start\n\n```ts\nimport { Experimental_Agent as Agent, stepCountIs } from \"ai\";\nimport {\n  AttestationClient,\n  identityAttestTools,\n  WhatsAppOtpAdapter,\n  EmailMagicLinkAdapter,\n} from \"@ar-agents/identity-attest\";\nimport { WhatsAppClient } from \"@ar-agents/whatsapp\";\n\nconst wa = new WhatsAppClient({\n  accessToken: process.env.WA_ACCESS_TOKEN!,\n  phoneNumberId: process.env.WA_PHONE_NUMBER_ID!,\n});\n\nconst attestation = new AttestationClient({\n  signingSecret: process.env.ATTEST_SIGNING_SECRET!, // openssl rand -hex 32\n  adapters: {\n    whatsapp_otp: new WhatsAppOtpAdapter({\n      whatsappClient: wa,\n      businessName: \"LautaroSaaS\",\n    }),\n    email_magic_link: new EmailMagicLinkAdapter({\n      sender: async ({ to, subject, html }) => {\n        // Your email provider here (Resend / SES / SMTP)\n        await resend.emails.send({ from: \"noreply@yourapp.com\", to, subject, html });\n      },\n      callbackBaseUrl: \"https://yourapp.com/api/identity-attest/callback\",\n      businessName: \"LautaroSaaS\",\n    }),\n  },\n});\n\nconst agent = new Agent({\n  model: \"anthropic/claude-sonnet-4-6\",\n  instructions: `Sos el asistente de billing. Para cobros > $20.000 requerís\ntrust >= 0.5 (email verificado). Para > $100.000 requerís 0.85+.\nSi el usuario no tiene attestation suficiente, kickeá un verification flow.`,\n  tools: identityAttestTools(attestation),\n  stopWhen: stepCountIs(8),\n});\n```\n\n## The two flow shapes\n\n### OTP (WhatsApp / SMS / Email OTP)\n\n```\nagent → request_identity_verification(method=\"whatsapp_otp\", subject=phone)\n          → adapter sends 6-digit code via WhatsApp\nagent → \"Te mandé un código por WhatsApp, decime cuando lo recibas\"\nuser → \"el código es 482917\"\nagent → submit_otp_code(request_id, \"482917\") → returns Attestation\n```\n\n### Magic-link (Email)\n\n```\nagent → request_identity_verification(method=\"email_magic_link\", subject=email)\n          → adapter sends magic-link email\nagent → \"Te mandé un mail con un link, hacé click ahí\"\nuser clicks link → handleAttestationCallback() validates token, signs attestation\nagent (polling) → check_verification_status(request_id) → status=\"verified\"\n```\n\n## Wire the magic-link callback\n\n```ts\n// app/api/identity-attest/callback/route.ts (Next.js app router)\nimport { NextRequest, NextResponse } from \"next/server\";\nimport { handleAttestationCallback } from \"@ar-agents/identity-attest\";\nimport { attestation } from \"@/lib/attestation\";\n\nexport async function GET(req: NextRequest) {\n  const result = await handleAttestationCallback({\n    query: Object.fromEntries(new URL(req.url).searchParams),\n    client: attestation,\n  });\n  if (result.kind === \"verified\") {\n    return new NextResponse(\n      \"<h1>Verificado ✓</h1><p>Volvé al chat.</p>\",\n      { headers: { \"Content-Type\": \"text/html\" } },\n    );\n  }\n  return new NextResponse(`<h1>Error: ${result.reason}</h1>`, {\n    status: 400,\n    headers: { \"Content-Type\": \"text/html\" },\n  });\n}\n```\n\n## Trust levels\n\n| Trust | Adapter | Proves |\n|---|---|---|\n| 0.3 | `WhatsAppOtpAdapter` | Controls a phone number right now |\n| 0.5 | `EmailMagicLinkAdapter` | Controls an email right now |\n| 0.7 | Auth0 / Cognito (planned for v0.2) | Has account at federated IdP |\n| 0.85 | MercadoPago Identity (planned for v0.3) | Passed MP KYC |\n| 0.95 | SID gov (planned, blocked on rollout) | Official identity |\n\n## Tools provided\n\n| Tool | Purpose |\n|---|---|\n| `list_verification_methods` | Returns registered adapters with trust levels |\n| `request_identity_verification` | Start a verification flow |\n| `submit_otp_code` | Submit OTP the user dictated back |\n| `check_verification_status` | Poll status (for magic-link flows) |\n| `get_attestation` | Fetch signed attestation for a completed verification |\n\nSee [AGENTS.md](./AGENTS.md) for when to use each.\n\n## Persistence\n\nDefault `InMemoryAttestationStore` is fine for dev / single-process. For production / serverless, implement `AttestationStore`:\n\n```ts\nimport type { AttestationStore } from \"@ar-agents/identity-attest\";\n\nclass RedisAttestationStore implements AttestationStore {\n  async saveRequest(request, internal) { /* ... */ }\n  async updateRequest(requestId, patch) { /* ... */ }\n  async getRequest(requestId) { /* ... */ }\n  async saveAttestation(attestation) { /* ... */ }\n  async getAttestation(requestId) { /* ... */ }\n  async listAttestationsForSubject(type, value) { /* ... */ }\n}\n\nconst attestation = new AttestationClient({\n  signingSecret: process.env.ATTEST_SIGNING_SECRET!,\n  adapters: { ... },\n  store: new RedisAttestationStore({ ... }),\n});\n```\n\n## Adapters provided\n\n- `WhatsAppOtpAdapter`: OTP via WhatsApp Cloud API (uses `@ar-agents/whatsapp`)\n- `EmailMagicLinkAdapter`: magic link via your email provider (Resend / SES / SMTP: pluggable sender)\n\nBuilding your own adapter is ~50 lines: implement the `AttestAdapter` interface (3 methods).\n\n## Roadmap\n\n- v0.2: `Auth0Adapter`, `CognitoAdapter`, `MagicLinkSdkAdapter`\n- v0.3: `MercadoPagoIdentityAdapter` (uses MP's KYC level data)\n- v0.x: `SidGovAdapter` when AR's SID API opens to private dev access\n\n## License\n\nMIT: © Nazareno Clemente\n\n## Stability\n\nThis package is **pre-1.0**. Per [npm convention](https://docs.npmjs.com/about-semantic-versioning), **0.x minor versions may include breaking changes**. We document every breaking change in `CHANGELOG.md` under the corresponding minor bump and flag it explicitly. To avoid surprises:\n\n```bash\n# Pin to exact version (recommended for production):\npnpm add @ar-agents/<package>@<exact-version>\n```\n\nWe commit to **no breaking changes within a patch version**, and we publish `1.0.0` once the public API has stabilized across at least two consecutive minor releases.\n","readmeFilename":"README.md"}