15 read-only tools, each also a REST route. Every tool also takes locale and response_format (concise or detailed). MCP endpoint: https://mcp.10ml.com/mcp.
search_perfumes
Search perfumes and fragrances. Search the 10ML Fragrance Index for perfumes, colognes and fragrances (eau de parfum, eau de toilette, extrait) by name, house, notes, accords, family, audience, season, occasion or style. Natural language works: 'fresh citrus summer cologne for men' or 'warm vanilla scent for winter' is understood. Set iconic to true for only the editors' iconic, era-defining classics ('must-know perfumes for her', 'iconic winter scents'). Use when someone describes the scent they want, or names a perfume or house and you need matching fragrances. Not for the full profile of one known perfume (use get_perfume), not for 'something like X' (use find_similar_perfumes) and not for dupes or alternatives to a famous perfume (use find_perfume_alternatives). Returns ranked perfumes with house, year, family, accords, key notes, an editorial character line and 10ml.com links.
query(string, optional): Free text: a perfume name, house, notes or mood. Examples: "fresh citrus summer for men", "Tom Ford oud", "vanilla gourmand for winter"house(string, optional): Only perfumes from this house. Examples: "Dior", "Maison Francis Kurkdjian", "MFK", "YSL"notes_include(list of string, optional): Every listed note must be present. Examples: ["oud","sandalwood"], ["vanilla"]notes_exclude(list of string, optional): None of these notes may be present. Example: ["patchouli"]accords(list of string, optional): Accords that must be present. Examples: ["woody","sweet"], ["fresh","aquatic"]family(string, optional): Fragrance family. Examples: "chypre", "fougere", "gourmand", "amber", "citrus". Leave term empty in explain_perfume_term to list every family.gender(string, optional): Audience the perfume is marketed to. men and women also include unisex perfumes.season(string, optional): Season the perfume suits (fall is accepted in text queries as autumn).occasion(string, optional): Occasion the perfume suits.style(string, optional): A style word the scent should have.iconic(boolean, optional): true = only the editors' iconic, era-defining classics (works with every other filter, and without a query)limit(integer, optional, default 8): Results per page.cursor(string, optional): next_cursor from the previous page.response_format(string, optional, default "concise"): concise (default) or detailed (adds pyramid, seasons, occasions, longevity).locale(string, optional, default "en"): Language of the 10ml.com links and labels.
get_perfume
Get perfume profile. The full Fragrance Index profile of one perfume, cologne or fragrance: house, launch year, audience, concentration, family, accords, note pyramid (top, heart and base notes), best seasons and occasions, longevity, projection and perfumers (full profiles), the editors' character description, five similar perfumes, editorial alternatives from other houses when they exist, related 10ML guides and links. Use when you know which perfume is meant and need facts about it ('tell me about Aventus', 'what notes are in Delina', 'what does Baccarat Rouge 540 smell like'). Not for browsing (use search_perfumes), not for comparing two or more (use compare_perfumes). Unknown names return the closest matches.
perfume(string, required): A perfume by name, optionally with its house, e.g. "Baccarat Rouge 540", "Dior Sauvage", "Delina". An id from another tool also works, e.g. "creed-aventus".house(string, optional): House, when the name alone is ambiguous. Example: "Creed"response_format(string, optional, default "concise"): concise (default) or detailed (adds pyramid, seasons, occasions, longevity).locale(string, optional, default "en"): Language of the 10ml.com links and labels.
compare_perfumes
Compare perfumes. Compare 2 to 4 perfumes or colognes side by side: notes they share, notes only one has, accords, family, audience, launch year, longevity and projection, plus plain-language differences ('A is fresher, B is sweeter and lasts longer') and how close they are overall. Use when someone is choosing between named fragrances or asks how two differ ('Sauvage vs Bleu', 'Delina or Layton', 'Aventus or Layton for summer'). Not for finding perfumes like one (use find_similar_perfumes) and not for one perfume's details (use get_perfume).
perfumes(list of string, required): 2 to 4 perfumes, each a name with optional house or an id. Example: ["Dior Sauvage","Tom Ford Ombre Leather"]response_format(string, optional, default "concise"): concise (default) or detailed (adds pyramid, seasons, occasions, longevity).locale(string, optional, default "en"): Language of the 10ml.com links and labels.
find_similar_perfumes
Find similar perfumes. Find perfumes and colognes that smell like one the person already likes, ranked by shared notes, accords and style, each saying exactly what it shares and how close it is (very close, similar vibe, same spirit). Works from a perfume in the index (name and house, or id) OR from free notes/accords for any other fragrance. Steer the result: fresher, sweeter, darker, lighter, longer_lasting or more_projection. Use for 'something like Baccarat Rouge 540', 'smells like Sauvage but fresher' or 'a scent with saffron and cedar'. Not for editorial dupes of a famous perfume from other houses (use find_perfume_alternatives) and not for free-text discovery (use search_perfumes).
perfume(string, optional): A perfume by name, optionally with its house, e.g. "Baccarat Rouge 540", "Dior Sauvage", "Delina". Or pass an id from another tool.house(string, optional): House of the perfume when the name alone is ambiguous, e.g. "Maison Francis Kurkdjian"notes(list of string, optional): Known notes of the starting perfume, for perfumes outside the index. Example: ["jasmine","saffron","ambergris","cedar"]accords(list of string, optional): Known accords of the starting perfume. Example: ["amber","woody","sweet"]steer(string, optional): Move away from the starting point in one direction: fresher, sweeter, darker, lighter, longer_lasting (needs a perfume in the index) or more_projection (same).gender(string, optional): Only return perfumes for this audience (men and women include unisex)other_houses_only(boolean, optional, default false): True to leave out perfumes from the same house as the starting perfumelimit(integer, optional, default 8): Results per page.cursor(string, optional): next_cursor from the previous page.response_format(string, optional, default "concise"): concise (default) or detailed (adds pyramid, seasons, occasions, longevity).locale(string, optional, default "en"): Language of the 10ml.com links and labels.
find_perfume_alternatives
Find perfume alternatives. The editors' alternatives (dupes) to a famous perfume or cologne, from other houses: for each, why it is close and how close (very close, similar vibe, same spirit), plus the 10ML guide that compares them. Covers about 100 iconic originals such as Creed Aventus, Baccarat Rouge 540, Delina, Sauvage, Black Opium or Santal 33. For other fragrances in the index the closest options from different houses are computed from notes and accords. Use for 'dupe of X', 'alternative to X', 'what smells like X from another house'. Not for general similarity inside the index (use find_similar_perfumes) and not for free-text discovery (use search_perfumes).
perfume(string, required): The famous perfume to find alternatives for. Examples: "Creed Aventus", "Baccarat Rouge 540", "Delina"house(string, optional): House of the original when the name is ambiguous, e.g. "Parfums de Marly"closeness(string, optional): Only alternatives at this closenesslimit(integer, optional, default 6): Results per page.cursor(string, optional): next_cursor from the previous page.locale(string, optional, default "en"): Language of the 10ml.com links and labels.
recommend_perfumes
Recommend perfumes. Personal perfume and cologne recommendations from taste: fragrances they love or dislike, notes they like or avoid, plus gender, season, occasion, style and family. Every pick says why (shared notes with a loved perfume, a liked note, fits the season). Use when someone says what they enjoy or avoid and wants suggestions ('I love Delina and vanilla, nothing too sweet, for winter evenings', 'my signature scent is Sauvage, what next'). Not for one-off filters without taste (use search_perfumes), not for a single occasion list (use pick_for_occasion) and not for gifts (use find_gift).
likes(list of string, optional): Perfumes they love, e.g. ["Parfums de Marly Delina","Dior Sauvage"]dislikes(list of string, optional): Perfumes they dislike; similar ones are pushed downliked_notes(list of string, optional): Notes they enjoy, e.g. ["vanilla","bergamot"]avoided_notes(list of string, optional): Notes to exclude entirely, e.g. ["patchouli","oud"]gender(string, optional): Audience the perfume is marketed to. men and women also include unisex perfumes.season(string, optional): Season the perfume suits (fall is accepted in text queries as autumn).occasion(string, optional): Occasion the perfume suits.style(list of string, optional): Styles wanted, e.g. ["fresh","clean"]family(string, optional): A fragrance family or word like "woody" or "citrus"limit(integer, optional, default 6): Results per page.cursor(string, optional): next_cursor from the previous page.response_format(string, optional, default "concise"): concise (default) or detailed (adds pyramid, seasons, occasions, longevity).locale(string, optional, default "en"): Language of the 10ml.com links and labels.
perfumes_by_note
Perfumes by note. List the perfumes and colognes in the 10ML Fragrance Index built around a note or ingredient (vanilla, oud, bergamot, tonka bean, jasmine, patchouli, leather, sandalwood...), most prominent first, optionally only where the note sits in the top, heart or base, or for an audience, season or occasion. Spelling variants and other languages work (agarwood finds oud, Vanille finds vanilla). Use for 'perfumes with oud', 'a vanilla scent for winter' or 'bergamot-forward colognes for men'. Not for explaining what a note smells like (use explain_note) and not for several notes at once (use search_perfumes with notes_include).
note(string, required): The note. Examples: "oud", "vanilla", "pink pepper", "Vanille"position(string, optional, default "any"): Where the note sits in the pyramid: top, heart, base or anygender(string, optional): Audience the perfume is marketed to. men and women also include unisex perfumes.season(string, optional): Season the perfume suits (fall is accepted in text queries as autumn).occasion(string, optional): Occasion the perfume suits.limit(integer, optional, default 8): Results per page.cursor(string, optional): next_cursor from the previous page.response_format(string, optional, default "concise"): concise (default) or detailed (adds pyramid, seasons, occasions, longevity).locale(string, optional, default "en"): Language of the 10ml.com links and labels.
explain_note
Explain a fragrance note. Explain a fragrance note or perfume ingredient: what it smells like, its family and mood, where it comes from, which notes it pairs with, similar notes, famous perfumes where it leads and a link to the 10ML note page or guide when one exists. Covers about 285 notes in many spellings and languages. Use for 'what does ambroxan smell like', 'what is oud', 'what goes with bergamot', 'is iso e super a note'. Not for listing every perfume with the note (use perfumes_by_note) and not for general terms like EDP or sillage (use explain_perfume_term).
note(string, required): The note. Examples: "ambroxan", "oud", "sandalwood", "Bergamotte"response_format(string, optional, default "concise"): concise (default) or detailed (adds pyramid, seasons, occasions, longevity).locale(string, optional, default "en"): Language of the 10ml.com links and labels.
get_house
Get perfume house. Profile of a perfume house or fragrance brand: country, founded year, style (designer, niche, Middle Eastern, indie), what it is known for, its signature perfumes in the index and a link to explore it at 10ML. Understands nicknames (YSL, MFK, PDM, Paco Rabanne). Use for 'tell me about Creed', 'what is Amouage known for' or 'best Dior perfumes'. Not for browsing all houses (use list_houses) and not for one perfume (use get_perfume).
house(string, required): The house. Examples: "Creed", "YSL", "Maison Francis Kurkdjian", "Parfums de Marly"response_format(string, optional, default "concise"): concise (default) or detailed (adds pyramid, seasons, occasions, longevity).locale(string, optional, default "en"): Language of the 10ml.com links and labels.
list_houses
List perfume houses. Browse the perfume houses and fragrance brands in the 10ML Fragrance Index with country, type (designer, niche, middle-eastern, indie, celebrity), perfumes profiled and what each is known for. Filter by type, country or a name fragment. Use when someone wants to explore brands, find niche or Middle Eastern houses, or see which houses are covered. Not for one house's full profile (use get_house) and not for perfumes (use search_perfumes).
type(string, optional): Only houses of this typecountry(string, optional): Only houses from this country, e.g. "France", "Italy", "United Arab Emirates"query(string, optional): Part of a house name, e.g. "tom" or "maison"limit(integer, optional, default 20): Results per page.cursor(string, optional): next_cursor from the previous page.locale(string, optional, default "en"): Language of the 10ml.com links and labels.
explain_perfume_term
Explain a perfume term. Explain perfume vocabulary and fragrance families: concentrations (eau de cologne, eau de toilette, eau de parfum, extrait, elixir), sillage, projection, longevity, dry down, accord, top/heart/base notes, flanker, maceration, layering, niche vs designer, plus the 23 fragrance families (chypre, fougere, gourmand, oriental / amber...) with their key notes and example perfumes. Use for 'what is the difference between EDT and EDP', 'what is a chypre', 'what does sillage mean'. Leave term empty to list everything covered. Not for individual notes (use explain_note).
term(string, optional): A term or family. Examples: "EDP", "sillage", "chypre", "dry down", "fougere". Omit to list all terms.limit(integer, optional, default 12): Results per page.cursor(string, optional): next_cursor from the previous page.locale(string, optional, default "en"): Language of the 10ml.com links and labels.
suggest_layering
Suggest perfume layering. Perfume and fragrance layering ideas: which notes or perfumes combine well, what the combination smells like, how to spray (order, amount) and when it suits. Works from two notes ('vanilla and citrus'), one note (what it layers with), one perfume (partners from the index) or two perfumes (does this pair work). Editorial pairings are marked 'editors'; others are marked 'suggested' and should be tested on skin. Use for 'how do I layer vanilla', 'can I layer Delina with something', 'does Sauvage layer with Aventus'. Not for choosing a single perfume (use recommend_perfumes).
notes(list of string, optional): One or two notes. Examples: ["vanilla","citrus"], ["oud"]perfumes(list of string, optional): One or two perfumes. Examples: ["Parfums de Marly Delina"], ["Dior Sauvage","Creed Aventus"]limit(integer, optional, default 5): Results per page.response_format(string, optional, default "concise"): concise (default) or detailed (adds pyramid, seasons, occasions, longevity).locale(string, optional, default "en"): Language of the 10ml.com links and labels.
pick_for_occasion
Pick perfumes for an occasion. Perfume and cologne picks for a moment: a season, an occasion (daytime, office, casual, evening, date night, special occasion), an audience and a style, each with the reason it fits. Use for 'a fresh summer office scent for men', 'date night perfume for her' or 'what fragrance to wear to a winter wedding'. Give at least one of season, occasion, gender or style. Not for taste-based matching (use recommend_perfumes), not for gifts (use find_gift) and not for classics (use search_perfumes with iconic true).
season(string, optional): Season the perfume suits (fall is accepted in text queries as autumn).occasion(string, optional): Occasion the perfume suits.gender(string, optional): Audience the perfume is marketed to. men and women also include unisex perfumes.style(list of string, optional): Styles wanted, e.g. ["fresh","clean"] for summer office wearlimit(integer, optional, default 6): Results per page.cursor(string, optional): next_cursor from the previous page.response_format(string, optional, default "concise"): concise (default) or detailed (adds pyramid, seasons, occasions, longevity).locale(string, optional, default "en"): Language of the 10ml.com links and labels.
find_gift
Find a perfume gift. Perfume and fragrance gift ideas from who the gift is for: recipient (him, her or anyone), relationship, age range, perfumes or notes they already love, style, occasion and how adventurous to be. Each pick comes with the reason it suits them. Use for 'gift for a woman who loves Delina', 'something safe for my dad' or 'a bold present for a friend'. Not for personal taste recommendations (use recommend_perfumes) and not for classics lists (use search_perfumes with iconic true).
recipient(string, required): Who the gift is for: him (men and unisex), her (women and unisex) or anyone (unisex-friendly)relationship(string, optional): Example: "partner", "dad", "colleague", "friend"age_range(string, optional): Age range of the recipientloves(list of string, optional): Perfumes they already wear or love, e.g. ["Delina"]liked_notes(list of string, optional): Notes they like, e.g. ["vanilla","bergamot"]style(list of string, optional): Up to 3 style words for the scent they like, e.g. ["fresh", "woody"].occasion(string, optional): When they would wear it most, e.g. "office"boldness(string, optional, default "safe"): safe: crowd-pleasing classics; adventurous: distinctive niche pickslimit(integer, optional, default 5): Results per page.cursor(string, optional): next_cursor from the previous page.response_format(string, optional, default "concise"): concise (default) or detailed (adds pyramid, seasons, occasions, longevity).locale(string, optional, default "en"): Language of the 10ml.com links and labels.
search_guides
Search 10ML guides. Find 10ML's perfume and fragrance guides to read or cite: how-tos (where to spray, finding a signature scent, making perfume last), notes explained, house guides, lists, and alternatives guides that compare famous perfumes with similar ones from other houses. Returns title, type and a link per locale. Use whenever you want a source to cite or a deeper read ('how to layer perfume', 'best oud perfumes', 'Creed Aventus dupes guide'). Not for facts about a perfume (use get_perfume) and not for note definitions (use explain_note).
query(string, optional): What the guide is about. Examples: "how to make perfume last", "oud", "Creed Aventus dupes", "gift". Omit to browse.type(string, optional): how-to, list (rankings/comparisons), alternatives (dupes guides), note (a note explained), house (a house mapped)limit(integer, optional, default 8): Results per page.cursor(string, optional): next_cursor from the previous page.locale(string, optional, default "en"): Language of the 10ml.com links and labels.