Skip to main content
Glama

10ML Perfume Finder

Find similar perfumes

find_similar_perfumes
Read-onlyIdempotent

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).

Input Schema

NameRequiredDescriptionDefault
houseNoHouse of the perfume when the name alone is ambiguous, e.g. "Maison Francis Kurkdjian"
limitNoResults per page.
notesNoKnown notes of the starting perfume, for perfumes outside the index. Example: ["jasmine","saffron","ambergris","cedar"]
steerNoMove away from the starting point in one direction: fresher, sweeter, darker, lighter, longer_lasting (needs a perfume in the index) or more_projection (same).
cursorNonext_cursor from the previous page.
genderNoOnly return perfumes for this audience (men and women include unisex)
localeNoLanguage of the 10ml.com links and labels.en
accordsNoKnown accords of the starting perfume. Example: ["amber","woody","sweet"]
perfumeNoA perfume by name, optionally with its house, e.g. "Baccarat Rouge 540", "Dior Sauvage", "Delina". Or pass an id from another tool.
response_formatNoconcise (default) or detailed (adds pyramid, seasons, occasions, longevity).concise
other_houses_onlyNoTrue to leave out perfumes from the same house as the starting perfume

Output Schema

NameRequiredDescriptionDefault
totalYes
sourceYes
targetYes
messageNo
resultsYes
next_cursorNo
unrecognised_notesNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / locale / enum
      Previous value: -[
      -  "en",
      -  "de",
      -  "fr",
      -  "es",
      -  "it",
      -  "ro",
      -  "el",
      -  "hu",
      -  "cs",
      -  "pl",
      -  "nl"
      -]New value: +[
      +  "en",
      +  "de",
      +  "fr",
      +  "es",
      +  "it",
      +  "ro",
      +  "el",
      +  "hu",
      +  "cs",
      +  "pl",
      +  "nl",
      +  "pt",
      +  "sv",
      +  "da",
      +  "fi",
      +  "bg",
      +  "hr"
      +]
  2. Changed1 schema field changed
    • changedInput schema / properties / locale / enum
      Previous value: -[
      -  "en",
      -  "de",
      -  "fr",
      -  "es",
      -  "it",
      -  "ro",
      -  "el",
      -  "hu",
      -  "cs",
      -  "pl"
      -]New value: +[
      +  "en",
      +  "de",
      +  "fr",
      +  "es",
      +  "it",
      +  "ro",
      +  "el",
      +  "hu",
      +  "cs",
      +  "pl",
      +  "nl"
      +]
  3. Changed8 schema fields changed
    • changedInput schema / properties / cursor / description
      Previous value: -"next_cursor from the previous page; omit for the first page."New value: +"next_cursor from the previous page."
    • changedInput schema / properties / limit / description
      Previous value: -"How many results per page (1-15, default 8)."New value: +"Results per page."
    • changedInput schema / properties / locale / description
      Previous value: -"Language of the 10ml.com links and labels. Perfume, house and note names stay as they are."New value: +"Language of the 10ml.com links and labels."
    • changedInput schema / properties / response_format / description
      Previous value: -"concise (default) or detailed (adds note pyramid, seasons, occasions, longevity, projection)."New value: +"concise (default) or detailed (adds pyramid, seasons, occasions, longevity)."
    • removedOutput schema / properties / results / items / properties
      Removed value: -{
      -  "closeness": {
      -    "enum": [
      -      "very close",
      -      "similar vibe",
      -      "same spirit"
      -    ],
      -    "type": "string"
      -  },
      -  "perfume": {
      -    "properties": {
      -      "accords": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "character": {
      -        "type": "string"
      -      },
      -      "concentration": {
      -        "type": "string"
      -      },
      -      "family": {
      -        "type": "string"
      -      },
      -      "gender": {
      -        "enum": [
      -          "men",
      -          "women",
      -          "unisex"
      -        ],
      -        "type": "string"
      -      },
      -      "house": {
      -        "type": "string"
      -      },
      -      "id": {
      -        "type": "string"
      -      },
      -      "key_notes": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "links": {
      -        "items": {
      -          "properties": {
      -            "title": {
      -              "type": "string"
      -            },
      -            "type": {
      -              "enum": [
      -                "try",
      -                "guide",
      -                "note"
      -              ],
      -              "type": "string"
      -            },
      -            "url": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "type",
      -            "title",
      -            "url"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "longevity": {
      -        "type": "number"
      -      },
      -      "name": {
      -        "type": "string"
      -      },
      -      "occasions": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "other_versions": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "perfumers": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "profile": {
      -        "enum": [
      -          "full",
      -          "core"
      -        ],
      -        "type": "string"
      -      },
      -      "projection": {
      -        "type": "number"
      -      },
      -      "pyramid": {
      -        "properties": {
      -          "base": {
      -            "items": {
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          "heart": {
      -            "items": {
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          "top": {
      -            "items": {
      -              "type": "string"
      -            },
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "top",
      -          "heart",
      -          "base"
      -        ],
      -        "type": "object"
      -      },
      -      "seasons": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "styles": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "year": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "id",
      -      "name",
      -      "house",
      -      "gender",
      -      "family",
      -      "accords",
      -      "key_notes",
      -      "character",
      -      "links",
      -      "profile"
      -    ],
      -    "type": "object"
      -  },
      -  "shared_accords": {
      -    "items": {
      -      "type": "string"
      -    },
      -    "type": "array"
      -  },
      -  "shared_notes": {
      -    "items": {
      -      "type": "string"
      -    },
      -    "type": "array"
      -  },
      -  "why": {
      -    "type": "string"
      -  }
      -}
    • removedOutput schema / properties / results / items / required
      Removed value: -[
      -  "perfume",
      -  "closeness",
      -  "shared_notes",
      -  "shared_accords",
      -  "why"
      -]
    • removedOutput schema / properties / target / properties
      Removed value: -{
      -  "accords": {
      -    "items": {
      -      "type": "string"
      -    },
      -    "type": "array"
      -  },
      -  "house": {
      -    "type": [
      -      "string",
      -      "null"
      -    ]
      -  },
      -  "id": {
      -    "type": "string"
      -  },
      -  "in_index": {
      -    "type": "boolean"
      -  },
      -  "name": {
      -    "type": "string"
      -  },
      -  "notes": {
      -    "items": {
      -      "type": "string"
      -    },
      -    "type": "array"
      -  }
      -}
    • removedOutput schema / properties / target / required
      Removed value: -[
      -  "name",
      -  "house",
      -  "in_index",
      -  "notes",
      -  "accords"
      -]
  4. Changed15 schema fields changed
    • removedOutput schema / properties / message / description
      Removed value: -"Guidance when the result is empty, partial or needs a follow-up tool"
    • removedOutput schema / properties / next_cursor / description
      Removed value: -"Pass as cursor to get the next page; absent on the last page"
    • removedOutput schema / properties / results / items / properties / perfume / properties / accords / description
      Removed value: -"Main accords, strongest first"
    • removedOutput schema / properties / results / items / properties / perfume / properties / character / description
      Removed value: -"One-sentence description by 10ML's fragrance editors"
    • removedOutput schema / properties / results / items / properties / perfume / properties / family / description
      Removed value: -"Fragrance family, e.g. \"amber floral\""
    • removedOutput schema / properties / results / items / properties / perfume / properties / id / description
      Removed value: -"Stable Fragrance Index id, usable with get_perfume and find_similar_perfumes"
    • removedOutput schema / properties / results / items / properties / perfume / properties / key_notes / description
      Removed value: -"The defining notes (empty when no pyramid is published)"
    • removedOutput schema / properties / results / items / properties / perfume / properties / links / description
      Removed value: -"1-3 relevant 10ml.com links"
    • removedOutput schema / properties / results / items / properties / perfume / properties / links / items / properties / url / description
      Removed value: -"A 10ml.com link in the requested locale"
    • removedOutput schema / properties / results / items / properties / perfume / properties / longevity / description
      Removed value: -"1 (short) to 5 (very long)"
    • removedOutput schema / properties / results / items / properties / perfume / properties / other_versions / description
      Removed value: -"Ids of other concentrations or flankers of the same perfume in the index"
    • removedOutput schema / properties / results / items / properties / perfume / properties / projection / description
      Removed value: -"1 (skin scent) to 5 (fills a room)"
    • removedOutput schema / properties / results / items / properties / perfume / properties / year / description
      Removed value: -"Launch year when known"
    • removedOutput schema / properties / total / description
      Removed value: -"How many results matched in all"
    • removedOutput schema / properties / unrecognised_notes / description
      Removed value: -"Notes that are not in the index vocabulary and were ignored"
  5. Changed2 schema fields changed
    • addedOutput schema / properties / results / items / properties / perfume / properties / profile
      Added value: +{
      +  "enum": [
      +    "full",
      +    "core"
      +  ],
      +  "type": "string"
      +}
    • changedOutput schema / properties / results / items / properties / perfume / required
      Previous value: -[
      -  "id",
      -  "name",
      -  "house",
      -  "gender",
      -  "family",
      -  "accords",
      -  "key_notes",
      -  "character",
      -  "links"
      -]New value: +[
      +  "id",
      +  "name",
      +  "house",
      +  "gender",
      +  "family",
      +  "accords",
      +  "key_notes",
      +  "character",
      +  "links",
      +  "profile"
      +]
  6. Changed11 schema fields changed
    • removedInput schema / $schema
      Removed value: -"http://json-schema.org/draft-07/schema#"
    • changedInput schema / properties / cursor / description
      Previous value: -"Opaque cursor from a previous result's next_cursor, to fetch the next page. Omit for the first page."New value: +"next_cursor from the previous page; omit for the first page."
    • changedInput schema / properties / locale / description
      Previous value: -"Language of the 10ml.com links and fixed labels: en, de, fr, es, it, ro, el, hu, cs or pl. Perfume, house and note names are never translated."New value: +"Language of the 10ml.com links and labels. Perfume, house and note names stay as they are."
    • changedInput schema / properties / response_format / description
      Previous value: -"concise (default): the essentials, about a third of the size. detailed: adds the full note pyramid, seasons, occasions, longevity and projection."New value: +"concise (default) or detailed (adds note pyramid, seasons, occasions, longevity, projection)."
    • removedOutput schema / $schema
      Removed value: -"http://json-schema.org/draft-07/schema#"
    • removedOutput schema / additionalProperties
      Removed value: -false
    • removedOutput schema / properties / results / items / additionalProperties
      Removed value: -false
    • removedOutput schema / properties / results / items / properties / perfume / additionalProperties
      Removed value: -false
    • removedOutput schema / properties / results / items / properties / perfume / properties / links / items / additionalProperties
      Removed value: -false
    • removedOutput schema / properties / results / items / properties / perfume / properties / pyramid / additionalProperties
      Removed value: -false
    • removedOutput schema / properties / target / additionalProperties
      Removed value: -false
  7. Changed47 schema fields changed
    • addedInput schema / properties / accords
      Added value: +{
      +  "description": "Known accords of the starting perfume. Example: [\"amber\",\"woody\",\"sweet\"]",
      +  "items": {
      +    "maxLength": 40,
      +    "type": "string"
      +  },
      +  "maxItems": 6,
      +  "type": "array"
      +}
    • addedInput schema / properties / cursor
      Added value: +{
      +  "description": "Opaque cursor from a previous result's next_cursor, to fetch the next page. Omit for the first page.",
      +  "maxLength": 64,
      +  "type": "string"
      +}
    • changedInput schema / properties / gender / description
      Previous value: -"Only return perfumes for this audience (men/women include unisex)"New value: +"Only return perfumes for this audience (men and women include unisex)"
    • changedInput schema / properties / house / description
      Previous value: -"House of the perfume, e.g. \"Maison Francis Kurkdjian\""New value: +"House of the perfume when the name alone is ambiguous, e.g. \"Maison Francis Kurkdjian\""
    • removedInput schema / properties / id
      Removed value: -{
      -  "description": "Fragrance Index id of the perfume to match",
      -  "maxLength": 120,
      -  "type": "string"
      -}
    • addedInput schema / properties / limit / default
      Added value: +8
    • changedInput schema / properties / limit / description
      Previous value: -"How many results to return (1-10, default 8)."New value: +"How many results per page (1-15, default 8)."
    • changedInput schema / properties / limit / maximum
      Previous value: -10New value: +15
    • addedInput schema / properties / locale
      Added value: +{
      +  "default": "en",
      +  "description": "Language of the 10ml.com links and fixed labels: en, de, fr, es, it, ro, el, hu, cs or pl. Perfume, house and note names are never translated.",
      +  "enum": [
      +    "en",
      +    "de",
      +    "fr",
      +    "es",
      +    "it",
      +    "ro",
      +    "el",
      +    "hu",
      +    "cs",
      +    "pl"
      +  ],
      +  "type": "string"
      +}
    • removedInput schema / properties / name
      Removed value: -{
      -  "description": "Name of the perfume, e.g. \"Baccarat Rouge 540\"",
      -  "maxLength": 120,
      -  "type": "string"
      -}
    • changedInput schema / properties / notes / description
      Previous value: -"Known notes of the perfume (use when it is not in the index), e.g. [\"jasmine\",\"saffron\",\"ambergris\",\"cedar\"]"New value: +"Known notes of the starting perfume, for perfumes outside the index. Example: [\"jasmine\",\"saffron\",\"ambergris\",\"cedar\"]"
    • changedInput schema / properties / notes / maxItems
      Previous value: -40New value: +30
    • addedInput schema / properties / other_houses_only
      Added value: +{
      +  "default": false,
      +  "description": "True to leave out perfumes from the same house as the starting perfume",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / perfume
      Added value: +{
      +  "description": "A perfume by name, optionally with its house, e.g. \"Baccarat Rouge 540\", \"Dior Sauvage\", \"Delina\". Or pass an id from another tool.",
      +  "maxLength": 120,
      +  "type": "string"
      +}
    • addedInput schema / properties / response_format
      Added value: +{
      +  "default": "concise",
      +  "description": "concise (default): the essentials, about a third of the size. detailed: adds the full note pyramid, seasons, occasions, longevity and projection.",
      +  "enum": [
      +    "concise",
      +    "detailed"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / steer
      Added value: +{
      +  "description": "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).",
      +  "enum": [
      +    "fresher",
      +    "sweeter",
      +    "darker",
      +    "lighter",
      +    "longer_lasting",
      +    "more_projection"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / message / description
      Added value: +"Guidance when the result is empty, partial or needs a follow-up tool"
    • addedOutput schema / properties / next_cursor
      Added value: +{
      +  "description": "Pass as cursor to get the next page; absent on the last page",
      +  "type": "string"
      +}
    • removedOutput schema / properties / results / items / properties / accords
      Removed value: -{
      -  "description": "Main accords, strongest first",
      -  "items": {
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
    • removedOutput schema / properties / results / items / properties / character
      Removed value: -{
      -  "description": "One-sentence editorial description by 10ML's fragrance editors",
      -  "type": "string"
      -}
    • addedOutput schema / properties / results / items / properties / closeness
      Added value: +{
      +  "enum": [
      +    "very close",
      +    "similar vibe",
      +    "same spirit"
      +  ],
      +  "type": "string"
      +}
    • removedOutput schema / properties / results / items / properties / family
      Removed value: -{
      -  "description": "Fragrance family",
      -  "type": "string"
      -}
    • removedOutput schema / properties / results / items / properties / gender
      Removed value: -{
      -  "enum": [
      -    "men",
      -    "women",
      -    "unisex"
      -  ],
      -  "type": "string"
      -}
    • removedOutput schema / properties / results / items / properties / guideUrl
      Removed value: -{
      -  "description": "A 10ML guide about this perfume",
      -  "type": "string"
      -}
    • removedOutput schema / properties / results / items / properties / house
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / results / items / properties / houseUrl
      Removed value: -{
      -  "description": "The house page on 10ml.com",
      -  "type": "string"
      -}
    • removedOutput schema / properties / results / items / properties / id
      Removed value: -{
      -  "description": "Stable Fragrance Index identifier, usable with get_perfume and find_similar_perfumes",
      -  "type": "string"
      -}
    • removedOutput schema / properties / results / items / properties / keyNotes
      Removed value: -{
      -  "description": "The defining notes",
      -  "items": {
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
    • removedOutput schema / properties / results / items / properties / name
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / results / items / properties / perfume
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "accords": {
      +      "description": "Main accords, strongest first",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "character": {
      +      "description": "One-sentence description by 10ML's fragrance editors",
      +      "type": "string"
      +    },
      +    "concentration": {
      +      "type": "string"
      +    },
      +    "family": {
      +      "description": "Fragrance family, e.g. \"amber floral\"",
      +      "type": "string"
      +    },
      +    "gender": {
      +      "enum": [
      +        "men",
      +        "women",
      +        "unisex"
      +      ],
      +      "type": "string"
      +    },
      +    "house": {
      +      "type": "string"
      +    },
      +    "id": {
      +      "description": "Stable Fragrance Index id, usable with get_perfume and find_similar_perfumes",
      +      "type": "string"
      +    },
      +    "key_notes": {
      +      "description": "The defining notes (empty when no pyramid is published)",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "links": {
      +      "description": "1-3 relevant 10ml.com links",
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "title": {
      +            "type": "string"
      +          },
      +          "type": {
      +            "enum": [
      +              "try",
      +              "guide",
      +              "note"
      +            ],
      +            "type": "string"
      +          },
      +          "url": {
      +            "description": "A 10ml.com link in the requested locale",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "type",
      +          "title",
      +          "url"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "longevity": {
      +      "description": "1 (short) to 5 (very long)",
      +      "type": "number"
      +    },
      +    "name": {
      +      "type": "string"
      +    },
      +    "occasions": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "other_versions": {
      +      "description": "Ids of other concentrations or flankers of the same perfume in the index",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "perfumers": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "projection": {
      +      "description": "1 (skin scent) to 5 (fills a room)",
      +      "type": "number"
      +    },
      +    "pyramid": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "base": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "heart": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "top": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        }
      +      },
      +      "required": [
      +        "top",
      +        "heart",
      +        "base"
      +      ],
      +      "type": "object"
      +    },
      +    "seasons": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "styles": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "year": {
      +      "description": "Launch year when known",
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "id",
      +    "name",
      +    "house",
      +    "gender",
      +    "family",
      +    "accords",
      +    "key_notes",
      +    "character",
      +    "links"
      +  ],
      +  "type": "object"
      +}
    • removedOutput schema / properties / results / items / properties / sharedAccords
      Removed value: -{
      -  "items": {
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
    • removedOutput schema / properties / results / items / properties / sharedNotes
      Removed value: -{
      -  "items": {
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
    • addedOutput schema / properties / results / items / properties / shared_accords
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / results / items / properties / shared_notes
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • removedOutput schema / properties / results / items / properties / url
      Removed value: -{
      -  "description": "\"Try it at 10ML\": find this perfume on 10ml.com",
      -  "type": "string"
      -}
    • addedOutput schema / properties / results / items / properties / why
      Added value: +{
      +  "type": "string"
      +}
    • removedOutput schema / properties / results / items / properties / year
      Removed value: -{
      -  "description": "Launch year",
      -  "type": "number"
      -}
    • changedOutput schema / properties / results / items / required
      Previous value: -[
      -  "id",
      -  "name",
      -  "house",
      -  "gender",
      -  "family",
      -  "accords",
      -  "keyNotes",
      -  "character",
      -  "url",
      -  "sharedNotes",
      -  "sharedAccords"
      -]New value: +[
      +  "perfume",
      +  "closeness",
      +  "shared_notes",
      +  "shared_accords",
      +  "why"
      +]
    • addedOutput schema / properties / source
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / target / properties / accords
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • removedOutput schema / properties / target / properties / inIndex
      Removed value: -{
      -  "type": "boolean"
      -}
    • addedOutput schema / properties / target / properties / in_index
      Added value: +{
      +  "type": "boolean"
      +}
    • removedOutput schema / properties / target / properties / url
      Removed value: -{
      -  "type": "string"
      -}
    • changedOutput schema / properties / target / required
      Previous value: -[
      -  "name",
      -  "house",
      -  "inIndex",
      -  "notes"
      -]New value: +[
      +  "name",
      +  "house",
      +  "in_index",
      +  "notes",
      +  "accords"
      +]
    • addedOutput schema / properties / total
      Added value: +{
      +  "description": "How many results matched in all",
      +  "type": "number"
      +}
    • addedOutput schema / properties / unrecognised_notes
      Added value: +{
      +  "description": "Notes that are not in the index vocabulary and were ignored",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "target",
      -  "results"
      -]New value: +[
      +  "total",
      +  "target",
      +  "results",
      +  "source"
      +]
  8. Changed34 schema fields changed
    • changedInput schema / properties / gender / description
      Previous value: -"Only return perfumes suitable for this audience"New value: +"Only return perfumes for this audience (men/women include unisex)"
    • removedInput schema / properties / handle
      Removed value: -{
      -  "description": "10ML handle of the perfume to match",
      -  "maxLength": 120,
      -  "type": "string"
      -}
    • addedInput schema / properties / id
      Added value: +{
      +  "description": "Fragrance Index id of the perfume to match",
      +  "maxLength": 120,
      +  "type": "string"
      +}
    • changedInput schema / properties / notes / description
      Previous value: -"Known notes of the perfume (use when it is not in the 10ML catalogue), e.g. [\"jasmine\",\"saffron\",\"ambergris\",\"cedar\"]"New value: +"Known notes of the perfume (use when it is not in the index), e.g. [\"jasmine\",\"saffron\",\"ambergris\",\"cedar\"]"
    • addedOutput schema / properties / results / items / properties / accords
      Added value: +{
      +  "description": "Main accords, strongest first",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • removedOutput schema / properties / results / items / properties / bestseller
      Removed value: -{
      -  "type": "boolean"
      -}
    • addedOutput schema / properties / results / items / properties / character
      Added value: +{
      +  "description": "One-sentence editorial description by 10ML's fragrance editors",
      +  "type": "string"
      +}
    • removedOutput schema / properties / results / items / properties / currency
      Removed value: -{
      -  "const": "EUR",
      -  "type": "string"
      -}
    • addedOutput schema / properties / results / items / properties / family
      Added value: +{
      +  "description": "Fragrance family",
      +  "type": "string"
      +}
    • removedOutput schema / properties / results / items / properties / fromPrice
      Removed value: -{
      -  "description": "The same price formatted for display, e.g. \"€11.88\"",
      -  "type": "string"
      -}
    • removedOutput schema / properties / results / items / properties / fromPriceEur
      Removed value: -{
      -  "description": "Price of the smallest size in EUR including VAT",
      -  "type": "number"
      -}
    • removedOutput schema / properties / results / items / properties / gender / anyOf
      Removed value: -[
      -  {
      -    "enum": [
      -      "men",
      -      "women",
      -      "unisex"
      -    ],
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / results / items / properties / gender / enum
      Added value: +[
      +  "men",
      +  "women",
      +  "unisex"
      +]
    • addedOutput schema / properties / results / items / properties / gender / type
      Added value: +"string"
    • addedOutput schema / properties / results / items / properties / guideUrl
      Added value: +{
      +  "description": "A 10ML guide about this perfume",
      +  "type": "string"
      +}
    • removedOutput schema / properties / results / items / properties / handle
      Removed value: -{
      -  "description": "Stable 10ML identifier, usable with get_perfume",
      -  "type": "string"
      -}
    • addedOutput schema / properties / results / items / properties / houseUrl
      Added value: +{
      +  "description": "The house page on 10ml.com",
      +  "type": "string"
      +}
    • addedOutput schema / properties / results / items / properties / id
      Added value: +{
      +  "description": "Stable Fragrance Index identifier, usable with get_perfume and find_similar_perfumes",
      +  "type": "string"
      +}
    • removedOutput schema / properties / results / items / properties / imageUrl
      Removed value: -{
      -  "type": [
      -    "string",
      -    "null"
      -  ]
      -}
    • addedOutput schema / properties / results / items / properties / keyNotes
      Added value: +{
      +  "description": "The defining notes",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • removedOutput schema / properties / results / items / properties / newRelease
      Removed value: -{
      -  "type": "boolean"
      -}
    • removedOutput schema / properties / results / items / properties / notes
      Removed value: -{
      -  "items": {
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
    • removedOutput schema / properties / results / items / properties / onSale
      Removed value: -{
      -  "type": "boolean"
      -}
    • removedOutput schema / properties / results / items / properties / rating
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "additionalProperties": false,
      -      "properties": {
      -        "count": {
      -          "type": "number"
      -        },
      -        "value": {
      -          "type": "number"
      -        }
      -      },
      -      "required": [
      -        "value",
      -        "count"
      -      ],
      -      "type": "object"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ]
      -}
    • addedOutput schema / properties / results / items / properties / sharedAccords
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • removedOutput schema / properties / results / items / properties / sizesMl
      Removed value: -{
      -  "description": "Decant sizes in ml available at 10ML",
      -  "items": {
      -    "type": "number"
      -  },
      -  "type": "array"
      -}
    • changedOutput schema / properties / results / items / properties / url / description
      Previous value: -"Product page on 10ml.com"New value: +"\"Try it at 10ML\": find this perfume on 10ml.com"
    • addedOutput schema / properties / results / items / properties / year
      Added value: +{
      +  "description": "Launch year",
      +  "type": "number"
      +}
    • changedOutput schema / properties / results / items / required
      Previous value: -[
      -  "handle",
      -  "name",
      -  "house",
      -  "gender",
      -  "fromPriceEur",
      -  "fromPrice",
      -  "currency",
      -  "sizesMl",
      -  "notes",
      -  "rating",
      -  "bestseller",
      -  "newRelease",
      -  "onSale",
      -  "url",
      -  "imageUrl",
      -  "sharedNotes"
      -]New value: +[
      +  "id",
      +  "name",
      +  "house",
      +  "gender",
      +  "family",
      +  "accords",
      +  "keyNotes",
      +  "character",
      +  "url",
      +  "sharedNotes",
      +  "sharedAccords"
      +]
    • removedOutput schema / properties / target / properties / handle
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / target / properties / id
      Added value: +{
      +  "type": "string"
      +}
    • removedOutput schema / properties / target / properties / inCatalogue
      Removed value: -{
      -  "type": "boolean"
      -}
    • addedOutput schema / properties / target / properties / inIndex
      Added value: +{
      +  "type": "boolean"
      +}
    • changedOutput schema / properties / target / required
      Previous value: -[
      -  "name",
      -  "house",
      -  "inCatalogue",
      -  "notes"
      -]New value: +[
      +  "name",
      +  "house",
      +  "inIndex",
      +  "notes"
      +]
  9. First observed

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety bar is low. The description nonetheless adds real behavioral context: results are ranked by shared notes/accords/style, each carries an explicit explanation and a closeness tier (very close, similar vibe, same spirit), and steering is supported. It omits pagination behavior, but cursor is documented in the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core verb and result semantics, then entry modes, then steering, then exclusions with siblings — a sensible precedence. Dense with parentheticals and closeness tiers, but essentially every clause carries decision-relevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter tool this is complete: entry modes, steering directions, audience/house filtering intent, and routing to alternatives are all covered, and an output schema exists so return-value detail need not be restated. An agent has everything needed to select and invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so a 3 is the baseline, but the description adds meaning beyond the schema: the dual entry path (an indexed perfume by name/house/id OR free notes and accords for any other fragrance) and the directional intent of steer. That resolves how the otherwise-optional parameters combine, which the schema alone does not convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (find perfumes/colognes that smell like one the person already likes) plus the ranking basis and output semantics, and explicitly names the two siblings it is not (find_perfume_alternatives, search_perfumes). An agent can distinguish it from all 14 siblings without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete when-to-use examples ('something like Baccarat Rouge 540', 'smells like Sauvage but fresher') and explicit when-not to use it with the correct alternative tool for each case. Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources