{"_id":"@automattic/mcp-server-gravatar","_rev":"19-5cc9b9aca8e00fe287f26f87abbd258a","name":"@automattic/mcp-server-gravatar","dist-tags":{"latest":"0.1.0-beta.4"},"versions":{"0.1.0-beta.0":{"name":"@automattic/mcp-server-gravatar","version":"0.1.0-beta.0","keywords":["gravatar","mcp","mcp-server","modelcontextprotocol","server","ai","avatar","profile"],"author":{"name":"Andrew Montgomery","email":"andrew.montgomery@automattic.com"},"license":"MPL-2.0","_id":"@automattic/mcp-server-gravatar@0.1.0-beta.0","maintainers":[{"name":"macbre","email":"maciej.brencz@gmail.com"},{"name":"yuliyan","email":"yuliyan.slavchev@gmail.com"},{"name":"mjangda","email":"batmoo@gmail.com"},{"name":"matticbot","email":"jetpack+engineering@automattic.com"},{"name":"a8c","email":"invoices@automattic.com"},{"name":"blowery","email":"ben@blowery.org"},{"name":"ehg_","email":"chris@ehg.sh"},{"name":"sgomes","email":"mail@sgomes.io"},{"name":"tyxla","email":"tyxla@abv.bg"},{"name":"saroshaga","email":"sarosh.aga@automattic.com"},{"name":"nejclovrencic","email":"nejc.lovrencic@gmail.com"},{"name":"sirbrillig","email":"payton@foolord.com"},{"name":"chriszarate","email":"chris@zarate.org"},{"name":"robersongomes","email":"robersonccgomes@gmail.com"},{"name":"johngodley","email":"johng75@gmail.com"},{"name":"jeherve","email":"jeremy@tagada.hu"},{"name":"daledupreez-a8c","email":"dale@automattic.com"},{"name":"t2dw4t","email":"todd.wright@automattic.com"},{"name":"luismulinari","email":"luis.mulinari@gmail.com"},{"name":"andrea-sdl","email":"andrea.grassi@automattic.com"},{"name":"elazzabi","email":"elazzabi.ahmed@gmail.com"},{"name":"fmfernandes","email":"fernando.fernandes@automattic.com"},{"name":"sirreal","email":"jon.surrell@gmail.com"},{"name":"wwa","email":"volodymyr@wildwolf.name"},{"name":"chihsuan","email":"chihsuan.tw@gmail.com"},{"name":"manzoorwanijk","email":"manzoorwani.jk@gmail.com"},{"name":"msurdi-a8c","email":"matias.emanuel.surdi@automattic.com"},{"name":"newspack","email":"newspack@a8c.com"},{"name":"dsmartg","email":"derek.smart@automattic.com"},{"name":"kthai15","email":"kavin.keratikasama@automattic.com"},{"name":"bgrgicak","email":"berislav.grgicak@gmail.com"},{"name":"robertsreberski_a8c","email":"robert.sreberski@automattic.com"},{"name":"artpi","email":"artur.piszek@gmail.com"},{"name":"gmjuhasz","email":"jugergo@gmail.com"},{"name":"kat3samsin","email":"kat3samsin@gmail.com"},{"name":"brunobasto","email":"b.basto@gmail.com"},{"name":"dhenridev","email":"douglas.henri@automattic.com"},{"name":"micbosia8c","email":"michele.bosi@automattic.com"},{"name":"mrmurphy","email":"m@mrmurphy.dev"},{"name":"wpvip-bot","email":"platform+npm@wpvip.com"},{"name":"etobiesen","email":"e.tobiesen@gmail.com"},{"name":"alshakero","email":"omar@omaralshaker.com"},{"name":"arthur791004","email":"arthur791004@gmail.com"},{"name":"dilirity","email":"peter.petrov89@gmail.com"},{"name":"mattwest-a8c","email":"matt.west@automattic.com"},{"name":"mehmoodak","email":"npmjs.corporate906@passinbox.com"},{"name":"natalia.vidal","email":"natalia.vidal@automattic.com"},{"name":"chriskmnds","email":"chriskmnds@gmail.com"},{"name":"oandregal","email":"ola@oandre.gal"},{"name":"galatanovidiu","email":"galatanovidiu@gmail.com"},{"name":"kangzj","email":"kangzjnet@gmail.com"},{"name":"_mirka_","email":"lena@jaguchi.com"}],"homepage":"https://github.com/Automattic/mcp-server-gravatar","bugs":{"url":"https://github.com/Automattic/mcp-server-gravatar/issues"},"bin":{"mcp-server-gravatar":"build/index.js"},"dist":{"shasum":"6c08d41e1a21f6ac5a0891996cc31d973209d803","tarball":"https://registry.npmjs.org/@automattic/mcp-server-gravatar/-/mcp-server-gravatar-0.1.0-beta.0.tgz","fileCount":114,"integrity":"sha512-gp6TrY03LfeC35ZI6sRKlL7I1USy8/Y4qhcLP6RhSI+qvYMWPlDqeOdK6Vi9AUoCNYA9J0bwL3JCSIUQFRzN9g==","signatures":[{"sig":"MEUCIBBkNHfziZyVdDR32fT9ze+WiHVN89IxgHXGdNtPugVNAiEAt024P2pY3zLFY4g9iiMziYDvJr/eHLPeO/YLv7/i7L4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":223921},"main":"build/index.js","type":"module","types":"./build/index.d.ts","engines":{"npm":">=10.0.0","node":">=20.0.0"},"gitHead":"685e5b9efcc6c6cbfb44a5dcee04783cf4105d29","scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc && chmod +x build/*.js","clean":"rm -rf build/","start":"node build/index.js","format":"prettier --write .","prepare":"npm run clean && npm run build","lint:fix":"eslint . --fix","inspector":"npx @modelcontextprotocol/inspector build/index.js","preversion":"npm run clean && npm run build && npm run test","test:watch":"vitest","type-check":"tsc --noEmit","postversion":"git push && git push --tags","format:check":"prettier --check .","test:coverage":"vitest run --coverage","generate-client":"make generate-client"},"_npmUser":{"name":"a8c","actor":{"name":"a8c","type":"user","email":"invoices@automattic.com"},"email":"invoices@automattic.com"},"repository":{"url":"git+https://github.com/Automattic/mcp-server-gravatar.git","type":"git"},"_npmVersion":"10.9.2","description":"Gravatar's official MCP Server","directories":{},"_nodeVersion":"22.16.0","dependencies":{"zod":"^3.25.26","node-fetch":"^3.3.2","zod-to-json-schema":"^3.22.3","universal-user-agent":"^7.0.3","@modelcontextprotocol/sdk":"^1.12.0"},"engineStrict":true,"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.27.0","vitest":"^3.1.4","ts-node":"^10.9.2","prettier":"^3.5.3","@eslint/js":"^9.27.0","typescript":"^5.8.3","@types/node":"^22.15.21","typescript-eslint":"^8.32.1","@vitest/coverage-v8":"^3.1.4","eslint-plugin-import":"^2.31.0","eslint-config-prettier":"^10.1.5","@typescript-eslint/parser":"^8.32.1","eslint-plugin-unused-imports":"^4.1.4","@typescript-eslint/eslint-plugin":"^8.32.1"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server-gravatar_0.1.0-beta.0_1750288390458_0.18665044834405564","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.1":{"name":"@automattic/mcp-server-gravatar","version":"0.1.0-beta.1","keywords":["gravatar","mcp","mcp-server","modelcontextprotocol","server","ai","avatar","profile"],"author":{"name":"Andrew Montgomery","email":"andrew.montgomery@automattic.com"},"license":"MPL-2.0","_id":"@automattic/mcp-server-gravatar@0.1.0-beta.1","maintainers":[{"name":"macbre","email":"maciej.brencz@gmail.com"},{"name":"yuliyan","email":"yuliyan.slavchev@gmail.com"},{"name":"mjangda","email":"batmoo@gmail.com"},{"name":"matticbot","email":"jetpack+engineering@automattic.com"},{"name":"a8c","email":"invoices@automattic.com"},{"name":"blowery","email":"ben@blowery.org"},{"name":"ehg_","email":"chris@ehg.sh"},{"name":"sgomes","email":"mail@sgomes.io"},{"name":"tyxla","email":"tyxla@abv.bg"},{"name":"saroshaga","email":"sarosh.aga@automattic.com"},{"name":"nejclovrencic","email":"nejc.lovrencic@gmail.com"},{"name":"sirbrillig","email":"payton@foolord.com"},{"name":"chriszarate","email":"chris@zarate.org"},{"name":"robersongomes","email":"robersonccgomes@gmail.com"},{"name":"johngodley","email":"johng75@gmail.com"},{"name":"jeherve","email":"jeremy@tagada.hu"},{"name":"daledupreez-a8c","email":"dale@automattic.com"},{"name":"t2dw4t","email":"todd.wright@automattic.com"},{"name":"luismulinari","email":"luis.mulinari@gmail.com"},{"name":"andrea-sdl","email":"andrea.grassi@automattic.com"},{"name":"elazzabi","email":"elazzabi.ahmed@gmail.com"},{"name":"fmfernandes","email":"fernando.fernandes@automattic.com"},{"name":"sirreal","email":"jon.surrell@gmail.com"},{"name":"wwa","email":"volodymyr@wildwolf.name"},{"name":"chihsuan","email":"chihsuan.tw@gmail.com"},{"name":"manzoorwanijk","email":"manzoorwani.jk@gmail.com"},{"name":"msurdi-a8c","email":"matias.emanuel.surdi@automattic.com"},{"name":"newspack","email":"newspack@a8c.com"},{"name":"dsmartg","email":"derek.smart@automattic.com"},{"name":"kthai15","email":"kavin.keratikasama@automattic.com"},{"name":"bgrgicak","email":"berislav.grgicak@gmail.com"},{"name":"robertsreberski_a8c","email":"robert.sreberski@automattic.com"},{"name":"artpi","email":"artur.piszek@gmail.com"},{"name":"gmjuhasz","email":"jugergo@gmail.com"},{"name":"kat3samsin","email":"kat3samsin@gmail.com"},{"name":"brunobasto","email":"b.basto@gmail.com"},{"name":"dhenridev","email":"douglas.henri@automattic.com"},{"name":"micbosia8c","email":"michele.bosi@automattic.com"},{"name":"mrmurphy","email":"m@mrmurphy.dev"},{"name":"wpvip-bot","email":"platform+npm@wpvip.com"},{"name":"etobiesen","email":"e.tobiesen@gmail.com"},{"name":"alshakero","email":"omar@omaralshaker.com"},{"name":"arthur791004","email":"arthur791004@gmail.com"},{"name":"dilirity","email":"peter.petrov89@gmail.com"},{"name":"mattwest-a8c","email":"matt.west@automattic.com"},{"name":"mehmoodak","email":"npmjs.corporate906@passinbox.com"},{"name":"natalia.vidal","email":"natalia.vidal@automattic.com"},{"name":"chriskmnds","email":"chriskmnds@gmail.com"},{"name":"oandregal","email":"ola@oandre.gal"},{"name":"galatanovidiu","email":"galatanovidiu@gmail.com"},{"name":"kangzj","email":"kangzjnet@gmail.com"},{"name":"_mirka_","email":"lena@jaguchi.com"}],"homepage":"https://github.com/Automattic/mcp-server-gravatar","bugs":{"url":"https://github.com/Automattic/mcp-server-gravatar/issues"},"bin":{"mcp-server-gravatar":"build/index.js"},"dist":{"shasum":"784e37b3918a825a3cc38c0efb817f6b66a3ff8e","tarball":"https://registry.npmjs.org/@automattic/mcp-server-gravatar/-/mcp-server-gravatar-0.1.0-beta.1.tgz","fileCount":114,"integrity":"sha512-cXpQ/4gqAbZe95y0gmXNLFV3jrU+p2MdE4TH8vsM9G2ePM31vjbmCJP5N/xnn8lUpVPbAESgEN6svtPgnVyMzQ==","signatures":[{"sig":"MEUCIQDhWLKmk00HTGojuo50dRSzc3j1D/UN+0yqIpNipITq8QIgQQnXXmP8ZLzYpRNTGF9S1VHsOrC2TKA7pRtiBnXE5wQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":223921},"main":"build/index.js","type":"module","types":"./build/index.d.ts","engines":{"npm":">=10.0.0","node":">=20.0.0"},"gitHead":"f0ba7eb1a4bdc17b2d714b061ff23e9e432c9916","scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc && chmod +x build/*.js","clean":"rm -rf build/","start":"node build/index.js","format":"prettier --write .","prepare":"npm run clean && npm run build","lint:fix":"eslint . --fix","inspector":"npx @modelcontextprotocol/inspector build/index.js","preversion":"npm run clean && npm run build && npm run test","test:watch":"vitest","type-check":"tsc --noEmit","postversion":"git push && git push --tags","format:check":"prettier --check .","test:coverage":"vitest run --coverage","generate-client":"make generate-client"},"_npmUser":{"name":"a8c","actor":{"name":"a8c","type":"user","email":"invoices@automattic.com"},"email":"invoices@automattic.com"},"repository":{"url":"git+https://github.com/Automattic/mcp-server-gravatar.git","type":"git"},"_npmVersion":"10.9.2","description":"Gravatar's official MCP Server","directories":{},"_nodeVersion":"22.16.0","dependencies":{"zod":"^3.25.26","node-fetch":"^3.3.2","zod-to-json-schema":"^3.22.3","universal-user-agent":"^7.0.3","@modelcontextprotocol/sdk":"^1.12.0"},"engineStrict":true,"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.27.0","vitest":"^3.1.4","ts-node":"^10.9.2","prettier":"^3.5.3","@eslint/js":"^9.27.0","typescript":"^5.8.3","@types/node":"^22.15.21","typescript-eslint":"^8.32.1","@vitest/coverage-v8":"^3.1.4","eslint-plugin-import":"^2.31.0","eslint-config-prettier":"^10.1.5","@typescript-eslint/parser":"^8.32.1","eslint-plugin-unused-imports":"^4.1.4","@typescript-eslint/eslint-plugin":"^8.32.1"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server-gravatar_0.1.0-beta.1_1750289026456_0.015246622700318957","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.2":{"name":"@automattic/mcp-server-gravatar","version":"0.1.0-beta.2","keywords":["gravatar","mcp","mcp-server","modelcontextprotocol","server","ai","avatar","profile"],"author":{"name":"Andrew Montgomery","email":"andrew.montgomery@automattic.com"},"license":"MPL-2.0","_id":"@automattic/mcp-server-gravatar@0.1.0-beta.2","maintainers":[{"name":"macbre","email":"maciej.brencz@gmail.com"},{"name":"yuliyan","email":"yuliyan.slavchev@gmail.com"},{"name":"mjangda","email":"batmoo@gmail.com"},{"name":"matticbot","email":"jetpack+engineering@automattic.com"},{"name":"a8c","email":"invoices@automattic.com"},{"name":"blowery","email":"ben@blowery.org"},{"name":"ehg_","email":"chris@ehg.sh"},{"name":"sgomes","email":"mail@sgomes.io"},{"name":"tyxla","email":"tyxla@abv.bg"},{"name":"saroshaga","email":"sarosh.aga@automattic.com"},{"name":"nejclovrencic","email":"nejc.lovrencic@gmail.com"},{"name":"sirbrillig","email":"payton@foolord.com"},{"name":"chriszarate","email":"chris@zarate.org"},{"name":"robersongomes","email":"robersonccgomes@gmail.com"},{"name":"johngodley","email":"johng75@gmail.com"},{"name":"jeherve","email":"jeremy@tagada.hu"},{"name":"daledupreez-a8c","email":"dale@automattic.com"},{"name":"t2dw4t","email":"todd.wright@automattic.com"},{"name":"luismulinari","email":"luis.mulinari@gmail.com"},{"name":"andrea-sdl","email":"andrea.grassi@automattic.com"},{"name":"elazzabi","email":"elazzabi.ahmed@gmail.com"},{"name":"fmfernandes","email":"fernando.fernandes@automattic.com"},{"name":"sirreal","email":"jon.surrell@gmail.com"},{"name":"wwa","email":"volodymyr@wildwolf.name"},{"name":"chihsuan","email":"chihsuan.tw@gmail.com"},{"name":"manzoorwanijk","email":"manzoorwani.jk@gmail.com"},{"name":"msurdi-a8c","email":"matias.emanuel.surdi@automattic.com"},{"name":"newspack","email":"newspack@a8c.com"},{"name":"dsmartg","email":"derek.smart@automattic.com"},{"name":"kthai15","email":"kavin.keratikasama@automattic.com"},{"name":"bgrgicak","email":"berislav.grgicak@gmail.com"},{"name":"robertsreberski_a8c","email":"robert.sreberski@automattic.com"},{"name":"artpi","email":"artur.piszek@gmail.com"},{"name":"gmjuhasz","email":"jugergo@gmail.com"},{"name":"kat3samsin","email":"kat3samsin@gmail.com"},{"name":"brunobasto","email":"b.basto@gmail.com"},{"name":"dhenridev","email":"douglas.henri@automattic.com"},{"name":"micbosia8c","email":"michele.bosi@automattic.com"},{"name":"mrmurphy","email":"m@mrmurphy.dev"},{"name":"wpvip-bot","email":"platform+npm@wpvip.com"},{"name":"etobiesen","email":"e.tobiesen@gmail.com"},{"name":"alshakero","email":"omar@omaralshaker.com"},{"name":"arthur791004","email":"arthur791004@gmail.com"},{"name":"dilirity","email":"peter.petrov89@gmail.com"},{"name":"mattwest-a8c","email":"matt.west@automattic.com"},{"name":"mehmoodak","email":"npmjs.corporate906@passinbox.com"},{"name":"natalia.vidal","email":"natalia.vidal@automattic.com"},{"name":"chriskmnds","email":"chriskmnds@gmail.com"},{"name":"oandregal","email":"ola@oandre.gal"},{"name":"galatanovidiu","email":"galatanovidiu@gmail.com"},{"name":"kangzj","email":"kangzjnet@gmail.com"},{"name":"_mirka_","email":"lena@jaguchi.com"}],"homepage":"https://github.com/Automattic/mcp-server-gravatar","bugs":{"url":"https://github.com/Automattic/mcp-server-gravatar/issues"},"bin":{"mcp-server-gravatar":"build/index.js"},"dist":{"shasum":"f56195c649ab3364786407b10c3f939e917cb6eb","tarball":"https://registry.npmjs.org/@automattic/mcp-server-gravatar/-/mcp-server-gravatar-0.1.0-beta.2.tgz","fileCount":114,"integrity":"sha512-zAMvyptXiS93aHD8WphlzFvSlue/3+t0dL73npoqnV29pRehnk9QKJK9JMaTjvv2s2PgTP6Z9WEAKg+INETUUw==","signatures":[{"sig":"MEQCIEaWWuhlhtwZfFaM4GNm5dLNaUkwtYJQrH0YJ+7nf7JsAiB92mKdrZwQOGP3VaIXjKxCGIFdm40MFRSZ07xPbWIZnw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":224051},"main":"build/index.js","type":"module","types":"./build/index.d.ts","engines":{"npm":">=10.0.0","node":">=20.0.0"},"gitHead":"9e2d9c849d723443413d7ac5cadb41b8e8b49668","scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc && chmod +x build/*.js","clean":"rm -rf build/","start":"node build/index.js","format":"prettier --write .","prepare":"npm run clean && npm run build","lint:fix":"eslint . --fix","inspector":"npx @modelcontextprotocol/inspector build/index.js","preversion":"npm run clean && npm run build && npm run test","test:watch":"vitest","type-check":"tsc --noEmit","postversion":"git push && git push --tags","format:check":"prettier --check .","test:coverage":"vitest run --coverage","generate-client":"make generate-client"},"_npmUser":{"name":"a8c","actor":{"name":"a8c","type":"user","email":"invoices@automattic.com"},"email":"invoices@automattic.com"},"repository":{"url":"git+https://github.com/Automattic/mcp-server-gravatar.git","type":"git"},"_npmVersion":"10.9.2","description":"Gravatar's official MCP Server","directories":{},"_nodeVersion":"22.16.0","dependencies":{"zod":"^3.25.26","node-fetch":"^3.3.2","zod-to-json-schema":"^3.22.3","universal-user-agent":"^7.0.3","@modelcontextprotocol/sdk":"^1.12.0"},"engineStrict":true,"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.27.0","vitest":"^3.1.4","ts-node":"^10.9.2","prettier":"^3.5.3","@eslint/js":"^9.27.0","typescript":"^5.8.3","@types/node":"^22.15.21","typescript-eslint":"^8.32.1","@vitest/coverage-v8":"^3.1.4","eslint-plugin-import":"^2.31.0","eslint-config-prettier":"^10.1.5","@typescript-eslint/parser":"^8.32.1","eslint-plugin-unused-imports":"^4.1.4","@typescript-eslint/eslint-plugin":"^8.32.1"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server-gravatar_0.1.0-beta.2_1750346731156_0.4201687561868235","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.3":{"name":"@automattic/mcp-server-gravatar","version":"0.1.0-beta.3","keywords":["gravatar","mcp","mcp-server","modelcontextprotocol","server","ai","avatar","profile"],"author":{"name":"Andrew Montgomery","email":"andrew.montgomery@automattic.com"},"license":"MPL-2.0","_id":"@automattic/mcp-server-gravatar@0.1.0-beta.3","maintainers":[{"name":"macbre","email":"maciej.brencz@gmail.com"},{"name":"yuliyan","email":"yuliyan.slavchev@gmail.com"},{"name":"mjangda","email":"batmoo@gmail.com"},{"name":"matticbot","email":"jetpack+engineering@automattic.com"},{"name":"a8c","email":"invoices@automattic.com"},{"name":"blowery","email":"ben@blowery.org"},{"name":"ehg_","email":"chris@ehg.sh"},{"name":"sgomes","email":"mail@sgomes.io"},{"name":"tyxla","email":"tyxla@abv.bg"},{"name":"saroshaga","email":"sarosh.aga@automattic.com"},{"name":"nejclovrencic","email":"nejc.lovrencic@gmail.com"},{"name":"sirbrillig","email":"payton@foolord.com"},{"name":"chriszarate","email":"chris@zarate.org"},{"name":"robersongomes","email":"robersonccgomes@gmail.com"},{"name":"johngodley","email":"johng75@gmail.com"},{"name":"jeherve","email":"jeremy@tagada.hu"},{"name":"daledupreez-a8c","email":"dale@automattic.com"},{"name":"t2dw4t","email":"todd.wright@automattic.com"},{"name":"luismulinari","email":"luis.mulinari@gmail.com"},{"name":"andrea-sdl","email":"andrea.grassi@automattic.com"},{"name":"elazzabi","email":"elazzabi.ahmed@gmail.com"},{"name":"fmfernandes","email":"fernando.fernandes@automattic.com"},{"name":"sirreal","email":"jon.surrell@gmail.com"},{"name":"wwa","email":"volodymyr@wildwolf.name"},{"name":"chihsuan","email":"chihsuan.tw@gmail.com"},{"name":"manzoorwanijk","email":"manzoorwani.jk@gmail.com"},{"name":"msurdi-a8c","email":"matias.emanuel.surdi@automattic.com"},{"name":"newspack","email":"newspack@a8c.com"},{"name":"dsmartg","email":"derek.smart@automattic.com"},{"name":"kthai15","email":"kavin.keratikasama@automattic.com"},{"name":"bgrgicak","email":"berislav.grgicak@gmail.com"},{"name":"robertsreberski_a8c","email":"robert.sreberski@automattic.com"},{"name":"artpi","email":"artur.piszek@gmail.com"},{"name":"gmjuhasz","email":"jugergo@gmail.com"},{"name":"kat3samsin","email":"kat3samsin@gmail.com"},{"name":"brunobasto","email":"b.basto@gmail.com"},{"name":"dhenridev","email":"douglas.henri@automattic.com"},{"name":"micbosia8c","email":"michele.bosi@automattic.com"},{"name":"mrmurphy","email":"m@mrmurphy.dev"},{"name":"wpvip-bot","email":"platform+npm@wpvip.com"},{"name":"etobiesen","email":"e.tobiesen@gmail.com"},{"name":"alshakero","email":"omar@omaralshaker.com"},{"name":"arthur791004","email":"arthur791004@gmail.com"},{"name":"dilirity","email":"peter.petrov89@gmail.com"},{"name":"mattwest-a8c","email":"matt.west@automattic.com"},{"name":"mehmoodak","email":"npmjs.corporate906@passinbox.com"},{"name":"natalia.vidal","email":"natalia.vidal@automattic.com"},{"name":"chriskmnds","email":"chriskmnds@gmail.com"},{"name":"oandregal","email":"ola@oandre.gal"},{"name":"galatanovidiu","email":"galatanovidiu@gmail.com"},{"name":"kangzj","email":"kangzjnet@gmail.com"},{"name":"_mirka_","email":"lena@jaguchi.com"}],"homepage":"https://github.com/Automattic/mcp-server-gravatar","bugs":{"url":"https://github.com/Automattic/mcp-server-gravatar/issues"},"bin":{"mcp-server-gravatar":"build/index.js"},"dist":{"shasum":"5bbe0c715015caf4eee56f15b9421ec5a20375db","tarball":"https://registry.npmjs.org/@automattic/mcp-server-gravatar/-/mcp-server-gravatar-0.1.0-beta.3.tgz","fileCount":114,"integrity":"sha512-RbYvW4gf65V+rVRCV46QweKuib5PlVsXIZHcGVbam5Yb8IXsZ5QOJTkMqmwB02fmpVHEPBfiDsvnIOjJspT6iA==","signatures":[{"sig":"MEUCIEZ2dzXRr0xRBzCeuwYTAxKMt64hxgNaFQQhHrHypUzZAiEAg6/hdOAUUG6oSxiutDoXzOgoAviPHisoaAzNXoUygcI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":224956},"main":"build/index.js","type":"module","types":"./build/index.d.ts","engines":{"npm":">=10.0.0","node":">=20.0.0"},"gitHead":"c709304768b7b923f8fbccca33934c5076f8ced4","scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc && chmod +x build/*.js","clean":"rm -rf build/","start":"node build/index.js","format":"prettier --write .","prepare":"npm run clean && npm run build","lint:fix":"eslint . --fix","inspector":"npx @modelcontextprotocol/inspector build/index.js","preversion":"npm run clean && npm run build && npm run test","test:watch":"vitest","type-check":"tsc --noEmit","postversion":"git push && git push --tags","format:check":"prettier --check .","test:coverage":"vitest run --coverage","generate-client":"make generate-client"},"_npmUser":{"name":"a8c","actor":{"name":"a8c","type":"user","email":"invoices@automattic.com"},"email":"invoices@automattic.com"},"repository":{"url":"git+https://github.com/Automattic/mcp-server-gravatar.git","type":"git"},"_npmVersion":"10.9.2","description":"Gravatar's official MCP Server","directories":{},"_nodeVersion":"22.16.0","dependencies":{"zod":"^3.25.26","node-fetch":"^3.3.2","zod-to-json-schema":"^3.22.3","universal-user-agent":"^7.0.3","@modelcontextprotocol/sdk":"^1.12.0"},"engineStrict":true,"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.27.0","vitest":"^3.1.4","ts-node":"^10.9.2","prettier":"^3.5.3","@eslint/js":"^9.27.0","typescript":"^5.8.3","@types/node":"^22.15.21","typescript-eslint":"^8.32.1","@vitest/coverage-v8":"^3.1.4","eslint-plugin-import":"^2.31.0","eslint-config-prettier":"^10.1.5","@typescript-eslint/parser":"^8.32.1","eslint-plugin-unused-imports":"^4.1.4","@typescript-eslint/eslint-plugin":"^8.32.1"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server-gravatar_0.1.0-beta.3_1750442979934_0.07193923842368499","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.4":{"name":"@automattic/mcp-server-gravatar","version":"0.1.0-beta.4","keywords":["gravatar","mcp","mcp-server","modelcontextprotocol","server","ai","avatar","profile"],"author":{"name":"Andrew Montgomery","email":"andrew.montgomery@automattic.com"},"license":"MPL-2.0","_id":"@automattic/mcp-server-gravatar@0.1.0-beta.4","maintainers":[{"name":"macbre","email":"maciej.brencz@gmail.com"},{"name":"yuliyan","email":"yuliyan.slavchev@gmail.com"},{"name":"mjangda","email":"batmoo@gmail.com"},{"name":"matticbot","email":"jetpack+engineering@automattic.com"},{"name":"a8c","email":"invoices@automattic.com"},{"name":"blowery","email":"ben@blowery.org"},{"name":"ehg_","email":"chris@ehg.sh"},{"name":"sgomes","email":"mail@sgomes.io"},{"name":"tyxla","email":"tyxla@abv.bg"},{"name":"saroshaga","email":"sarosh.aga@automattic.com"},{"name":"nejclovrencic","email":"nejc.lovrencic@gmail.com"},{"name":"sirbrillig","email":"payton@foolord.com"},{"name":"chriszarate","email":"chris@zarate.org"},{"name":"robersongomes","email":"robersonccgomes@gmail.com"},{"name":"johngodley","email":"johng75@gmail.com"},{"name":"jeherve","email":"jeremy@tagada.hu"},{"name":"daledupreez-a8c","email":"dale@automattic.com"},{"name":"t2dw4t","email":"todd.wright@automattic.com"},{"name":"luismulinari","email":"luis.mulinari@gmail.com"},{"name":"andrea-sdl","email":"andrea.grassi@automattic.com"},{"name":"elazzabi","email":"elazzabi.ahmed@gmail.com"},{"name":"fmfernandes","email":"fernando.fernandes@automattic.com"},{"name":"sirreal","email":"jon.surrell@gmail.com"},{"name":"wwa","email":"volodymyr@wildwolf.name"},{"name":"chihsuan","email":"chihsuan.tw@gmail.com"},{"name":"manzoorwanijk","email":"manzoorwani.jk@gmail.com"},{"name":"msurdi-a8c","email":"matias.emanuel.surdi@automattic.com"},{"name":"newspack","email":"newspack@a8c.com"},{"name":"dsmartg","email":"derek.smart@automattic.com"},{"name":"kthai15","email":"kavin.keratikasama@automattic.com"},{"name":"bgrgicak","email":"berislav.grgicak@gmail.com"},{"name":"robertsreberski_a8c","email":"robert.sreberski@automattic.com"},{"name":"artpi","email":"artur.piszek@gmail.com"},{"name":"gmjuhasz","email":"jugergo@gmail.com"},{"name":"kat3samsin","email":"kat3samsin@gmail.com"},{"name":"brunobasto","email":"b.basto@gmail.com"},{"name":"dhenridev","email":"douglas.henri@automattic.com"},{"name":"micbosia8c","email":"michele.bosi@automattic.com"},{"name":"mrmurphy","email":"m@mrmurphy.dev"},{"name":"wpvip-bot","email":"platform+npm@wpvip.com"},{"name":"etobiesen","email":"e.tobiesen@gmail.com"},{"name":"alshakero","email":"omar@omaralshaker.com"},{"name":"arthur791004","email":"arthur791004@gmail.com"},{"name":"dilirity","email":"peter.petrov89@gmail.com"},{"name":"mattwest-a8c","email":"matt.west@automattic.com"},{"name":"mehmoodak","email":"npmjs.corporate906@passinbox.com"},{"name":"natalia.vidal","email":"natalia.vidal@automattic.com"},{"name":"chriskmnds","email":"chriskmnds@gmail.com"},{"name":"oandregal","email":"ola@oandre.gal"},{"name":"galatanovidiu","email":"galatanovidiu@gmail.com"},{"name":"kangzj","email":"kangzjnet@gmail.com"},{"name":"_mirka_","email":"lena@jaguchi.com"}],"homepage":"https://github.com/Automattic/mcp-server-gravatar","bugs":{"url":"https://github.com/Automattic/mcp-server-gravatar/issues"},"bin":{"mcp-server-gravatar":"build/index.js"},"dist":{"shasum":"395834466072aae142723a63e115fb41143d6f20","tarball":"https://registry.npmjs.org/@automattic/mcp-server-gravatar/-/mcp-server-gravatar-0.1.0-beta.4.tgz","fileCount":116,"integrity":"sha512-YcZXwFL3UcMhTWe8m/x0/T7vEpwDgQaJXQ601rs0Mi0tqoewP4lqzA5EFOeFPLIbJ0wK0tvH8laEPiaQKQDtnw==","signatures":[{"sig":"MEYCIQComVigTiYK9B8LGon/xTF1JH7YJgODQRw1BXUpGY/AIgIhAJFrblzybigVM3i90jyWciy6Oe2bLWl1kRMlfD9eiYZq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":252616},"main":"build/index.js","type":"module","types":"./build/index.d.ts","engines":{"npm":">=10.0.0","node":">=20.0.0"},"gitHead":"32f86ecabb605ec3d82d356dcf9254f6ab5faa38","scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc && chmod +x build/*.js","clean":"rm -rf build/","start":"node build/index.js","format":"prettier --write .","prepare":"npm run clean && npm run build","lint:fix":"eslint . --fix","inspector":"npx @modelcontextprotocol/inspector build/index.js","preversion":"npm run clean && npm run build && npm run test","test:watch":"vitest","type-check":"tsc --noEmit","postversion":"git push && git push --tags","format:check":"prettier --check .","generate-all":"make generate-all","test:coverage":"vitest run --coverage","generate-client":"make generate-client","generate-schemas":"make generate-schemas"},"_npmUser":{"name":"a8c","actor":{"name":"a8c","type":"user","email":"invoices@automattic.com"},"email":"invoices@automattic.com"},"repository":{"url":"git+https://github.com/Automattic/mcp-server-gravatar.git","type":"git"},"_npmVersion":"10.9.2","description":"Gravatar's official MCP Server","directories":{},"_nodeVersion":"22.16.0","dependencies":{"node-fetch":"^3.3.2","universal-user-agent":"^7.0.3","@modelcontextprotocol/sdk":"^1.12.0"},"engineStrict":true,"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.3","eslint":"^9.27.0","vitest":"^3.1.4","prettier":"^3.5.3","@eslint/js":"^9.27.0","typescript":"^5.8.3","@types/node":"^22.15.21","typescript-eslint":"^8.32.1","@vitest/coverage-v8":"^3.1.4","eslint-plugin-import":"^2.31.0","eslint-config-prettier":"^10.1.5","@typescript-eslint/parser":"^8.32.1","eslint-plugin-unused-imports":"^4.1.4","@typescript-eslint/eslint-plugin":"^8.32.1","@openapitools/openapi-generator-cli":"^2.21.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server-gravatar_0.1.0-beta.4_1750972265439_0.5023848538801798","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2025-06-18T23:13:10.374Z","modified":"2026-09-25T20:24:15.754Z","0.1.0-beta.0":"2025-06-18T23:13:10.628Z","0.1.0-beta.1":"2025-06-18T23:23:46.659Z","0.1.0-beta.2":"2025-06-19T15:25:31.386Z","0.1.0-beta.3":"2025-06-20T18:09:40.155Z","0.1.0-beta.4":"2025-06-26T21:11:05.620Z"},"bugs":{"url":"https://github.com/Automattic/mcp-server-gravatar/issues"},"author":{"name":"Andrew Montgomery","email":"andrew.montgomery@automattic.com"},"license":"MPL-2.0","homepage":"https://github.com/Automattic/mcp-server-gravatar","keywords":["gravatar","mcp","mcp-server","modelcontextprotocol","server","ai","avatar","profile"],"repository":{"url":"git+https://github.com/Automattic/mcp-server-gravatar.git","type":"git"},"description":"Gravatar's official MCP Server","maintainers":[{"email":"maciej.brencz@gmail.com","name":"macbre"},{"email":"yuliyan.slavchev@gmail.com","name":"yuliyan"},{"email":"batmoo@gmail.com","name":"mjangda"},{"email":"jetpack+engineering@automattic.com","name":"matticbot"},{"email":"invoices@automattic.com","name":"a8c"},{"email":"ben@blowery.org","name":"blowery"},{"email":"chris@ehg.sh","name":"ehg_"},{"email":"mail@sgomes.io","name":"sgomes"},{"email":"tyxla@abv.bg","name":"tyxla"},{"email":"sarosh.aga@automattic.com","name":"saroshaga"},{"email":"nejc.lovrencic@gmail.com","name":"nejclovrencic"},{"email":"payton@foolord.com","name":"sirbrillig"},{"email":"chris@zarate.org","name":"chriszarate"},{"email":"robersonccgomes@gmail.com","name":"robersongomes"},{"email":"johng75@gmail.com","name":"johngodley"},{"email":"jeremy@tagada.hu","name":"jeherve"},{"email":"dale@automattic.com","name":"daledupreez-a8c"},{"email":"todd.wright@automattic.com","name":"t2dw4t"},{"email":"luis.mulinari@gmail.com","name":"luismulinari"},{"email":"andrea.grassi@automattic.com","name":"andrea-sdl"},{"email":"elazzabi.ahmed@gmail.com","name":"elazzabi"},{"email":"fernando.fernandes@automattic.com","name":"fmfernandes"},{"email":"jon.surrell@gmail.com","name":"sirreal"},{"email":"volodymyr@wildwolf.name","name":"wwa"},{"email":"chihsuan.tw@gmail.com","name":"chihsuan"},{"email":"manzoorwani.jk@gmail.com","name":"manzoorwanijk"},{"email":"matias.emanuel.surdi@automattic.com","name":"msurdi-a8c"},{"email":"newspack@a8c.com","name":"newspack-npm"},{"email":"derek.smart@automattic.com","name":"dsmartg"},{"email":"kavin.keratikasama@automattic.com","name":"kthai15"},{"email":"berislav.grgicak@gmail.com","name":"bgrgicak"},{"email":"robert.sreberski@automattic.com","name":"robertsreberski_a8c"},{"email":"artur.piszek@gmail.com","name":"artpi"},{"email":"jugergo@gmail.com","name":"gmjuhasz"},{"email":"borkweb@gmail.com","name":"borkweb"},{"email":"kat3samsin@gmail.com","name":"kat3samsin"},{"email":"b.basto@gmail.com","name":"brunobasto"},{"email":"douglas.henri@automattic.com","name":"dhenridev"},{"email":"m@mrmurphy.dev","name":"mrmurphy"},{"email":"platform+npm@wpvip.com","name":"wpvip-bot"},{"email":"e.tobiesen@gmail.com","name":"etobiesen"},{"email":"omar@omaralshaker.com","name":"alshakero"},{"email":"arthur791004@gmail.com","name":"arthur791004"},{"email":"peter.petrov89@gmail.com","name":"dilirity"},{"email":"npmjs.corporate906@passinbox.com","name":"mehmoodak"},{"email":"natalia.vidal@automattic.com","name":"natalia.vidal"},{"email":"ivan.ottinger@automattic.com","name":"ivan.ottinger"},{"email":"anand.nalya@gmail.com","name":"anandnalya"},{"email":"anthony.arcangelini@gmail.com","name":"arcangelinis"},{"email":"rdsuarez@gmail.com","name":"retrofox"},{"email":"mayank.chugh@automattic.com","name":"iamchughmayank"},{"email":"mikael@ihminen.org","name":"simison"},{"email":"fredrik@fredrik.computer","name":"fredrikekelund"},{"email":"griffith.chen@automattic.com","name":"griffithchen"},{"email":"josh.boland@automattic.com","name":"jboland8"},{"email":"chriskmnds@gmail.com","name":"chriskmnds"},{"email":"ola@oandre.gal","name":"oandregal"},{"email":"galatanovidiu@gmail.com","name":"galatanovidiu"},{"email":"kangzjnet@gmail.com","name":"kangzj"},{"email":"lena@jaguchi.com","name":"_mirka_"},{"email":"andrew@andrewduthie.com","name":"aduth"},{"email":"emanuele.buccelli@automattic.com","name":"ebuccelli"}],"readme":"![NPM Type Definitions](https://img.shields.io/npm/types/%40automattic%2Fmcp-server-gravatar?style=plastic) [![Node](https://img.shields.io/node/v/%40automattic%2Fmcp-server-gravatar?style=plastic&logo=node.js&logoColor=white&label=node&color=orange)](https://nodejs.org/) [![Node-LTS](https://img.shields.io/node/v-lts/%40automattic%2Fmcp-server-gravatar?style=plastic&logo=node.js&logoColor=white&label=node-lts&color=green)](https://nodejs.org/)\n\n[![GitHub branch status](https://img.shields.io/github/checks-status/Automattic/mcp-server-gravatar/main?style=plastic)](https://github.com/Automattic/mcp-server-gravatar/actions) [![Node.js CI Tested](https://img.shields.io/badge/dynamic/yaml?url=https://raw.githubusercontent.com/Automattic/mcp-server-gravatar/main/.buildkite/pipeline.yml&query=$.steps[1].matrix.setup.node[*]&label=node%20ci%20tested&style=plastic&logo=node.js&logoColor=white&color=blue)](https://nodejs.org/)\n\n\n\n# MCP Server Gravatar\n\nGravatar's official MCP Server, enabling access to avatars, profiles, and inferred interests.\n\n## Quick Install\n\nFor quick installation in VS Code, click one of the installation buttons below:\n\n[![Install with NPX in VS Code](https://img.shields.io/badge/VS_Code-Configure-0098FF?style=plastic&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect/mcp/install?name=gravatar&inputs=%5B%7B%22type%22%3A%22promptString%22%2C%22id%22%3A%22gravatar_api_key%22%2C%22description%22%3A%22Gravatar%20API%20Key%20(optional)%22%2C%22password%22%3Atrue%7D%5D&command=%22npx%22&args=%5B%22-y%22%2C%22%40automattic%2Fmcp-server-gravatar%22%5D&env=%7B%22GRAVATAR_API_KEY%22%3A%22%24%7Binput%3Agravatar_api_key%7D%22%7D) [![Install with NPX in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Configure-2ABF63?style=plastic&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=gravatar&inputs=%5B%7B%22type%22%3A%22promptString%22%2C%22id%22%3A%22gravatar_api_key%22%2C%22description%22%3A%22Gravatar%20API%20Key%20(optional)%22%2C%22password%22%3Atrue%7D%5D&command=%22npx%22&args=%5B%22-y%22%2C%22%40automattic%2Fmcp-server-gravatar%22%5D&env=%7B%22GRAVATAR_API_KEY%22%3A%22%24%7Binput%3Agravatar_api_key%7D%22%7D)\n\n## Requirements\n\n### Node.js\n\nThis MCP server requires:\n- **Node.js**: 20.0.0 or higher\n- **npm**: 10.0.0 or higher\n\nThe server is tested and supported on:\n- Node.js 20 (Active LTS)\n- Node.js 22 (Current LTS)\n- Node.js 24 (Current)\n\n### Installation\n\nYou can install and run this server using npx (recommended) or by building from source.\n\n## Tools\n\n1. `get_profile_by_id`\n   - Retrieve comprehensive Gravatar profile information using a profile identifier\n   - Required inputs:\n     - `profileIdentifier` (string): A Profile Identifier (see [Identifier Types](#identifier-types) section)\n   - Returns: Profile object as JSON with comprehensive user information\n\n2. `get_profile_by_email`\n   - Retrieve comprehensive Gravatar profile information using an email address\n   - Required inputs:\n     - `email` (string): The email address associated with the Gravatar profile. Can be any valid email format - the system will automatically normalize and hash the email for lookup.\n   - Returns: Profile object as JSON with comprehensive user information\n\n3. `get_inferred_interests_by_id`\n   - Fetch AI-inferred interests for a Gravatar profile using a profile identifier\n   - Required inputs:\n     - `profileIdentifier` (string): A Profile Identifier (see [Identifier Types](#identifier-types) section)\n   - Returns: List of AI-inferred interest names as JSON\n\n4. `get_inferred_interests_by_email`\n   - Fetch AI-inferred interests for a Gravatar profile using an email address\n   - Required inputs:\n     - `email` (string): The email address associated with the Gravatar profile. Can be any valid email format - the system will automatically normalize and hash the email for lookup.\n   - Returns: List of AI-inferred interest names as JSON\n\n5. `get_avatar_by_id`\n   - Retrieve the avatar image for a Gravatar profile using an avatar identifier\n   - Required inputs:\n     - `avatarIdentifier` (string): An Avatar Identifier (see [Identifier Types](#identifier-types) section)\n   - Optional inputs:\n     - `size` (number, default: undefined): Desired avatar size in pixels (1-2048). Images are square, so this sets both width and height. Common sizes: 80 (default web), 200 (high-res web), 512 (large displays).\n     - `defaultOption` (string, default: undefined): Fallback image style when no avatar exists. Options: '404' (return HTTP 404 error instead of image), 'mp' (mystery person silhouette), 'identicon' (geometric pattern), 'monsterid' (generated monster), 'wavatar' (generated face), 'retro' (8-bit style), 'robohash' (robot), 'blank' (transparent).\n     - `forceDefault` (boolean, default: undefined): When true, always returns the default image instead of the user's avatar. Useful for testing default options or ensuring consistent placeholder images.\n     - `rating` (string, default: undefined): Maximum content rating to display. 'G' (general audiences), 'PG' (parental guidance), 'R' (restricted), 'X' (explicit). If user's avatar exceeds this rating, the default image is shown instead.\n   - Returns: Avatar image in PNG format\n\n6. `get_avatar_by_email`\n   - Retrieve the avatar image for a Gravatar profile using an email address\n   - Required inputs:\n     - `email` (string): The email address associated with the Gravatar profile. Can be any valid email format - the system will automatically normalize and hash the email for lookup.\n   - Optional inputs:\n     - `size` (number, default: undefined): Desired avatar size in pixels (1-2048). Images are square, so this sets both width and height. Common sizes: 80 (default web), 200 (high-res web), 512 (large displays).\n     - `defaultOption` (string, default: undefined): Fallback image style when no avatar exists. Options: '404' (return HTTP 404 error instead of image), 'mp' (mystery person silhouette), 'identicon' (geometric pattern), 'monsterid' (generated monster), 'wavatar' (generated face), 'retro' (8-bit style), 'robohash' (robot), 'blank' (transparent).\n     - `forceDefault` (boolean, default: undefined): When true, always returns the default image instead of the user's avatar. Useful for testing default options or ensuring consistent placeholder images.\n     - `rating` (string, default: undefined): Maximum content rating to display. 'G' (general audiences), 'PG' (parental guidance), 'R' (restricted), 'X' (explicit). If user's avatar exceeds this rating, the default image is shown instead.\n   - Returns: Avatar image in PNG format\n\n### Default Avatar Options\n\n- `404`: Return an HTTP 404 error instead of an image when no avatar exists\n- `mp`: (mystery-person) A simple, cartoon-style silhouetted outline of a person\n- `identicon`: A geometric pattern based on an email hash\n- `monsterid`: A generated 'monster' with different colors, faces, etc\n- `wavatar`: Generated faces with differing features and backgrounds\n- `retro`: Awesome generated, 8-bit arcade-style pixelated faces\n- `robohash`: A generated robot with different colors, faces, etc\n- `blank`: A transparent PNG image\n\n### Rating Options\n\n- `G`: Suitable for display on all websites with any audience type\n- `PG`: May contain rude gestures, provocatively dressed individuals, the lesser swear words, or mild violence\n- `R`: May contain harsh profanity, intense violence, nudity, or hard drug use\n- `X`: May contain sexual imagery or extremely disturbing violence\n\n## Setup\n\n### Gravatar API Key\n\nSome parts of the Gravatar API can be used without authentication. However, using an API key is recommended as it increases the rate limits for your queries. You can generate your own API key by visiting the [Developer Dashboard](https://gravatar.com/developers/).\n\nOnce you have your API key, you can configure it in Claude Desktop or VS Code as shown in the sections below.\n\n### Claude Desktop Configuration\n\nAdd the following to your `claude_desktop_config.json`:\n\n#### With API Key (Recommended)\n\n```json\n{\n  \"mcpServers\": {\n    \"gravatar\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@automattic/mcp-server-gravatar\"\n      ],\n      \"env\": {\n        \"GRAVATAR_API_KEY\": \"your-api-key-here\"\n      }\n    }\n  }\n}\n```\n\n#### Without API Key\n> [!NOTE]\n> - Without an API key, strict rate limits will be applied.\n> - A future release of this server may include tools that will only be available with an API key.\n\n```json\n{\n  \"mcpServers\": {\n    \"gravatar\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@automattic/mcp-server-gravatar\"\n      ]\n    }\n  }\n}\n```\n\n### VS Code Configuration\n\nFor manual installation, add one of the following JSON blocks to your User Settings (JSON) file in VS Code. You can do this by pressing `Cmd + Shift + P` (or `Ctrl + Shift + P` on Windows/Linux) and typing `Preferences: Open Settings (JSON)`.\n\n#### With API Key Input (Recommended)\n\nThis configuration prompts for an API key and stores it securely:\n\n```json\n{\n  \"mcp\": {\n    \"inputs\": [\n      {\n        \"type\": \"promptString\",\n        \"id\": \"gravatar_api_key\",\n        \"description\": \"Gravatar API Key (optional)\",\n        \"password\": true\n      }\n    ],\n    \"servers\": {\n      \"gravatar\": {\n        \"command\": \"npx\",\n        \"args\": [\"-y\", \"@automattic/mcp-server-gravatar\"],\n        \"env\": {\n          \"GRAVATAR_API_KEY\": \"${input:gravatar_api_key}\"\n        }\n      }\n    }\n  }\n}\n```\n\n#### Without API Key\n> [!NOTE]\n> - Without an API key, strict rate limits will be applied.\n> - A future release of this server may include tools that will only be available with an API key.\n\n```json\n{\n  \"mcp\": {\n    \"servers\": {\n      \"gravatar\": {\n        \"command\": \"npx\",\n        \"args\": [\"-y\", \"@automattic/mcp-server-gravatar\"]\n      }\n    }\n  }\n}\n```\n\nOptionally, you can add either configuration to a file called `.vscode/mcp.json` in your workspace. This will allow you to share the configuration with others.\n\n> Note that the `mcp` key is not needed in the `.vscode/mcp.json` file.\n\n### Building from Local Source Files\n\nIf you want to build and run the MCP server from local source files:\n\n```bash\n# Clone the repository\ngit clone https://github.com/Automattic/mcp-server-gravatar.git\ncd mcp-server-gravatar\n\n# Install dependencies\nnpm install\n```\n\nThe update your MCP Client configuration:\n\n```json\n{\n  \"mcpServers\": {\n    \"gravatar\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"/path/to/mcp-server-gravatar\"\n      ],\n      \"env\": {\n        \"GRAVATAR_API_KEY\": \"your-api-key-here\"\n      }\n    }\n  }\n}\n```\n\nOr witout an API Key:\n```json\n{\n  \"mcpServers\": {\n    \"gravatar\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"/path/to/mcp-server-gravatar\"\n      ]\n    }\n  }\n}\n```\n\n## Identifier Types\n\nThe Gravatar MCP server uses different types of identifiers to access profile and avatar data:\n\n### Profile Identifiers\n\nA **Profile Identifier** can be one of the following:\n\n1. **SHA256 Hash** (preferred): An email address that has been normalized (lower-cased and trimmed) and then hashed with SHA256\n2. **MD5 Hash** (deprecated): An email address that has been normalized (lower-cased and trimmed) and then hashed with MD5\n3. **URL Slug**: The username portion from a Gravatar profile URL (e.g., 'username' from gravatar.com/username)\n\n### Avatar Identifiers\n\nAn **Avatar Identifier** is an email address that has been normalized (lower-cased and trimmed) and then hashed with either:\n\n1. **SHA256** (preferred)\n2. **MD5** (deprecated)\n\n**Important**: Unlike Profile Identifiers, Avatar Identifiers cannot use URL slugs - only email hashes are supported.\n\n### Email Addresses\n\nWhen using email-based tools, you can provide any valid email format. The system will automatically:\n\n1. Normalize the email (convert to lowercase and trim whitespace)\n2. Generate the appropriate hash for API requests\n3. Process the email securely without storing it\n\n## Development\n\n### Using the Inspector\n\nThe MCP Inspector is a tool that helps validate your MCP server implementation. To run the inspector:\n\n```bash\nmake inspector\n```\n\nThis will build the project and then run the MCP Inspector against your server, validating the tools and their schemas.\n\n### Development Workflow\n\nStart the TypeScript compiler in watch mode:\n\n```bash\nmake dev\n```\n\nThis will watch for changes to your TypeScript files and automatically recompile them.\n\nTo run the server after compilation:\n\n```bash\nnpm start\n```\n\n### Testing\n\nRun the test suite:\n\n```bash\nnpm test\n```\n\nRun tests with coverage:\n\n```bash\nnpm run test:coverage\n```\n\nRun tests in watch mode:\n\n```bash\nnpm run test:watch\n```\n\n#### Multi-Node Testing\n\nThis project is tested against multiple Node.js versions to ensure compatibility. The CI pipeline automatically tests on:\n\n- **Node.js 20** (Active LTS)\n- **Node.js 22** (Current LTS)\n- **Node.js 24** (Current)\n\nTo test locally with different Node versions using nvm:\n\n```bash\n# Test with Node 20\nnvm use 20\nnpm ci\nnpm run type-check\nnpm test\n\n# Test with Node 22\nnvm use 22\nnpm ci\nnpm run type-check\nnpm test\n\n# Test with Node 24\nnvm use 24\nnpm ci\nnpm run type-check\nnpm test\n```\n\n### Generation System\n\nThis project uses a **Make-driven architecture** for all code generation with proper file-based dependencies:\n\n```bash\n# Generate everything (API client + MCP schemas)\nmake generate-all\n# OR\nnpm run generate-all\n\n# Generate just the OpenAPI client\nmake generate-client\n# OR  \nnpm run generate-client\n\n# Generate just the MCP schemas (requires client)\nmake generate-schemas\n# OR\nnpm run generate-schemas\n```\n\nThe schema generation is configured via `scripts/schemas.config.json` and supports:\n- **Configurable schema extraction** from OpenAPI models\n- **Array wrapping** for responses that need structured containers\n- **Clean output schemas** that match MCP specification exactly\n- **Automatic dependency tracking** via Make\n\n### Other Useful Commands\n\nThe project includes a Makefile with several useful commands:\n\n- `make download-spec`: Download the Gravatar OpenAPI spec\n- `make generate-client`: Generate Gravatar API client from OpenAPI spec\n- `make generate-schemas`: Generate MCP output schemas from API client\n- `make generate-all`: Generate API client and MCP schemas\n- `make build`: Build the TypeScript project\n- `make lint`: Run linting\n- `make lint-fix`: Run linting with auto-fix\n- `make format`: Format code with Prettier\n- `make format-check`: Check code formatting\n- `make quality-check`: Run linting and format checking\n- `make clean`: Clean build artifacts and dependencies\n\nRun `make help` to see all available commands.\n\n## Environment Variables\n\n- `GRAVATAR_API_KEY`: Optional API key for Gravatar API. If provided, it will be used for API requests, which increases rate limits and provides access to additional features.\n\n- `GRAVATAR_API_KEY_ENV_VAR`: Optional name of the environment variable that contains the API key. Default is `GRAVATAR_API_KEY`. This is useful if you need to use a different environment variable name in your deployment environment.\n\nWhen running the server locally, you can set these environment variables in your shell before starting the server:\n\n```bash\n# Set API key (recommended)\nexport GRAVATAR_API_KEY=your_api_key_here\n\n# Start the server\nnpm start\n```\n\nOr you can provide them inline when starting the server:\n\n```bash\nGRAVATAR_API_KEY=your_api_key_here npm start\n```\n\nWhen configuring the server in Claude Desktop or VS Code, you can set these environment variables in the configuration as shown in the Setup section above.\n\n## License\n\nThis MCP server is licensed under the Mozilla Public License Version 2.0 (MPL-2.0). This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MPL-2.0. For more details, please see the [LICENSE](LICENSE) file in the project repository.\n","readmeFilename":"README.md"}