10ML Perfume Finder
Server Details
Search 10ML's perfume decant catalogue, compare notes and find similar original perfumes.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 6 tools
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.
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.
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.
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 toolsfind_similar_perfumesFind similar perfumesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Fragrance Index id of the perfume to match | |
| name | No | Name of the perfume, e.g. "Baccarat Rouge 540" | |
| house | No | House of the perfume, e.g. "Maison Francis Kurkdjian" | |
| limit | No | How many results to return (1-10, default 8). | |
| notes | No | Known notes of the perfume (use when it is not in the index), e.g. ["jasmine","saffron","ambergris","cedar"] | |
| gender | No | Only return perfumes for this audience (men/women include unisex) |
Output Schema
| Name | Required | Description |
|---|---|---|
| target | Yes | |
| message | No | |
| results | Yes |
TDQS
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.
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.
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.
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.
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.
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 profileARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Fragrance Index id, e.g. "creed-aventus" | |
| name | No | Perfume name, e.g. "Aventus" (the house may be included, e.g. "Creed Aventus") | |
| house | No | Perfume house, e.g. "Creed" |
Output Schema
| Name | Required | Description |
|---|---|---|
| exact | Yes | False when this is a closest-match guess |
| found | Yes | |
| message | No | |
| perfume | No | |
| suggestions | No |
TDQS
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.
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.
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.
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.
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.
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 housesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | Only houses of this style |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | |
| houses | Yes |
TDQS
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.
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.
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.
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.
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.
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 noteARead-onlyIdempotentInspect
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".
| Name | Required | Description | Default |
|---|---|---|---|
| note | Yes | The note, e.g. "oud", "vanilla", "pink pepper" | |
| limit | No | How many results to return (1-20, default 8). | |
| gender | No | Who the perfume is marketed for. men/women also include unisex perfumes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | |
| total | Yes | |
| message | No | |
| profile | No | |
| results | Yes |
TDQS
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.
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.
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.
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.
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.
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 perfumesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Restrict to perfumes containing a note, e.g. "oud", "tonka bean", "bergamot" | |
| house | No | Restrict to one perfume house, e.g. "Dior", "Maison Francis Kurkdjian" | |
| limit | No | How many results to return (1-20, default 8). | |
| query | No | Free text: perfume name, house, notes, mood. e.g. "fresh citrus summer for men", "oud", "vanilla gourmand for winter" | |
| family | No | 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 | |
| gender | No | Who the perfume is marketed for. men/women also include unisex perfumes. | |
| season | No | ||
| occasion | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | How many perfumes matched in all |
| filters | Yes | The filters that were applied, including ones read from the query |
| message | No | |
| relaxed | Yes | True when no perfume matched every word and partial matches are shown |
| results | Yes |
TDQS
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.
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.
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.
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.
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.
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.
trending_perfumesIconic perfumesARead-onlyIdempotentInspect
Iconic, era-defining perfumes chosen by 10ML's fragrance editors: the modern classics everyone should know, optionally for men, women or unisex, a fragrance family or a season. Use for "what are the classic perfumes", "must-try perfumes for her", "iconic winter fragrances" or gift inspiration.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many results to return (1-20, default 8). | |
| family | No | A fragrance family: Citrus, Aquatic, Green, Aromatic Fougère, Floral, Fruity Floral, Floral Amber, Chypre, Woody, Woody Spicy, Amber, Amber Vanilla, Gourmand, Leather, Musky | |
| gender | No | Who the perfume is marketed for. men/women also include unisex perfumes. | |
| season | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| filters | Yes | |
| results | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds that results are editor-curated rather than ranked by popularity, which is useful framing, but says nothing about ordering, the default result count, or how the editorial list behaves with filters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the identity of the list before the optional filters, then closes with usage examples. Two sentences carry real information, though the example-quote list is slightly padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 explain return values, and annotations cover safety. It adequately conveys curation, filter axes and typical queries; only ordering and default-limit behavior are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, with limit, family and gender documented inline and season left as a bare enum. The description loosely restates the three filter axes ('men, women or unisex, a fragrance family or a season') but adds no format, default, or combination semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (perfumes) with a clear curation angle: 'Iconic, era-defining perfumes chosen by 10ML's fragrance editors.' This distinguishes it from a generic search, though it never names a sibling tool like search_perfumes or perfumes_by_note to sharpen the contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides concrete trigger phrases ('what are the classic perfumes', 'must-try perfumes for her', 'iconic winter fragrances', gift inspiration) that map cleanly to the filter set. It gives no explicit when-not-to-use or alternative-tool routing, so it stops short of a 5.
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.
6 tool updates
- Changed
find_similar_perfumes34 fields changed- changed
Input schema / properties / gender / descriptionPrevious value: -"Only return perfumes suitable for this audience"New value: +"Only return perfumes for this audience (men/women include unisex)" - removed
Input schema / properties / handleRemoved value: -{ - "description": "10ML handle of the perfume to match", - "maxLength": 120, - "type": "string" -} - added
Input schema / properties / idAdded value: +{ + "description": "Fragrance Index id of the perfume to match", + "maxLength": 120, + "type": "string" +} - changed
Input schema / properties / notes / descriptionPrevious 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\"]" - added
Output schema / properties / results / items / properties / accordsAdded value: +{ + "description": "Main accords, strongest first", + "items": { + "type": "string" + }, + "type": "array" +} - removed
Output schema / properties / results / items / properties / bestsellerRemoved value: -{ - "type": "boolean" -} - added
Output schema / properties / results / items / properties / characterAdded value: +{ + "description": "One-sentence editorial description by 10ML's fragrance editors", + "type": "string" +} - removed
Output schema / properties / results / items / properties / currencyRemoved value: -{ - "const": "EUR", - "type": "string" -} - added
Output schema / properties / results / items / properties / familyAdded value: +{ + "description": "Fragrance family", + "type": "string" +} - removed
Output schema / properties / results / items / properties / fromPriceRemoved value: -{ - "description": "The same price formatted for display, e.g. \"€11.88\"", - "type": "string" -} - removed
Output schema / properties / results / items / properties / fromPriceEurRemoved value: -{ - "description": "Price of the smallest size in EUR including VAT", - "type": "number" -} - removed
Output schema / properties / results / items / properties / gender / anyOfRemoved value: -[ - { - "enum": [ - "men", - "women", - "unisex" - ], - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / results / items / properties / gender / enumAdded value: +[ + "men", + "women", + "unisex" +] - added
Output schema / properties / results / items / properties / gender / typeAdded value: +"string" - added
Output schema / properties / results / items / properties / guideUrlAdded value: +{ + "description": "A 10ML guide about this perfume", + "type": "string" +} - removed
Output schema / properties / results / items / properties / handleRemoved value: -{ - "description": "Stable 10ML identifier, usable with get_perfume", - "type": "string" -} - added
Output schema / properties / results / items / properties / houseUrlAdded value: +{ + "description": "The house page on 10ml.com", + "type": "string" +} - added
Output schema / properties / results / items / properties / idAdded value: +{ + "description": "Stable Fragrance Index identifier, usable with get_perfume and find_similar_perfumes", + "type": "string" +} - removed
Output schema / properties / results / items / properties / imageUrlRemoved value: -{ - "type": [ - "string", - "null" - ] -} - added
Output schema / properties / results / items / properties / keyNotesAdded value: +{ + "description": "The defining notes", + "items": { + "type": "string" + }, + "type": "array" +} - removed
Output schema / properties / results / items / properties / newReleaseRemoved value: -{ - "type": "boolean" -} - removed
Output schema / properties / results / items / properties / notesRemoved value: -{ - "items": { - "type": "string" - }, - "type": "array" -} - removed
Output schema / properties / results / items / properties / onSaleRemoved value: -{ - "type": "boolean" -} - removed
Output schema / properties / results / items / properties / ratingRemoved value: -{ - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "count": { - "type": "number" - }, - "value": { - "type": "number" - } - }, - "required": [ - "value", - "count" - ], - "type": "object" - }, - { - "type": "null" - } - ] -} - added
Output schema / properties / results / items / properties / sharedAccordsAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +} - removed
Output schema / properties / results / items / properties / sizesMlRemoved value: -{ - "description": "Decant sizes in ml available at 10ML", - "items": { - "type": "number" - }, - "type": "array" -} - changed
Output schema / properties / results / items / properties / url / descriptionPrevious value: -"Product page on 10ml.com"New value: +"\"Try it at 10ML\": find this perfume on 10ml.com" - added
Output schema / properties / results / items / properties / yearAdded value: +{ + "description": "Launch year", + "type": "number" +} - changed
Output schema / properties / results / items / requiredPrevious 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" +] - removed
Output schema / properties / target / properties / handleRemoved value: -{ - "type": "string" -} - added
Output schema / properties / target / properties / idAdded value: +{ + "type": "string" +} - removed
Output schema / properties / target / properties / inCatalogueRemoved value: -{ - "type": "boolean" -} - added
Output schema / properties / target / properties / inIndexAdded value: +{ + "type": "boolean" +} - changed
Output schema / properties / target / requiredPrevious value: -[ - "name", - "house", - "inCatalogue", - "notes" -]New value: +[ + "name", + "house", + "inIndex", + "notes" +]
- Changed
get_perfume55 fields changed- removed
Input schema / properties / handleRemoved value: -{ - "description": "10ML handle, e.g. \"creed-aventus\"", - "maxLength": 120, - "type": "string" -} - added
Input schema / properties / idAdded value: +{ + "description": "Fragrance Index id, e.g. \"creed-aventus\"", + "maxLength": 120, + "type": "string" +} - added
Output schema / properties / perfume / properties / accordsAdded value: +{ + "description": "Main accords, strongest first", + "items": { + "type": "string" + }, + "type": "array" +} - removed
Output schema / properties / perfume / properties / allNotesRemoved value: -{ - "items": { - "type": "string" - }, - "type": "array" -} - removed
Output schema / properties / perfume / properties / bestsellerRemoved value: -{ - "type": "boolean" -} - added
Output schema / properties / perfume / properties / characterAdded value: +{ + "description": "One-sentence editorial description by 10ML's fragrance editors", + "type": "string" +} - removed
Output schema / properties / perfume / properties / currencyRemoved value: -{ - "const": "EUR", - "type": "string" -} - added
Output schema / properties / perfume / properties / familyAdded value: +{ + "description": "Fragrance family", + "type": "string" +} - removed
Output schema / properties / perfume / properties / fromPriceRemoved value: -{ - "description": "The same price formatted for display, e.g. \"€11.88\"", - "type": "string" -} - removed
Output schema / properties / perfume / properties / fromPriceEurRemoved value: -{ - "description": "Price of the smallest size in EUR including VAT", - "type": "number" -} - removed
Output schema / properties / perfume / properties / gender / anyOfRemoved value: -[ - { - "enum": [ - "men", - "women", - "unisex" - ], - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / perfume / properties / gender / enumAdded value: +[ + "men", + "women", + "unisex" +] - added
Output schema / properties / perfume / properties / gender / typeAdded value: +"string" - added
Output schema / properties / perfume / properties / guideUrlAdded value: +{ + "description": "A 10ML guide about this perfume", + "type": "string" +} - removed
Output schema / properties / perfume / properties / handleRemoved value: -{ - "description": "Stable 10ML identifier, usable with get_perfume", - "type": "string" -} - added
Output schema / properties / perfume / properties / houseInfoAdded value: +{ + "additionalProperties": false, + "properties": { + "country": { + "type": "string" + }, + "description": { + "type": "string" + }, + "name": { + "type": "string" + }, + "style": { + "type": "string" + } + }, + "required": [ + "name", + "style", + "description" + ], + "type": "object" +} - added
Output schema / properties / perfume / properties / houseUrl / descriptionAdded value: +"The house page on 10ml.com" - added
Output schema / properties / perfume / properties / idAdded value: +{ + "description": "Stable Fragrance Index identifier, usable with get_perfume and find_similar_perfumes", + "type": "string" +} - removed
Output schema / properties / perfume / properties / imageUrlRemoved value: -{ - "type": [ - "string", - "null" - ] -} - added
Output schema / properties / perfume / properties / keyNotesAdded value: +{ + "description": "The defining notes", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / perfume / properties / linksAdded value: +{ + "items": { + "additionalProperties": false, + "properties": { + "title": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "title", + "url" + ], + "type": "object" + }, + "type": "array" +} - removed
Output schema / properties / perfume / properties / newReleaseRemoved value: -{ - "type": "boolean" -} - added
Output schema / properties / perfume / properties / occasionsAdded value: +{ + "items": { + "enum": [ + "daytime", + "office", + "casual", + "evening", + "date night", + "special occasion" + ], + "type": "string" + }, + "type": "array" +} - removed
Output schema / properties / perfume / properties / onSaleRemoved value: -{ - "type": "boolean" -} - added
Output schema / properties / perfume / properties / pyramidAdded value: +{ + "additionalProperties": false, + "properties": { + "base": { + "items": { + "type": "string" + }, + "type": "array" + }, + "heart": { + "items": { + "type": "string" + }, + "type": "array" + }, + "top": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" +} - removed
Output schema / properties / perfume / properties / ratingRemoved value: -{ - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "count": { - "type": "number" - }, - "value": { - "type": "number" - } - }, - "required": [ - "value", - "count" - ], - "type": "object" - }, - { - "type": "null" - } - ] -} - added
Output schema / properties / perfume / properties / seasonsAdded value: +{ + "items": { + "enum": [ + "spring", + "summer", + "autumn", + "winter" + ], + "type": "string" + }, + "type": "array" +} - removed
Output schema / properties / perfume / properties / sizesMlRemoved value: -{ - "description": "Decant sizes in ml available at 10ML", - "items": { - "type": "number" - }, - "type": "array" -} - changed
Output schema / properties / perfume / properties / url / descriptionPrevious value: -"Product page on 10ml.com"New value: +"\"Try it at 10ML\": find this perfume on 10ml.com" - added
Output schema / properties / perfume / properties / yearAdded value: +{ + "description": "Launch year", + "type": "number" +} - changed
Output schema / properties / perfume / requiredPrevious 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" +] - added
Output schema / properties / suggestions / items / properties / accordsAdded value: +{ + "description": "Main accords, strongest first", + "items": { + "type": "string" + }, + "type": "array" +} - removed
Output schema / properties / suggestions / items / properties / bestsellerRemoved value: -{ - "type": "boolean" -} - added
Output schema / properties / suggestions / items / properties / characterAdded value: +{ + "description": "One-sentence editorial description by 10ML's fragrance editors", + "type": "string" +} - removed
Output schema / properties / suggestions / items / properties / currencyRemoved value: -{ - "const": "EUR", - "type": "string" -} - added
Output schema / properties / suggestions / items / properties / familyAdded value: +{ + "description": "Fragrance family", + "type": "string" +} - removed
Output schema / properties / suggestions / items / properties / fromPriceRemoved value: -{ - "description": "The same price formatted for display, e.g. \"€11.88\"", - "type": "string" -} - removed
Output schema / properties / suggestions / items / properties / fromPriceEurRemoved value: -{ - "description": "Price of the smallest size in EUR including VAT", - "type": "number" -} - removed
Output schema / properties / suggestions / items / properties / gender / anyOfRemoved value: -[ - { - "enum": [ - "men", - "women", - "unisex" - ], - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / suggestions / items / properties / gender / enumAdded value: +[ + "men", + "women", + "unisex" +] - added
Output schema / properties / suggestions / items / properties / gender / typeAdded value: +"string" - added
Output schema / properties / suggestions / items / properties / guideUrlAdded value: +{ + "description": "A 10ML guide about this perfume", + "type": "string" +} - removed
Output schema / properties / suggestions / items / properties / handleRemoved value: -{ - "description": "Stable 10ML identifier, usable with get_perfume", - "type": "string" -} - added
Output schema / properties / suggestions / items / properties / houseUrlAdded value: +{ + "description": "The house page on 10ml.com", + "type": "string" +} - added
Output schema / properties / suggestions / items / properties / idAdded value: +{ + "description": "Stable Fragrance Index identifier, usable with get_perfume and find_similar_perfumes", + "type": "string" +} - removed
Output schema / properties / suggestions / items / properties / imageUrlRemoved value: -{ - "type": [ - "string", - "null" - ] -} - added
Output schema / properties / suggestions / items / properties / keyNotesAdded value: +{ + "description": "The defining notes", + "items": { + "type": "string" + }, + "type": "array" +} - removed
Output schema / properties / suggestions / items / properties / newReleaseRemoved value: -{ - "type": "boolean" -} - removed
Output schema / properties / suggestions / items / properties / notesRemoved value: -{ - "items": { - "type": "string" - }, - "type": "array" -} - removed
Output schema / properties / suggestions / items / properties / onSaleRemoved value: -{ - "type": "boolean" -} - removed
Output schema / properties / suggestions / items / properties / ratingRemoved value: -{ - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "count": { - "type": "number" - }, - "value": { - "type": "number" - } - }, - "required": [ - "value", - "count" - ], - "type": "object" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / suggestions / items / properties / sizesMlRemoved value: -{ - "description": "Decant sizes in ml available at 10ML", - "items": { - "type": "number" - }, - "type": "array" -} - changed
Output schema / properties / suggestions / items / properties / url / descriptionPrevious value: -"Product page on 10ml.com"New value: +"\"Try it at 10ML\": find this perfume on 10ml.com" - added
Output schema / properties / suggestions / items / properties / yearAdded value: +{ + "description": "Launch year", + "type": "number" +} - changed
Output schema / properties / suggestions / items / requiredPrevious 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" +]
- Changed
list_houses10 fields changed- added
Input schema / properties / styleAdded value: +{ + "description": "Only houses of this style", + "enum": [ + "Designer", + "Niche", + "Middle Eastern" + ], + "type": "string" +} - added
Output schema / properties / houses / items / properties / countryAdded value: +{ + "type": "string" +} - added
Output schema / properties / houses / items / properties / descriptionAdded value: +{ + "type": "string" +} - added
Output schema / properties / houses / items / properties / guidesAdded value: +{ + "items": { + "additionalProperties": false, + "properties": { + "title": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "title", + "url" + ], + "type": "object" + }, + "type": "array" +} - removed
Output schema / properties / houses / items / properties / handleRemoved value: -{ - "type": "string" -} - added
Output schema / properties / houses / items / properties / idAdded value: +{ + "type": "string" +} - removed
Output schema / properties / houses / items / properties / perfumeCountRemoved value: -{ - "type": "number" -} - added
Output schema / properties / houses / items / properties / signaturePerfumesAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / houses / items / properties / styleAdded value: +{ + "type": "string" +} - changed
Output schema / properties / houses / items / requiredPrevious value: -[ - "name", - "handle", - "perfumeCount", - "url" -]New value: +[ + "id", + "name", + "style", + "description", + "signaturePerfumes", + "guides" +]
- Changed
perfumes_by_note29 fields changed- changed
Input schema / properties / gender / descriptionPrevious value: -"Who the perfume is marketed for."New value: +"Who the perfume is marketed for. men/women also include unisex perfumes." - removed
Output schema / properties / matchedNotesRemoved value: -{ - "description": "Catalogue note names that were matched", - "items": { - "type": "string" - }, - "type": "array" -} - removed
Output schema / properties / noteUrlRemoved value: -{ - "type": "string" -} - added
Output schema / properties / profileAdded 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" +} - added
Output schema / properties / results / items / properties / accordsAdded value: +{ + "description": "Main accords, strongest first", + "items": { + "type": "string" + }, + "type": "array" +} - removed
Output schema / properties / results / items / properties / bestsellerRemoved value: -{ - "type": "boolean" -} - added
Output schema / properties / results / items / properties / characterAdded value: +{ + "description": "One-sentence editorial description by 10ML's fragrance editors", + "type": "string" +} - removed
Output schema / properties / results / items / properties / currencyRemoved value: -{ - "const": "EUR", - "type": "string" -} - added
Output schema / properties / results / items / properties / familyAdded value: +{ + "description": "Fragrance family", + "type": "string" +} - removed
Output schema / properties / results / items / properties / fromPriceRemoved value: -{ - "description": "The same price formatted for display, e.g. \"€11.88\"", - "type": "string" -} - removed
Output schema / properties / results / items / properties / fromPriceEurRemoved value: -{ - "description": "Price of the smallest size in EUR including VAT", - "type": "number" -} - removed
Output schema / properties / results / items / properties / gender / anyOfRemoved value: -[ - { - "enum": [ - "men", - "women", - "unisex" - ], - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / results / items / properties / gender / enumAdded value: +[ + "men", + "women", + "unisex" +] - added
Output schema / properties / results / items / properties / gender / typeAdded value: +"string" - added
Output schema / properties / results / items / properties / guideUrlAdded value: +{ + "description": "A 10ML guide about this perfume", + "type": "string" +} - removed
Output schema / properties / results / items / properties / handleRemoved value: -{ - "description": "Stable 10ML identifier, usable with get_perfume", - "type": "string" -} - added
Output schema / properties / results / items / properties / houseUrlAdded value: +{ + "description": "The house page on 10ml.com", + "type": "string" +} - added
Output schema / properties / results / items / properties / idAdded value: +{ + "description": "Stable Fragrance Index identifier, usable with get_perfume and find_similar_perfumes", + "type": "string" +} - removed
Output schema / properties / results / items / properties / imageUrlRemoved value: -{ - "type": [ - "string", - "null" - ] -} - added
Output schema / properties / results / items / properties / keyNotesAdded value: +{ + "description": "The defining notes", + "items": { + "type": "string" + }, + "type": "array" +} - removed
Output schema / properties / results / items / properties / newReleaseRemoved value: -{ - "type": "boolean" -} - removed
Output schema / properties / results / items / properties / notesRemoved value: -{ - "items": { - "type": "string" - }, - "type": "array" -} - removed
Output schema / properties / results / items / properties / onSaleRemoved value: -{ - "type": "boolean" -} - removed
Output schema / properties / results / items / properties / ratingRemoved value: -{ - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "count": { - "type": "number" - }, - "value": { - "type": "number" - } - }, - "required": [ - "value", - "count" - ], - "type": "object" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / results / items / properties / sizesMlRemoved value: -{ - "description": "Decant sizes in ml available at 10ML", - "items": { - "type": "number" - }, - "type": "array" -} - changed
Output schema / properties / results / items / properties / url / descriptionPrevious value: -"Product page on 10ml.com"New value: +"\"Try it at 10ML\": find this perfume on 10ml.com" - added
Output schema / properties / results / items / properties / yearAdded value: +{ + "description": "Launch year", + "type": "number" +} - changed
Output schema / properties / results / items / requiredPrevious 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" +] - changed
Output schema / requiredPrevious value: -[ - "note", - "matchedNotes", - "total", - "results" -]New value: +[ + "note", + "total", + "results" +]
- Changed
search_perfumes32 fields changed- added
Input schema / properties / familyAdded 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" +} - changed
Input schema / properties / gender / descriptionPrevious value: -"Who the perfume is marketed for."New value: +"Who the perfume is marketed for. men/women also include unisex perfumes." - removed
Input schema / properties / max_price_eurRemoved value: -{ - "description": "Maximum \"from\" price in EUR including VAT", - "exclusiveMinimum": 0, - "maximum": 1000, - "type": "number" -} - added
Input schema / properties / occasionAdded value: +{ + "enum": [ + "daytime", + "office", + "casual", + "evening", + "date night", + "special occasion" + ], + "type": "string" +} - changed
Input schema / properties / query / descriptionPrevious 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\"" - added
Input schema / properties / seasonAdded value: +{ + "enum": [ + "spring", + "summer", + "autumn", + "winter" + ], + "type": "string" +} - removed
Input schema / properties / sortRemoved value: -{ - "description": "popular (default, best match first), price (cheapest first) or rating (best rated first)", - "enum": [ - "popular", - "price", - "rating" - ], - "type": "string" -} - added
Output schema / properties / filters / additionalProperties / typeAdded value: +"string" - added
Output schema / properties / results / items / properties / accordsAdded value: +{ + "description": "Main accords, strongest first", + "items": { + "type": "string" + }, + "type": "array" +} - removed
Output schema / properties / results / items / properties / bestsellerRemoved value: -{ - "type": "boolean" -} - added
Output schema / properties / results / items / properties / characterAdded value: +{ + "description": "One-sentence editorial description by 10ML's fragrance editors", + "type": "string" +} - removed
Output schema / properties / results / items / properties / currencyRemoved value: -{ - "const": "EUR", - "type": "string" -} - added
Output schema / properties / results / items / properties / familyAdded value: +{ + "description": "Fragrance family", + "type": "string" +} - removed
Output schema / properties / results / items / properties / fromPriceRemoved value: -{ - "description": "The same price formatted for display, e.g. \"€11.88\"", - "type": "string" -} - removed
Output schema / properties / results / items / properties / fromPriceEurRemoved value: -{ - "description": "Price of the smallest size in EUR including VAT", - "type": "number" -} - removed
Output schema / properties / results / items / properties / gender / anyOfRemoved value: -[ - { - "enum": [ - "men", - "women", - "unisex" - ], - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / results / items / properties / gender / enumAdded value: +[ + "men", + "women", + "unisex" +] - added
Output schema / properties / results / items / properties / gender / typeAdded value: +"string" - added
Output schema / properties / results / items / properties / guideUrlAdded value: +{ + "description": "A 10ML guide about this perfume", + "type": "string" +} - removed
Output schema / properties / results / items / properties / handleRemoved value: -{ - "description": "Stable 10ML identifier, usable with get_perfume", - "type": "string" -} - added
Output schema / properties / results / items / properties / houseUrlAdded value: +{ + "description": "The house page on 10ml.com", + "type": "string" +} - added
Output schema / properties / results / items / properties / idAdded value: +{ + "description": "Stable Fragrance Index identifier, usable with get_perfume and find_similar_perfumes", + "type": "string" +} - removed
Output schema / properties / results / items / properties / imageUrlRemoved value: -{ - "type": [ - "string", - "null" - ] -} - added
Output schema / properties / results / items / properties / keyNotesAdded value: +{ + "description": "The defining notes", + "items": { + "type": "string" + }, + "type": "array" +} - removed
Output schema / properties / results / items / properties / newReleaseRemoved value: -{ - "type": "boolean" -} - removed
Output schema / properties / results / items / properties / notesRemoved value: -{ - "items": { - "type": "string" - }, - "type": "array" -} - removed
Output schema / properties / results / items / properties / onSaleRemoved value: -{ - "type": "boolean" -} - removed
Output schema / properties / results / items / properties / ratingRemoved value: -{ - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "count": { - "type": "number" - }, - "value": { - "type": "number" - } - }, - "required": [ - "value", - "count" - ], - "type": "object" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / results / items / properties / sizesMlRemoved value: -{ - "description": "Decant sizes in ml available at 10ML", - "items": { - "type": "number" - }, - "type": "array" -} - changed
Output schema / properties / results / items / properties / url / descriptionPrevious value: -"Product page on 10ml.com"New value: +"\"Try it at 10ML\": find this perfume on 10ml.com" - added
Output schema / properties / results / items / properties / yearAdded value: +{ + "description": "Launch year", + "type": "number" +} - changed
Output schema / properties / results / items / requiredPrevious 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" +]
- Changed
trending_perfumes30 fields changed- added
Input schema / properties / familyAdded 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" +} - changed
Input schema / properties / gender / descriptionPrevious value: -"Who the perfume is marketed for."New value: +"Who the perfume is marketed for. men/women also include unisex perfumes." - added
Input schema / properties / seasonAdded value: +{ + "enum": [ + "spring", + "summer", + "autumn", + "winter" + ], + "type": "string" +} - added
Output schema / properties / filtersAdded value: +{ + "additionalProperties": { + "type": "string" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" +} - removed
Output schema / properties / genderRemoved value: -{ - "anyOf": [ - { - "enum": [ - "men", - "women", - "unisex" - ], - "type": "string" - }, - { - "type": "null" - } - ] -} - added
Output schema / properties / results / items / properties / accordsAdded value: +{ + "description": "Main accords, strongest first", + "items": { + "type": "string" + }, + "type": "array" +} - removed
Output schema / properties / results / items / properties / bestsellerRemoved value: -{ - "type": "boolean" -} - added
Output schema / properties / results / items / properties / characterAdded value: +{ + "description": "One-sentence editorial description by 10ML's fragrance editors", + "type": "string" +} - removed
Output schema / properties / results / items / properties / currencyRemoved value: -{ - "const": "EUR", - "type": "string" -} - added
Output schema / properties / results / items / properties / familyAdded value: +{ + "description": "Fragrance family", + "type": "string" +} - removed
Output schema / properties / results / items / properties / fromPriceRemoved value: -{ - "description": "The same price formatted for display, e.g. \"€11.88\"", - "type": "string" -} - removed
Output schema / properties / results / items / properties / fromPriceEurRemoved value: -{ - "description": "Price of the smallest size in EUR including VAT", - "type": "number" -} - removed
Output schema / properties / results / items / properties / gender / anyOfRemoved value: -[ - { - "enum": [ - "men", - "women", - "unisex" - ], - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / results / items / properties / gender / enumAdded value: +[ + "men", + "women", + "unisex" +] - added
Output schema / properties / results / items / properties / gender / typeAdded value: +"string" - added
Output schema / properties / results / items / properties / guideUrlAdded value: +{ + "description": "A 10ML guide about this perfume", + "type": "string" +} - removed
Output schema / properties / results / items / properties / handleRemoved value: -{ - "description": "Stable 10ML identifier, usable with get_perfume", - "type": "string" -} - added
Output schema / properties / results / items / properties / houseUrlAdded value: +{ + "description": "The house page on 10ml.com", + "type": "string" +} - added
Output schema / properties / results / items / properties / idAdded value: +{ + "description": "Stable Fragrance Index identifier, usable with get_perfume and find_similar_perfumes", + "type": "string" +} - removed
Output schema / properties / results / items / properties / imageUrlRemoved value: -{ - "type": [ - "string", - "null" - ] -} - added
Output schema / properties / results / items / properties / keyNotesAdded value: +{ + "description": "The defining notes", + "items": { + "type": "string" + }, + "type": "array" +} - removed
Output schema / properties / results / items / properties / newReleaseRemoved value: -{ - "type": "boolean" -} - removed
Output schema / properties / results / items / properties / notesRemoved value: -{ - "items": { - "type": "string" - }, - "type": "array" -} - removed
Output schema / properties / results / items / properties / onSaleRemoved value: -{ - "type": "boolean" -} - removed
Output schema / properties / results / items / properties / ratingRemoved value: -{ - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "count": { - "type": "number" - }, - "value": { - "type": "number" - } - }, - "required": [ - "value", - "count" - ], - "type": "object" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / results / items / properties / sizesMlRemoved value: -{ - "description": "Decant sizes in ml available at 10ML", - "items": { - "type": "number" - }, - "type": "array" -} - changed
Output schema / properties / results / items / properties / url / descriptionPrevious value: -"Product page on 10ml.com"New value: +"\"Try it at 10ML\": find this perfume on 10ml.com" - added
Output schema / properties / results / items / properties / yearAdded value: +{ + "description": "Launch year", + "type": "number" +} - changed
Output schema / properties / results / items / requiredPrevious 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" +] - changed
Output schema / requiredPrevious value: -[ - "gender", - "results" -]New value: +[ + "filters", + "results" +]
6 tool updates
- First observed
find_similar_perfumes - First observed
get_perfume - First observed
list_houses - First observed
perfumes_by_note - First observed
search_perfumes - First observed
trending_perfumes
Related MCP Connectors
Search the Perfume Picks fragrance database: 10,000+ scents with notes, dupes, and wear data.
Fragrance catalogue with verdicts, similarity scores, scent profiles, drydowns and local prices.
Fragrance encyclopedia: note pyramids, accords, perfumers and dupes (parfica.com).
Fragrance & perfume MCP: search fragrances, notes, accords, brands, perfumers, reviews & charts.
Related MCP Servers
AlicenseNot gradedqualityCmaintenanceSearch the 10ML perfume catalogue, compare decant prices and find perfumes by notes.MIT- AlicenseAqualityDmaintenanceSearch and explore 1,100+ games with 69-dimension Gameplay DNA profiles and find similar games via AI-powered cosine similarity.42 npmMIT
- AlicenseAqualityBmaintenanceSearch ethical, origin-verified products and brands from 30+ countries. Find Canadian, sustainable, vegan, and cruelty-free alternatives with affiliate purchase links.644 npmMIT
- AlicenseAqualityDmaintenanceSearch 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).65 npm1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.