ScentVerdict
REMOTE · SCENTVERDICT.COM · SCANNED OCT 4
UK fragrance catalogue with verdicts, similarity scores, scent profiles and drydowns.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security80
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one. See how to fix → View diagnostics → Partial
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability65
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 1671 tokens (~278/item across 6 items; 6 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management43
- Stability observed for 13 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 6 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 7 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
How do I install the ScentVerdict MCP server?
ScentVerdict is a hosted endpoint at https://scentverdict.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · scentverdict.com
claude mcp add --transport http com-scentverdict-fragrances 'https://scentverdict.com/mcp'
{
"mcpServers": {
"com-scentverdict-fragrances": {
"url": "https://scentverdict.com/mcp"
}
}
} {
"servers": {
"com-scentverdict-fragrances": {
"type": "http",
"url": "https://scentverdict.com/mcp"
}
}
} [mcp_servers.com-scentverdict-fragrances] url = "https://scentverdict.com/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"com-scentverdict-fragrances": {
"type": "remote",
"url": "https://scentverdict.com/mcp",
"enabled": true
}
}
} openclaw mcp add com-scentverdict-fragrances --url 'https://scentverdict.com/mcp' --transport streamable-http
mcp_servers:
com-scentverdict-fragrances:
url: "https://scentverdict.com/mcp" {
"McpServers": {
"com-scentverdict-fragrances": {
"Transport": "http",
"Url": "https://scentverdict.com/mcp"
}
}
} assistant mcp add com-scentverdict-fragrances -t streamable-http -u 'https://scentverdict.com/mcp'
{
"mcpServers": {
"com-scentverdict-fragrances": {
"type": "http",
"url": "https://scentverdict.com/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 4 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.
- 3 Oct 26 −1
- The server rewrote its instructions, which are the text every model session reads security
- Tool “compare_fragrances” rewrote its description, which is the text the model reads security
- Tool “find_similar_fragrances” rewrote its description, which is the text the model reads security
- Tool “get_fragrance” rewrote its description, which is the text the model reads security
- Tool “recommend_fragrances” rewrote its description, which is the text the model reads security
- Schema quality: 198 → 278 ▼ functional
- Server version: 1.0.0 → 2.0.0 functional
- “compare_fragrances” added an optional parameter “country” cosmetic
- “find_similar_fragrances” added an optional parameter “country” cosmetic
- “get_fragrance” added an optional parameter “country” cosmetic
- “recommend_fragrances” added an optional parameter “budgetMax” cosmetic
- “recommend_fragrances” added an optional parameter “country” cosmetic
- “recommend_fragrances” dropped the optional parameter “budgetMaxGbp” cosmetic
- 2 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.
- 30 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 27 to 30. That category is still filling its 30-day observation window: 8 days of observed history at the previous scan, 9 at this one. The score rises as the window fills, whether or not the server changes.
- 28 Sept 26 +1
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 26 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.
- 25 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 24 Sept 26 +1
- The server rewrote its instructions, which are the text every model session reads security
- Tool “compare_fragrances” rewrote its description, which is the text the model reads security
- Tool “find_similar_fragrances” rewrote its description, which is the text the model reads security
- Tool “get_fragrance” rewrote its description, which is the text the model reads security
- Schema quality: 224 → 198 ▲ functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 4 Oct 2026 · Probed https://scentverdict.com/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=scentverdict.com | CN=WE1,O=Google Trust Services,C=US | 6 Sept 2026 | 5 Dec 2026 | ECDSA 256 | ECDSA-SHA256 | 47bfb2731a95b28c13ca2abe350a1d2a |
| SANs: scentverdict.com, *.scentverdict.com | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of scentverdict.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| scentverdict.com. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=31536000; includeSubDomains; preload |
| x-content-type-options | nosniff |
| x-frame-options | SAMEORIGIN |
| referrer-policy | strict-origin-when-cross-origin |
| permissions-policy | camera=(), microphone=(), geolocation=() |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://scentverdict.com/mcp | Verified | 200 | |
| http (plaintext) | http://scentverdict.com/mcp | HTTPS enforced | 301 | https://scentverdict.com/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
compare_fragrances Compare Two Fragrances ~193
Compare exactly two fragrances side by side using ScentVerdict's own note data: which notes they share, which differ, both verdicts, and both prices for the user's country. Use this whenever the user is choosing between two named fragrances, or asks which of two is better, or how two differ. Use find_similar_fragrances instead when they want alternatives to one fragrance rather than a head to head.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string|null | – | The user's country as an ISO 3166-1 alpha-2 code, for example US, DE or GB. Prices are for this country, in the shop's own currency. Pass it whenever you know where the user is. When omitted, the cli… |
| slugA | string | yes | Slug of the first fragrance. |
| slugB | string | yes | Slug of the second fragrance. |
| Name | Type | Req | Description |
|---|---|---|---|
| a | object|null | yes | The first fragrance. |
| b | object|null | yes | The second fragrance. |
| comparisonUrl | string|null | yes | Canonical URL of the comparison page. |
| error | string|null | yes | Set when the comparison could not be completed. |
| market | object|null | – | The country the prices in this result are for, its currency, and how it was chosen. |
| notFound | object|null | yes | Set when either fragrance is not in the catalogue. |
| onlyInA | array | yes | Notes only in the first. |
| onlyInB | array | yes | Notes only in the second. |
| sharedNotes | array | yes | Notes present in both. |
No examples provided.
find_similar_fragrances Find Similar Fragrances ~306
Find fragrances similar to one the user already knows, optionally steered in a direction such as cheaper, fresher, longer lasting or less sweet. Use this whenever the user names a fragrance and wants something like it: a cheaper alternative, a budget version, something that smells similar, or a gift for someone whose current fragrance they know ('he wears X, what else would suit him'). Each match carries a similarity score computed by ScentVerdict for that specific pair. The cheaper direction lists pairings ScentVerdict has curated first, then similar fragrances priced below the anchor where we hold its price. Each match carries its bottle price for the user's country, in the shop's own currency. Use recommend_fragrances instead when the user names no fragrance to anchor on.
| Name | Type | Req | Description |
|---|---|---|---|
| anchorSlug | string | yes | Slug of the fragrance to anchor on. Use search_fragrances first if you do not have one. |
| country | string|null | – | The user's country as an ISO 3166-1 alpha-2 code, for example US, DE or GB. Prices are for this country, in the shop's own currency. Pass it whenever you know where the user is. When omitted, the cli… |
| direction | string | – | How to steer results away from the anchor. Defaults to the closest overall match. |
| limit | integer | – | Maximum results. Default 5, maximum 10. |
| Name | Type | Req | Description |
|---|---|---|---|
| anchorSlug | string | yes | The fragrance the results were derived from. |
| direction | string | yes | How results were steered away from the anchor. |
| market | object|null | – | The country the prices in this result are for, its currency, and how it was chosen. |
| notFound | object|null | – | Set when the anchor fragrance is not in the catalogue. |
| reason | string|null | yes | Why the result set is empty. Null when results were found. |
| results | array | yes | Ranked matches, closest first. May be empty. |
No examples provided.
get_fragrance Look Up a Fragrance ~229
Look up one fragrance in ScentVerdict's catalogue: its notes, ScentVerdict's own verdict, concentration, launch year, and the lowest current price for a full-size bottle for the user's country, in the shop's own currency. Use this whenever the user names a fragrance and asks what it is, what it smells like, what is in it, what it costs, or whether it is any good. Use search_fragrances first if the name is partial or could mean several variants. Use get_scent_profile instead when the question is about how it develops over the wear.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string|null | – | The user's country as an ISO 3166-1 alpha-2 code, for example US, DE or GB. Prices are for this country, in the shop's own currency. Pass it whenever you know where the user is. When omitted, the cli… |
| slug | string | yes | The fragrance slug, for example bleu-de-chanel. Use search_fragrances if you do not have one. |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string|null | yes | Set when the lookup could not be completed. Explain this rather than guessing. |
| fragrance | object|null | yes | The fragrance. Null when not found or on error. |
| market | object|null | – | The country the prices in this result are for, its currency, and how it was chosen. |
| notFound | object|null | yes | Set when the fragrance is not in the catalogue. Carries suggestions. |
No examples provided.
get_scent_profile Scent Profile and Drydown ~136
Get how a fragrance develops over the wear: opening, heart and base phases, the notes in each, and how many hours each note persists on skin. Use this when the user asks how something evolves, how long it lasts, how it changes through the day, or what the drydown is like. The per-note hours are values held by ScentVerdict against each note rather than a general impression of the fragrance, and they are estimates. Use get_fragrance instead for the verdict, price and general description.
| Name | Type | Req | Description |
|---|---|---|---|
| slug | string | yes | The fragrance slug. Use search_fragrances if you do not have one. |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string|null | yes | Set when the profile could not be read. |
| longestLastingNoteHours | number|null | yes | Hours the longest-lasting note persists. Null when unknown. |
| name | string|null | yes | Fragrance name. |
| notFound | object|null | yes | Set when the fragrance is not in the catalogue. |
| phases | array | yes | Notes grouped by phase: top, heart, base. |
| slug | string|null | yes | Stable identifier. |
| url | string|null | yes | Canonical page URL, carrying the scent wheel and drydown timeline. |
No examples provided.
recommend_fragrances Recommend Fragrances ~384
Recommend fragrances matching what the user describes: season, occasion, budget, strength, staying power and notes they like. Use this when the user wants a suggestion but names no fragrance to work from - for example something for winter, for the office, or under a budget. Season, occasion and intensity are scored numerically per fragrance in ScentVerdict, and the budget is applied against current bottle prices for the user's country, so the constraints are filtered rather than approximated. Each priced row carries its price in the shop's own currency, and the bottle size and price per millilitre wherever the retailer published a size. Pass as many of the constraints as the user gave; all are optional. Use find_similar_fragrances instead when they name a fragrance to anchor on.
| Name | Type | Req | Description |
|---|---|---|---|
| budgetMax | number|null | – | Maximum price for a full-size bottle, in the currency of the user's country (USD for US, EUR for DE, GBP for GB). Only prices in that currency are filtered. |
| country | string|null | – | The user's country as an ISO 3166-1 alpha-2 code, for example US, DE or GB. Prices are for this country, in the shop's own currency. Pass it whenever you know where the user is. When omitted, the cli… |
| genderPresentation | string|null | – | Who the fragrance presents as. |
| intensity | string|null | – | How strong the fragrance should be. |
| limit | integer | – | Maximum results. Default 5, maximum 10. |
| longevityMin | string|null | – | Minimum staying power. |
| noteLoved | string|null | – | A single note the user likes, for example vanilla. |
| occasion | string|null | – | Occasion the fragrance is for. |
| season | string|null | – | Season the fragrance is for. |
| Name | Type | Req | Description |
|---|---|---|---|
| caveat | string|null | yes | Caveat about how the constraints were applied. Null when there is nothing to qualify. |
| market | object|null | – | The country the prices in this result are for, its currency, and how it was chosen. |
| results | array | yes | Matching fragrances. May be empty when the constraints are too narrow. |
No examples provided.
search_fragrances Search Fragrances by Name ~157
Resolve a fragrance name to catalogue entries. Call this FIRST whenever a name is partial, misspelled, or could mean more than one product, then pass the returned slug to another tool. Many fragrances share a name across concentrations and launch years, and flankers hide behind qualifiers, so guessing the variant silently produces the wrong answer for the rest of the conversation. Results carry concentration and launch year precisely so you can tell them apart, and you should offer the user the choice when several match. Use get_fragrance instead when you already hold an exact slug.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum results. Default 8, maximum 20. |
| query | string | yes | Name or partial name to look up. Minimum 2 characters. |
Structured output declared, but exposes no named fields.
No examples provided.
What is the ScentVerdict MCP server?
ScentVerdict is an MCP server listed in the public MCP registry as com.scentverdict/fragrances. UK fragrance catalogue with verdicts, similarity scores, scent profiles and drydowns. This page covers its hosted endpoint (https://scentverdict.com/mcp).
Is the ScentVerdict MCP server safe to use?
ScentVerdict scores 78 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the ScentVerdict MCP server expose?
ScentVerdict exposes 6 tools: get_scent_profile, search_fragrances, find_similar_fragrances, compare_fragrances, recommend_fragrances, get_fragrance. Their descriptions and schemas cost roughly 1,405 tokens of context every time the server is loaded.
Does the ScentVerdict MCP server require authentication?
No. We connected to ScentVerdict without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the ScentVerdict MCP server still maintained?
ScentVerdict is still listed as active in the MCP registry. We last reached this channel on 4 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.