Skip to main content
Glama

10ML Perfume Finder

Server Details

Search 10ML's perfume decant catalogue, compare notes and find similar original perfumes.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.9/5.0

Scored across 6 tools

Disambiguation3/5

Most tools have recognizable purposes, but search_perfumes overlaps heavily with perfumes_by_note, list_houses, trending_perfumes, and even find_similar_perfumes because its broad natural-language query can answer many of the same requests. The specialized tools provide structured outputs, but an agent could reasonably choose several tools for the same query.

Naming Consistency3/5

The names are all snake_case and readable, but they mix verb_noun patterns (find_similar_perfumes, get_perfume, list_houses, search_perfumes) with noun-phrase patterns (perfumes_by_note, trending_perfumes). This is understandable but not a fully predictable convention.

Tool Count5/5

Six tools is a well-scoped set for a perfume discovery server, and each tool maps to a meaningful browsing or retrieval mode. The count is neither thin nor bloated.

Completeness4/5

The surface covers search, detailed profiles, similar-perfume discovery, houses, notes, and editorially trending perfumes, which is strong coverage for a read-only fragrance index. Minor gaps exist, such as no dedicated house-detail or note-index tool, but agents can work around them via search and list_houses.

Available Tools

6 tools
find_similar_perfumesFind similar perfumesA
Read-onlyIdempotent
Inspect

Find perfumes similar to one someone already likes, ranked by shared notes and accords, each listing exactly what it shares. Use whenever someone asks for something like a famous perfume, an alternative to it or a perfume in the same spirit ("similar to Baccarat Rouge 540", "something like Dior Sauvage"). Works for perfumes in the Fragrance Index (name + house, or id) and, via the optional notes list, for any other perfume.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoFragrance Index id of the perfume to match
nameNoName of the perfume, e.g. "Baccarat Rouge 540"
houseNoHouse of the perfume, e.g. "Maison Francis Kurkdjian"
limitNoHow many results to return (1-10, default 8).
notesNoKnown notes of the perfume (use when it is not in the index), e.g. ["jasmine","saffron","ambergris","cedar"]
genderNoOnly return perfumes for this audience (men/women include unisex)

Output Schema

ParametersJSON Schema
NameRequiredDescription
targetYes
messageNo
resultsYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), lowering the bar. The description still adds genuine behavioral context: results are ranked by shared notes and accords and explicitly enumerate what they share. It does not cover pagination or failure behavior, but the added ranking/output context is meaningful.

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

Conciseness5/5

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

Three tightly written sentences, front-loaded with the core action and immediately followed by usage triggers and scope. Each sentence carries distinct information with no filler or repetition of the schema.

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?

An output schema exists, so return-value details need not be restated. The description covers what the tool does, when to invoke it, the ranking behavior, and the two input modes, leaving nothing essential for correct invocation missing.

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 the baseline is 3. The description adds value by explaining how the parameters relate: 'name + house, or id' for indexed perfumes, and the optional 'notes' list as the mechanism for matching perfumes outside the index — context the schema fields do not convey on their own.

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 and resource ('find perfumes similar to one someone already likes') and further specifies the ranking basis (shared notes and accords) and the shape of each result ('listing exactly what it shares'). This clearly distinguishes it from siblings like search_perfumes or perfumes_by_note.

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?

'Use whenever someone asks for something like a famous perfume, an alternative to it or a perfume in the same spirit' gives explicit trigger conditions, reinforced by concrete user phrasings ('similar to Baccarat Rouge 540'). It also routes input modes: index perfumes via name+house or id, and non-index perfumes via the optional notes list.

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

get_perfumeGet perfume profileA
Read-onlyIdempotent
Inspect

The full Fragrance Index profile of one perfume: house, launch year, audience, family, accords, top/heart/base notes, best seasons and occasions, an editorial character description, the house's country and style, and links to 10ML guides, note pages and the "Try it at 10ML" page. Give the id returned by other tools, or the name and house ("Aventus", "Creed"). Closest matches are suggested when the name is not found.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoFragrance Index id, e.g. "creed-aventus"
nameNoPerfume name, e.g. "Aventus" (the house may be included, e.g. "Creed Aventus")
houseNoPerfume house, e.g. "Creed"

Output Schema

ParametersJSON Schema
NameRequiredDescription
exactYesFalse when this is a closest-match guess
foundYes
messageNo
perfumeNo
suggestionsNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world behavior, so the safety profile is covered. The description adds genuine behavioral context beyond them: that missing names resolve to fuzzy suggested matches rather than an error, and that ids are meant to be carried over from other tools. It does not mention truncation or rate limits, but none are implied here.

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?

Two sentences, front-loaded with what the tool returns and followed by how to call it; the field enumeration is long but functional rather than padding. Minor redundancy: much of the returned-field list restates the output schema, though it usefully signals breadth.

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?

With an output schema present, the description need not define return values, yet it still signals their scope so the agent can judge whether a full fetch is warranted. Inputs, identifier sourcing and the no-match fallback are all covered, leaving nothing an agent needs in order to call it 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 coverage is 100%, so per-parameter meaning is already documented and baseline is 3. The description adds real value beyond that by conveying the intended combination strategy — prefer the id from another tool, otherwise supply name plus house — and noting that name may itself embed the house ("Creed Aventus"), which is not spelled out as an accepted form in a clearly equivalent way.

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+resource ("full Fragrance Index profile of one perfume") and enumerates exactly what the profile contains, so an agent knows the payload shape before opening anything. It is clearly distinguishable from siblings like search_perfumes, perfumes_by_note and find_similar_perfumes, which are discovery tools rather than detail lookups.

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

Usage Guidelines4/5

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

Explicitly says how to invoke it: "Give the id returned by other tools, or the name and house", which routes the agent correctly after calling search_perfumes. It also documents the not-found fallback (closest matches suggested) but does not name an alternative tool to use when a lookup fails or when the agent has no id, so it stops short of a full when/when-not statement.

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

list_housesList perfume housesA
Read-onlyIdempotent
Inspect

List the perfume houses in the 10ML Fragrance Index with country, style (designer, niche or Middle Eastern), a short description and signature perfumes, plus links to 10ML house pages and guides. Use to explore a house or browse by brand.

ParametersJSON Schema
NameRequiredDescriptionDefault
styleNoOnly houses of this style

Output Schema

ParametersJSON Schema
NameRequiredDescription
totalYes
housesYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is fully covered. The description's added value is naming the content returned, but since an output schema exists it doesn't disclose anything behavioral beyond that.

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?

Two sentences, front-loaded with the resource and its contents, with the field list doing useful work. The trailing usage clause is slightly thin but not wasteful.

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

Completeness4/5

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

With a complete output schema, full annotation coverage and a single optional parameter, the description supplies enough for an agent to call this correctly. The only shortfall is the absent filtering guidance, which is minor given the zero-required-parameter, enum-typed schema.

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

Parameters3/5

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

Schema description coverage is 100% and the single optional enum param is self-documenting, so the baseline is 3. The description mentions the style values only as returned data, not as a filter, so it adds nothing about how to constrain results.

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 (List) and resource (perfume houses in the 10ML Fragrance Index), and enumerates the returned fields (country, style, description, signature perfumes, links). The resource is unmistakably distinct from every sibling, all of which operate on perfumes rather than houses.

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

Usage Guidelines3/5

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

"Use to explore a house or browse by brand" gives a stated purpose but no explicit when-not-to-use guidance and never mentions how the style filter should be used to narrow the list. Usage is implied rather than specified, and no alternative tool is named.

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

perfumes_by_notePerfumes by noteA
Read-onlyIdempotent
Inspect

Explain a fragrance note (vanilla, oud, bergamot, tonka bean, rose, iris, leather, sandalwood...) with its family and what it smells like, and list the perfumes in the 10ML Fragrance Index built around it, optionally for men, women or unisex. Spelling variants work (agarwood finds oud, orris finds iris). Use for "perfumes with oud", "what does vetiver smell like" or "a vanilla scent".

ParametersJSON Schema
NameRequiredDescriptionDefault
noteYesThe note, e.g. "oud", "vanilla", "pink pepper"
limitNoHow many results to return (1-20, default 8).
genderNoWho the perfume is marketed for. men/women also include unisex perfumes.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
totalYes
messageNo
profileNo
resultsYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover read-only/idempotent/closed-world safety, so the bar is lower; the description still adds real context by scoping results to the "10ML Fragrance Index" corpus and disclosing spelling-variant normalization (agarwood→oud, orris→iris). No disclosure of result ordering beyond the schema's limit, which keeps it from a 5.

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?

Purpose and scope are front-loaded in the first clause, followed by normalization behavior and examples. It runs slightly long as a single dense sentence but every clause (corpus scope, variants, gender option, examples) carries information an agent needs.

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?

With an output schema present it needn't describe returns, and annotations carry the safety profile. The description covers scope, normalization, gender filtering, and example queries, leaving nothing an agent needs in order to call it 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 coverage is 100%, so the baseline is 3, but the description adds meaning beyond it: example note values (vanilla, oud, bergamot, tonka bean, rose, iris, leather, sandalwood) and the fuzzy-match behavior for spelling variants. The gender semantics (men/women include unisex) are already carried by the schema.

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

Purpose4/5

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

States a specific verb+resource pair: explain a note (its family and smell) and list perfumes built around it. The note-first framing is clearly different from a generic text search, but the description never names search_perfumes or the other siblings, so the distinction must be inferred.

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

Usage Guidelines4/5

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

Gives concrete usage contexts ("perfumes with oud", "what does vetiver smell like", "a vanilla scent"), which is strong positive guidance. It stops short of explicit when-not-to-use or a named alternative (e.g. use search_perfumes for free-text browsing).

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

search_perfumesSearch perfumesA
Read-onlyIdempotent
Inspect

Search the 10ML Fragrance Index, expert perfume profiles curated by 10ML's fragrance editors. Use for any perfume question: a name ("Creed Aventus"), a house, a note ("oud"), a mood ("fresh citrus summer scent"), an audience, a season or an occasion. Natural language works: gender, season and occasion words inside the query are understood. Returns perfumes with house, year, family, accords, key notes, an editorial character line and links to 10ml.com.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoRestrict to perfumes containing a note, e.g. "oud", "tonka bean", "bergamot"
houseNoRestrict to one perfume house, e.g. "Dior", "Maison Francis Kurkdjian"
limitNoHow many results to return (1-20, default 8).
queryNoFree text: perfume name, house, notes, mood. e.g. "fresh citrus summer for men", "oud", "vanilla gourmand for winter"
familyNoRestrict to a fragrance family: Citrus, Aquatic, Green, Aromatic Fougère, Floral, Fruity Floral, Floral Amber, Chypre, Woody, Woody Spicy, Amber, Amber Vanilla, Gourmand, Leather, Musky
genderNoWho the perfume is marketed for. men/women also include unisex perfumes.
seasonNo
occasionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
totalYesHow many perfumes matched in all
filtersYesThe filters that were applied, including ones read from the query
messageNo
relaxedYesTrue when no perfume matched every word and partial matches are shown
resultsYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/openWorld=false, so safety is covered. The description adds genuine behavioral context: the corpus is editorially curated (not an exhaustive catalog) and free-text queries are semantically interpreted rather than keyword-matched.

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-loads the corpus identity, then the usage scope, then the return shape; every clause carries information. The final return-value sentence is somewhat long given a separate output schema already exists.

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

Completeness4/5

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

Complete enough for an eight-parameter, zero-required search tool: the agent knows the corpus, the accepted query dimensions and the natural-language behavior. The return-field enumeration is partly redundant against the output schema but does no harm.

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

Parameters3/5

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

Schema coverage is 75% and each parameter carries its own description, so the schema does most of the work. The one real addition is that gender/season/occasion words embedded in the free-text query are understood, which explains how 'query' interacts with the enum filters — useful but narrow.

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

Purpose4/5

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

States a specific verb and resource ('Search the 10ML Fragrance Index, expert perfume profiles') and enumerates the query dimensions it accepts. It is clearly distinguishable from get_perfume or list_houses, though it never names a sibling to sharpen the boundary.

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

Usage Guidelines4/5

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

Gives explicit context for use ('Use for any perfume question') with concrete query-shape examples (name, house, note, mood, audience, season, occasion). There are no exclusions or alternative routing hints, so an agent must infer when to prefer perfumes_by_note or find_similar_perfumes.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updates
    • Changedfind_similar_perfumes34 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"
        +]
    • Changedget_perfume55 fields changed
      • removedInput schema / properties / handle
        Removed value: -{
        -  "description": "10ML handle, e.g. \"creed-aventus\"",
        -  "maxLength": 120,
        -  "type": "string"
        -}
      • addedInput schema / properties / id
        Added value: +{
        +  "description": "Fragrance Index id, e.g. \"creed-aventus\"",
        +  "maxLength": 120,
        +  "type": "string"
        +}
      • addedOutput schema / properties / perfume / properties / accords
        Added value: +{
        +  "description": "Main accords, strongest first",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • removedOutput schema / properties / perfume / properties / allNotes
        Removed value: -{
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • removedOutput schema / properties / perfume / properties / bestseller
        Removed value: -{
        -  "type": "boolean"
        -}
      • addedOutput schema / properties / perfume / properties / character
        Added value: +{
        +  "description": "One-sentence editorial description by 10ML's fragrance editors",
        +  "type": "string"
        +}
      • removedOutput schema / properties / perfume / properties / currency
        Removed value: -{
        -  "const": "EUR",
        -  "type": "string"
        -}
      • addedOutput schema / properties / perfume / properties / family
        Added value: +{
        +  "description": "Fragrance family",
        +  "type": "string"
        +}
      • removedOutput schema / properties / perfume / properties / fromPrice
        Removed value: -{
        -  "description": "The same price formatted for display, e.g. \"€11.88\"",
        -  "type": "string"
        -}
      • removedOutput schema / properties / perfume / properties / fromPriceEur
        Removed value: -{
        -  "description": "Price of the smallest size in EUR including VAT",
        -  "type": "number"
        -}
      • removedOutput schema / properties / perfume / properties / gender / anyOf
        Removed value: -[
        -  {
        -    "enum": [
        -      "men",
        -      "women",
        -      "unisex"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / perfume / properties / gender / enum
        Added value: +[
        +  "men",
        +  "women",
        +  "unisex"
        +]
      • addedOutput schema / properties / perfume / properties / gender / type
        Added value: +"string"
      • addedOutput schema / properties / perfume / properties / guideUrl
        Added value: +{
        +  "description": "A 10ML guide about this perfume",
        +  "type": "string"
        +}
      • removedOutput schema / properties / perfume / properties / handle
        Removed value: -{
        -  "description": "Stable 10ML identifier, usable with get_perfume",
        -  "type": "string"
        -}
      • addedOutput schema / properties / perfume / properties / houseInfo
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "country": {
        +      "type": "string"
        +    },
        +    "description": {
        +      "type": "string"
        +    },
        +    "name": {
        +      "type": "string"
        +    },
        +    "style": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "name",
        +    "style",
        +    "description"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / perfume / properties / houseUrl / description
        Added value: +"The house page on 10ml.com"
      • addedOutput schema / properties / perfume / properties / id
        Added value: +{
        +  "description": "Stable Fragrance Index identifier, usable with get_perfume and find_similar_perfumes",
        +  "type": "string"
        +}
      • removedOutput schema / properties / perfume / properties / imageUrl
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
      • addedOutput schema / properties / perfume / properties / keyNotes
        Added value: +{
        +  "description": "The defining notes",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / perfume / properties / links
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "title": {
        +        "type": "string"
        +      },
        +      "url": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "title",
        +      "url"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • removedOutput schema / properties / perfume / properties / newRelease
        Removed value: -{
        -  "type": "boolean"
        -}
      • addedOutput schema / properties / perfume / properties / occasions
        Added value: +{
        +  "items": {
        +    "enum": [
        +      "daytime",
        +      "office",
        +      "casual",
        +      "evening",
        +      "date night",
        +      "special occasion"
        +    ],
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • removedOutput schema / properties / perfume / properties / onSale
        Removed value: -{
        -  "type": "boolean"
        -}
      • addedOutput schema / properties / perfume / properties / pyramid
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "base": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "heart": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "top": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
      • removedOutput schema / properties / perfume / properties / rating
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "additionalProperties": false,
        -      "properties": {
        -        "count": {
        -          "type": "number"
        -        },
        -        "value": {
        -          "type": "number"
        -        }
        -      },
        -      "required": [
        -        "value",
        -        "count"
        -      ],
        -      "type": "object"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ]
        -}
      • addedOutput schema / properties / perfume / properties / seasons
        Added value: +{
        +  "items": {
        +    "enum": [
        +      "spring",
        +      "summer",
        +      "autumn",
        +      "winter"
        +    ],
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • removedOutput schema / properties / perfume / properties / sizesMl
        Removed value: -{
        -  "description": "Decant sizes in ml available at 10ML",
        -  "items": {
        -    "type": "number"
        -  },
        -  "type": "array"
        -}
      • changedOutput schema / properties / perfume / 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 / perfume / properties / year
        Added value: +{
        +  "description": "Launch year",
        +  "type": "number"
        +}
      • changedOutput schema / properties / perfume / required
        Previous value: -[
        -  "handle",
        -  "name",
        -  "house",
        -  "gender",
        -  "fromPriceEur",
        -  "fromPrice",
        -  "currency",
        -  "sizesMl",
        -  "notes",
        -  "rating",
        -  "bestseller",
        -  "newRelease",
        -  "onSale",
        -  "url",
        -  "imageUrl",
        -  "allNotes",
        -  "houseUrl"
        -]New value: +[
        +  "id",
        +  "name",
        +  "house",
        +  "gender",
        +  "family",
        +  "accords",
        +  "keyNotes",
        +  "character",
        +  "url",
        +  "notes",
        +  "seasons",
        +  "occasions",
        +  "houseInfo",
        +  "links"
        +]
      • addedOutput schema / properties / suggestions / items / properties / accords
        Added value: +{
        +  "description": "Main accords, strongest first",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • removedOutput schema / properties / suggestions / items / properties / bestseller
        Removed value: -{
        -  "type": "boolean"
        -}
      • addedOutput schema / properties / suggestions / items / properties / character
        Added value: +{
        +  "description": "One-sentence editorial description by 10ML's fragrance editors",
        +  "type": "string"
        +}
      • removedOutput schema / properties / suggestions / items / properties / currency
        Removed value: -{
        -  "const": "EUR",
        -  "type": "string"
        -}
      • addedOutput schema / properties / suggestions / items / properties / family
        Added value: +{
        +  "description": "Fragrance family",
        +  "type": "string"
        +}
      • removedOutput schema / properties / suggestions / items / properties / fromPrice
        Removed value: -{
        -  "description": "The same price formatted for display, e.g. \"€11.88\"",
        -  "type": "string"
        -}
      • removedOutput schema / properties / suggestions / items / properties / fromPriceEur
        Removed value: -{
        -  "description": "Price of the smallest size in EUR including VAT",
        -  "type": "number"
        -}
      • removedOutput schema / properties / suggestions / items / properties / gender / anyOf
        Removed value: -[
        -  {
        -    "enum": [
        -      "men",
        -      "women",
        -      "unisex"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / suggestions / items / properties / gender / enum
        Added value: +[
        +  "men",
        +  "women",
        +  "unisex"
        +]
      • addedOutput schema / properties / suggestions / items / properties / gender / type
        Added value: +"string"
      • addedOutput schema / properties / suggestions / items / properties / guideUrl
        Added value: +{
        +  "description": "A 10ML guide about this perfume",
        +  "type": "string"
        +}
      • removedOutput schema / properties / suggestions / items / properties / handle
        Removed value: -{
        -  "description": "Stable 10ML identifier, usable with get_perfume",
        -  "type": "string"
        -}
      • addedOutput schema / properties / suggestions / items / properties / houseUrl
        Added value: +{
        +  "description": "The house page on 10ml.com",
        +  "type": "string"
        +}
      • addedOutput schema / properties / suggestions / items / properties / id
        Added value: +{
        +  "description": "Stable Fragrance Index identifier, usable with get_perfume and find_similar_perfumes",
        +  "type": "string"
        +}
      • removedOutput schema / properties / suggestions / items / properties / imageUrl
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
      • addedOutput schema / properties / suggestions / items / properties / keyNotes
        Added value: +{
        +  "description": "The defining notes",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • removedOutput schema / properties / suggestions / items / properties / newRelease
        Removed value: -{
        -  "type": "boolean"
        -}
      • removedOutput schema / properties / suggestions / items / properties / notes
        Removed value: -{
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • removedOutput schema / properties / suggestions / items / properties / onSale
        Removed value: -{
        -  "type": "boolean"
        -}
      • removedOutput schema / properties / suggestions / items / properties / rating
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "additionalProperties": false,
        -      "properties": {
        -        "count": {
        -          "type": "number"
        -        },
        -        "value": {
        -          "type": "number"
        -        }
        -      },
        -      "required": [
        -        "value",
        -        "count"
        -      ],
        -      "type": "object"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ]
        -}
      • removedOutput schema / properties / suggestions / items / properties / sizesMl
        Removed value: -{
        -  "description": "Decant sizes in ml available at 10ML",
        -  "items": {
        -    "type": "number"
        -  },
        -  "type": "array"
        -}
      • changedOutput schema / properties / suggestions / 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 / suggestions / items / properties / year
        Added value: +{
        +  "description": "Launch year",
        +  "type": "number"
        +}
      • changedOutput schema / properties / suggestions / items / required
        Previous value: -[
        -  "handle",
        -  "name",
        -  "house",
        -  "gender",
        -  "fromPriceEur",
        -  "fromPrice",
        -  "currency",
        -  "sizesMl",
        -  "notes",
        -  "rating",
        -  "bestseller",
        -  "newRelease",
        -  "onSale",
        -  "url",
        -  "imageUrl"
        -]New value: +[
        +  "id",
        +  "name",
        +  "house",
        +  "gender",
        +  "family",
        +  "accords",
        +  "keyNotes",
        +  "character",
        +  "url"
        +]
    • Changedlist_houses10 fields changed
      • addedInput schema / properties / style
        Added value: +{
        +  "description": "Only houses of this style",
        +  "enum": [
        +    "Designer",
        +    "Niche",
        +    "Middle Eastern"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / houses / items / properties / country
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / houses / items / properties / description
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / houses / items / properties / guides
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "title": {
        +        "type": "string"
        +      },
        +      "url": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "title",
        +      "url"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • removedOutput schema / properties / houses / items / properties / handle
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / houses / items / properties / id
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / houses / items / properties / perfumeCount
        Removed value: -{
        -  "type": "number"
        -}
      • addedOutput schema / properties / houses / items / properties / signaturePerfumes
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / houses / items / properties / style
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / properties / houses / items / required
        Previous value: -[
        -  "name",
        -  "handle",
        -  "perfumeCount",
        -  "url"
        -]New value: +[
        +  "id",
        +  "name",
        +  "style",
        +  "description",
        +  "signaturePerfumes",
        +  "guides"
        +]
    • Changedperfumes_by_note29 fields changed
      • changedInput schema / properties / gender / description
        Previous value: -"Who the perfume is marketed for."New value: +"Who the perfume is marketed for. men/women also include unisex perfumes."
      • removedOutput schema / properties / matchedNotes
        Removed value: -{
        -  "description": "Catalogue note names that were matched",
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • removedOutput schema / properties / noteUrl
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / profile
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "aliases": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "description": {
        +      "type": "string"
        +    },
        +    "family": {
        +      "type": "string"
        +    },
        +    "guides": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "title": {
        +            "type": "string"
        +          },
        +          "url": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "title",
        +          "url"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "name": {
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "name",
        +    "family",
        +    "description",
        +    "aliases",
        +    "guides"
        +  ],
        +  "type": "object"
        +}
      • 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"
        -    }
        -  ]
        -}
      • 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"
        -]New value: +[
        +  "id",
        +  "name",
        +  "house",
        +  "gender",
        +  "family",
        +  "accords",
        +  "keyNotes",
        +  "character",
        +  "url"
        +]
      • changedOutput schema / required
        Previous value: -[
        -  "note",
        -  "matchedNotes",
        -  "total",
        -  "results"
        -]New value: +[
        +  "note",
        +  "total",
        +  "results"
        +]
    • Changedsearch_perfumes32 fields changed
      • addedInput schema / properties / family
        Added value: +{
        +  "description": "Restrict to a fragrance family: Citrus, Aquatic, Green, Aromatic Fougère, Floral, Fruity Floral, Floral Amber, Chypre, Woody, Woody Spicy, Amber, Amber Vanilla, Gourmand, Leather, Musky",
        +  "maxLength": 40,
        +  "type": "string"
        +}
      • changedInput schema / properties / gender / description
        Previous value: -"Who the perfume is marketed for."New value: +"Who the perfume is marketed for. men/women also include unisex perfumes."
      • removedInput schema / properties / max_price_eur
        Removed value: -{
        -  "description": "Maximum \"from\" price in EUR including VAT",
        -  "exclusiveMinimum": 0,
        -  "maximum": 1000,
        -  "type": "number"
        -}
      • addedInput schema / properties / occasion
        Added value: +{
        +  "enum": [
        +    "daytime",
        +    "office",
        +    "casual",
        +    "evening",
        +    "date night",
        +    "special occasion"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / query / description
        Previous value: -"Free text: perfume name, house, notes, mood. e.g. \"fresh citrus summer for men under 15 euros\", \"oud\", \"vanilla gourmand\""New value: +"Free text: perfume name, house, notes, mood. e.g. \"fresh citrus summer for men\", \"oud\", \"vanilla gourmand for winter\""
      • addedInput schema / properties / season
        Added value: +{
        +  "enum": [
        +    "spring",
        +    "summer",
        +    "autumn",
        +    "winter"
        +  ],
        +  "type": "string"
        +}
      • removedInput schema / properties / sort
        Removed value: -{
        -  "description": "popular (default, best match first), price (cheapest first) or rating (best rated first)",
        -  "enum": [
        -    "popular",
        -    "price",
        -    "rating"
        -  ],
        -  "type": "string"
        -}
      • addedOutput schema / properties / filters / additionalProperties / type
        Added value: +"string"
      • 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"
        -    }
        -  ]
        -}
      • 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"
        -]New value: +[
        +  "id",
        +  "name",
        +  "house",
        +  "gender",
        +  "family",
        +  "accords",
        +  "keyNotes",
        +  "character",
        +  "url"
        +]
    • Changedtrending_perfumes30 fields changed
      • addedInput schema / properties / family
        Added value: +{
        +  "description": "A fragrance family: Citrus, Aquatic, Green, Aromatic Fougère, Floral, Fruity Floral, Floral Amber, Chypre, Woody, Woody Spicy, Amber, Amber Vanilla, Gourmand, Leather, Musky",
        +  "maxLength": 40,
        +  "type": "string"
        +}
      • changedInput schema / properties / gender / description
        Previous value: -"Who the perfume is marketed for."New value: +"Who the perfume is marketed for. men/women also include unisex perfumes."
      • addedInput schema / properties / season
        Added value: +{
        +  "enum": [
        +    "spring",
        +    "summer",
        +    "autumn",
        +    "winter"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / filters
        Added value: +{
        +  "additionalProperties": {
        +    "type": "string"
        +  },
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • removedOutput schema / properties / gender
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "enum": [
        -        "men",
        -        "women",
        -        "unisex"
        -      ],
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ]
        -}
      • 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"
        -    }
        -  ]
        -}
      • 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"
        -]New value: +[
        +  "id",
        +  "name",
        +  "house",
        +  "gender",
        +  "family",
        +  "accords",
        +  "keyNotes",
        +  "character",
        +  "url"
        +]
      • changedOutput schema / required
        Previous value: -[
        -  "gender",
        -  "results"
        -]New value: +[
        +  "filters",
        +  "results"
        +]
  2. 6 tool updates
    • First observedfind_similar_perfumes
    • First observedget_perfume
    • First observedlist_houses
    • First observedperfumes_by_note
    • First observedsearch_perfumes
    • First observedtrending_perfumes

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Search ethical, origin-verified products and brands from 30+ countries. Find Canadian, sustainable, vegan, and cruelty-free alternatives with affiliate purchase links.
    6
    44 npm
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Search the AI Tool Directory catalog of 2,000+ AI tools — compare tools, find curated alternatives, and check whether a tool is still active, defunct, or acquired (backed by the AI Graveyard dataset).
    6
    5 npm
    1
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources