Perfume Picks
Search the Perfume Picks fragrance database: 13,000+ scents with notes, dupes, and wear data.
Should I use this
Quality & Safety
Findings (3)
- LOWin find_dupes
- LOWin compare_fragrances
- LOWin what_to_wear_tonight
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"perfume-picks": {
"command": "npx",
"args": [
"perfume-picks-mcp"
]
}
}
}Runnable packages
1.0.2stdioRemote endpoints
https://jdkwlwyysgofljkobpmr.supabase.co/functions/v1/mcpstreamable-httphttps://mcp.perfumepicks.app/?src=registrystreamable-httpWhat it can do
Tool inventory
Tools (8)
🟢search_fragrances(query, brand, fragrance_family, gender, price_min, ...)
Full-text search across 13,000+ fragrances in the Perfume Picks database. Filter by brand, fragrance family, gender, and MSRP (USD). Returns note pyramids, accords, and community wear scores with source attribution.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"maxLength": 120,
"description": "Free-text search: fragrance or brand name"
},
"brand": {
"type": "string",
"maxLength": 200,
"description": "Brand name filter, e.g. 'Dior'"
},
"fragrance_family": {
"type": "string",
"maxLength": 120,
"description": "Family filter, e.g. 'woody', 'amber', 'fresh'"
},
"gender": {
"type": "string",
"enum": [
"masculine",
"feminine",
"unisex"
],
"description": "Marketed gender category of the fragrance; omit to include all"
},
"price_min": {
"type": "number",
"minimum": 0,
"description": "Minimum MSRP in USD"
},
"price_max": {
"type": "number",
"minimum": 0,
"description": "Maximum MSRP in USD"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 10,
"description": "Max results (default 10, max 10)"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_fragrance(slug_or_name)
Detailed record for one fragrance: full note pyramid (top/heart/base), accords, concentration, community longevity/sillage/compliment scores, and MSRP. Accepts a Perfume Picks slug or a name like 'Bleu de Chanel'.
Input Schema
{
"type": "object",
"properties": {
"slug_or_name": {
"type": "string",
"maxLength": 200,
"description": "Fragrance slug or name"
}
},
"required": [
"slug_or_name"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢find_dupes(fragrance)
Curated dupes for a fragrance — cheaper scents documented to smell like the original, with match percentage and price comparison. The answer to 'what smells like X without the price tag'.
Input Schema
{
"type": "object",
"properties": {
"fragrance": {
"type": "string",
"maxLength": 200,
"description": "Fragrance slug or name to find dupes for"
}
},
"required": [
"fragrance"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢find_similar(fragrance, limit)
Fragrances most similar to a given one, from Perfume Picks' precomputed similarity ranking over notes and accords.
Input Schema
{
"type": "object",
"properties": {
"fragrance": {
"type": "string",
"maxLength": 200,
"description": "Fragrance slug or name"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 10,
"description": "Max results (default 5)"
}
},
"required": [
"fragrance"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_recommendations(preferences, budget, occasion, gender, limit)
Personalized fragrance picks from note/accord preferences (e.g. 'vanilla', 'oud', 'citrus'), a budget in USD, an occasion ('office', 'date night', 'gift', 'signature scent'), and gender presentation.
Input Schema
{
"type": "object",
"properties": {
"preferences": {
"type": "array",
"items": {
"type": "string",
"maxLength": 60
},
"minItems": 1,
"maxItems": 20,
"description": "Notes or accords the wearer enjoys, e.g. ['vanilla','amber','rose']"
},
"budget": {
"type": "number",
"minimum": 0,
"description": "Max MSRP in USD"
},
"occasion": {
"type": "string",
"maxLength": 120,
"description": "What the fragrance is for"
},
"gender": {
"type": "string",
"enum": [
"masculine",
"feminine",
"unisex"
],
"description": "Marketed gender category of the fragrance; omit to include all"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 10,
"description": "Max results (default 5)"
}
},
"required": [
"preferences"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢compare_fragrances(fragrance_a, fragrance_b)
Side-by-side comparison: note pyramids, shared and distinct accords, longevity/sillage/compliment scores, concentration, and price difference.
Input Schema
{
"type": "object",
"properties": {
"fragrance_a": {
"type": "string",
"maxLength": 200,
"description": "First fragrance — slug or name"
},
"fragrance_b": {
"type": "string",
"maxLength": 200,
"description": "Second fragrance — slug or name"
}
},
"required": [
"fragrance_a",
"fragrance_b"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢trending_fragrances(limit)
Fragrances Perfume Picks users are adding to their wardrobes most over the last 30 days (falls back to catalog popularity when live activity data is unavailable). The method used is labeled in the response.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 10,
"description": "Max results (default 10, max 10)"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢what_to_wear_tonight(mood, occasion, season, gender)
A fragrance suggestion for right now, based on mood, occasion (e.g. 'date', 'office tomorrow', 'night out', 'cozy evening in'), and season — scored with Perfume Picks' community compliment, office-safety, and versatility data.
Input Schema
{
"type": "object",
"properties": {
"mood": {
"type": "string",
"maxLength": 120,
"description": "How you're feeling"
},
"occasion": {
"type": "string",
"maxLength": 120,
"description": "The setting"
},
"season": {
"type": "string",
"enum": [
"winter",
"spring",
"summer",
"fall"
],
"description": "Season to weight the pick toward — heavier, warmer scents in winter; fresher in summer"
},
"gender": {
"type": "string",
"enum": [
"masculine",
"feminine",
"unisex"
],
"description": "Marketed gender category of the fragrance; omit to include all"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Community
Evidence