Koskamo

ScentVerdict MCP

An MCP server providing access to ScentVerdict's fragrance database, allowing AI agents to retrieve perfume verdicts, scent profiles, similarity scores, drydown information, and local pricing from shops in 14 countries.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

ScentVerdict MCP logo, by ScentVerdictVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-06Operated by ScentVerdict
MCP endpoint (Streamable HTTP)
https://scentverdict.com/mcp
Vendor documentation

What its tools do

6 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

6 of 6 have a description · 6 of 6 declare behavior hints · 6 of 6 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to scentverdict.com ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Retrieve perfume verdicts and scent profiles
  • Find local prices and shops delivering to a location
  • Get similarity scores and drydown information
  • Answer questions about specific fragrances

Source and maintenance

Vendor evidenceRegistry 2.0.0

Protocol and capabilities

Server
ScentVerdict 2.0.4
MCP protocol negotiated in check
2025-11-25
Tools
6 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "logging": {}
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

ScentVerdict's catalogue holds 31,000+ perfumes and fragrances, each with ScentVerdict's own verdict, its notes, computed similarity scores against specific other fragrances, per-note drydown estimates, and current prices for full-size bottles. Resolve names with search_fragrances first when a name is partial or ambiguous - many fragrances share a name across concentrations and launch years, and picking the wrong variant silently gives the wrong answer. Then pass the returned slug to the other tools. Prices are for the user's country, in the shop's own currency. Pass the user's country as an ISO code (for example US or DE) in the country argument of any tool that returns a price. Each such result carries a market object naming the country the prices are for and how it was chosen; when its source is default, the prices are for GB, so say so and ask the user where they are if it matters. A price marked fromAbroad is from a shop in another country that delivers to the user, and import charges may apply. An estimate is a conversion into the user's currency at a published reference rate, for orientation only. Prices are for full-size bottles and exclude samples and decants. A notFound result means the fragrance is not in this catalogue; it says nothing about whether the fragrance exists.

Tools

6 advertised

get_scent_profile — Scent Profile and Drydown
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

get_scent_profile input schema
{
  "type": "object",
  "required": [
    "slug"
  ],
  "properties": {
    "slug": {
      "type": "string",
      "description": "The fragrance slug. Use search_fragrances if you do not have one."
    }
  }
}
get_scent_profile output schema
{
  "type": "object",
  "required": [
    "name",
    "slug",
    "phases",
    "longestLastingNoteHours",
    "url",
    "notFound",
    "error"
  ],
  "properties": {
    "url": {
      "type": [
        "string",
        "null"
      ],
      "description": "Canonical page URL, carrying the scent wheel and drydown timeline."
    },
    "name": {
      "type": [
        "string",
        "null"
      ],
      "description": "Fragrance name."
    },
    "slug": {
      "type": [
        "string",
        "null"
      ],
      "description": "Stable identifier."
    },
    "error": {
      "type": [
        "string",
        "null"
      ],
      "description": "Set when the profile could not be read."
    },
    "phases": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "phase",
          "notes"
        ],
        "properties": {
          "notes": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "note",
                "slug",
                "family",
                "substantivityHours",
                "volatilityClass"
              ],
              "properties": {
                "note": {
                  "type": "string",
                  "description": "Note name."
                },
                "slug": {
                  "type": "string",
                  "description": "Note slug."
                },
                "family": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Olfactory family. Null when unclassified."
                },
                "volatilityClass": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Intrinsic volatility class. Null when unknown."
                },
                "substantivityHours": {
                  "type": [
                    "number",
                    "null"
                  ],
                  "description": "Expected hours on skin. Null when unknown."
                }
              }
            },
            "description": "Notes in this phase, heaviest first."
          },
          "phase": {
            "type": "string",
            "description": "Phase name: top, heart, base, or unspecified."
          }
        }
      },
      "description": "Notes grouped by phase: top, heart, base."
    },
    "notFound": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "notFound",
        "query",
        "suggestions"
      ],
      "properties": {
        "query": {
          "type": "string",
          "description": "What was asked for."
        },
        "notFound": {
          "type": "boolean",
          "description": "Always true. The requested fragrance is not in the catalogue."
        },
        "suggestions": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "slug",
              "name",
              "brand",
              "concentration",
              "yearLaunched",
              "url"
            ],
            "properties": {
              "url": {
                "type": "string",
                "description": "Canonical page URL."
              },
              "name": {
                "type": "string",
                "description": "Fragrance name without the brand."
              },
              "slug": {
                "type": "string",
                "description": "Stable identifier. Pass this to other tools."
              },
              "brand": {
                "type": "string",
                "description": "Brand name."
              },
              "yearLaunched": {
                "type": [
                  "integer",
                  "null"
                ],
                "description": "Year first launched. Null when unknown."
              },
              "concentration": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Concentration, for example Edt or Edp. Null when unknown."
              }
            }
          },
          "description": "Close catalogue entries the user may have meant. May be empty. Never treat these as the answer without confirming."
        }
      },
      "description": "Set when the fragrance is not in the catalogue."
    },
    "longestLastingNoteHours": {
      "type": [
        "number",
        "null"
      ],
      "description": "Hours the longest-lasting note persists. Null when unknown."
    }
  }
}
get_scent_profile annotations
{
  "title": "Scent Profile and Drydown",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
search_fragrances — Search Fragrances by Name
Advertised by the server during the last successful anonymous check.
Advertised read-only

Resolve a perfume or 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.

search_fragrances input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "default": 8,
      "description": "Maximum results. Default 8, maximum 20."
    },
    "query": {
      "type": "string",
      "description": "Name or partial name to look up. Minimum 2 characters."
    }
  }
}
search_fragrances output schema
{
  "type": "object",
  "required": [
    "result"
  ],
  "properties": {
    "result": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "slug",
          "name",
          "brand",
          "concentration",
          "yearLaunched",
          "url"
        ],
        "properties": {
          "url": {
            "type": "string",
            "description": "Canonical page URL."
          },
          "name": {
            "type": "string",
            "description": "Fragrance name without the brand."
          },
          "slug": {
            "type": "string",
            "description": "Stable identifier. Pass this to other tools."
          },
          "brand": {
            "type": "string",
            "description": "Brand name."
          },
          "yearLaunched": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Year first launched. Null when unknown."
          },
          "concentration": {
            "type": [
              "string",
              "null"
            ],
            "description": "Concentration, for example Edt or Edp. Null when unknown."
          }
        }
      }
    }
  }
}
search_fragrances annotations
{
  "title": "Search Fragrances by Name",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
find_similar_fragrances — Find Similar Fragrances
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

find_similar_fragrances input schema
{
  "type": "object",
  "required": [
    "anchorSlug"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "default": 5,
      "description": "Maximum results. Default 5, maximum 10."
    },
    "country": {
      "type": [
        "string",
        "null"
      ],
      "default": null,
      "description": "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 client's location hint is used if it sent one, otherwise GB."
    },
    "direction": {
      "enum": [
        "Similar",
        "Cheaper",
        "Fresher",
        "LongerLasting",
        "MoreIntense",
        "LessSweet"
      ],
      "type": "string",
      "default": "Similar",
      "description": "How to steer results away from the anchor. Defaults to the closest overall match."
    },
    "anchorSlug": {
      "type": "string",
      "description": "Slug of the fragrance to anchor on. Use search_fragrances first if you do not have one."
    }
  }
}
find_similar_fragrances output schema
{
  "type": "object",
  "required": [
    "anchorSlug",
    "direction",
    "results",
    "reason"
  ],
  "properties": {
    "market": {
      "type": [
        "object",
        "null"
      ],
      "default": null,
      "required": [
        "country",
        "countryName",
        "currency",
        "source"
      ],
      "properties": {
        "source": {
          "type": "string",
          "description": "How the country was chosen: 'argument' (the country you passed), 'clientHint' (the client's location hint), or 'default' (GB, used when neither was given - ask the user for their country if it matters)."
        },
        "country": {
          "type": "string",
          "description": "ISO 3166-1 alpha-2 country the prices are for, for example GB, US or DE."
        },
        "currency": {
          "type": "string",
          "description": "ISO 4217 code of that country's currency. Budgets are read in this currency."
        },
        "countryName": {
          "type": "string",
          "description": "The country's name in English."
        }
      },
      "description": "The country the prices in this result are for, its currency, and how it was chosen."
    },
    "reason": {
      "type": [
        "string",
        "null"
      ],
      "description": "Why the result set is empty. Null when results were found."
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "fragrance",
          "similarityScore",
          "whySimilar",
          "keyDifference",
          "sharedNotes"
        ],
        "properties": {
          "fragrance": {
            "type": "object",
            "required": [
              "slug",
              "name",
              "brand",
              "brandSlug",
              "concentration",
              "yearLaunched",
              "verdictBadge",
              "verdict",
              "keyNotes",
              "price",
              "imageUrl",
              "scentArtUrl",
              "url"
            ],
            "properties": {
              "url": {
                "type": "string",
                "description": "Canonical page URL, carrying the interactive scent wheel, drydown timeline and full descriptor profile."
              },
              "name": {
                "type": "string",
                "description": "Fragrance name without the brand."
              },
              "slug": {
                "type": "string",
                "description": "Stable identifier. Pass this to other tools."
              },
              "brand": {
                "type": "string",
                "description": "Brand name."
              },
              "price": {
                "type": [
                  "object",
                  "null"
                ],
                "required": [
                  "amount",
                  "currency",
                  "sizeMl",
                  "pricePerMl",
                  "excludesTax",
                  "fromAbroad",
                  "shipsFrom",
                  "importChargesMayApply",
                  "estimate"
                ],
                "properties": {
                  "amount": {
                    "type": "number",
                    "description": "The bottle price, in Currency. This is the shop's own price, never a conversion."
                  },
                  "sizeMl": {
                    "type": "number",
                    "description": "Bottle size in millilitres that Amount applies to. 0 means the shop did not state a size."
                  },
                  "currency": {
                    "type": "string",
                    "description": "ISO 4217 currency code of Amount, for example GBP, USD or EUR. The shop's own currency."
                  },
                  "estimate": {
                    "type": [
                      "object",
                      "null"
                    ],
                    "required": [
                      "amount",
                      "currency",
                      "rateDate"
                    ],
                    "properties": {
                      "amount": {
                        "type": "number",
                        "description": "The price converted to Currency, in whole units. Approximate."
                      },
                      "currency": {
                        "type": "string",
                        "description": "ISO 4217 code of the user's currency."
                      },
                      "rateDate": {
                        "type": "string",
                        "description": "Date of the reference rate used, as YYYY-MM-DD. The European Central Bank's rate, or Frankfurter's for a currency the ECB does not publish."
                      }
                    },
                    "description": "Rough value of Amount in the user's currency, at a published reference rate. Present only when Currency differs from the user's currency and a recent rate exists. For orientation only: never use it to rank, compare or filter prices."
                  },
                  "shipsFrom": {
                    "type": "string",
                    "description": "ISO 3166-1 alpha-2 country the shop sells from, for example GB or US."
                  },
                  "fromAbroad": {
                    "type": "boolean",
                    "description": "True when no shop in the user's own customs area sells a bottle, so this is the cheapest bottle from a shop in another country that delivers to them."
                  },
                  "pricePerMl": {
                    "type": [
                      "number",
                      "null"
                    ],
                    "description": "Amount divided by SizeMl, in Currency. USE THIS to compare value between fragrances priced in the same currency, never the bottle price - a small bottle can look cheap while costing far more per millilitre. Null when the size is unknown."
                  },
                  "excludesTax": {
                    "type": "boolean",
                    "description": "True when the shop quotes this price before sales tax, as US shops do. Say so when you quote it."
                  },
                  "importChargesMayApply": {
                    "type": "boolean",
                    "description": "True when the user may have to pay import charges on top of Amount. Say 'import charges may apply' when you quote it."
                  }
                },
                "description": "Cheapest full-size bottle for the user's country, in the shop's own currency. Excludes samples and decants. Null when we hold no bottle price a shop will sell to that country."
              },
              "verdict": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "The full ScentVerdict editorial verdict. Null when this row came from a source that carries no verdict."
              },
              "imageUrl": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Bottle image URL. Null when we hold no image."
              },
              "keyNotes": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "The most characteristic notes. May be empty."
              },
              "brandSlug": {
                "type": "string",
                "description": "Brand slug."
              },
              "scentArtUrl": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "ScentArt visual URL, generated from this fragrance's own composition. Null when not yet rendered."
              },
              "verdictBadge": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Editorial classification: Favourite, Statement or Acquired. Null when not yet classified."
              },
              "yearLaunched": {
                "type": [
                  "integer",
                  "null"
                ],
                "description": "Year first launched. Null when unknown."
              },
              "concentration": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Concentration, for example Edt, Edp or Parfum. Null when unknown."
              }
            },
            "description": "The matched fragrance."
          },
          "whySimilar": {
            "type": [
              "string",
              "null"
            ],
            "description": "What the two have in common. Null when we hold no written comparison."
          },
          "sharedNotes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Notes present in both. May be empty."
          },
          "keyDifference": {
            "type": [
              "string",
              "null"
            ],
            "description": "How the two differ. Null when we hold no written comparison."
          },
          "similarityScore": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Similarity score out of 100. Null when the source carries no score."
          }
        }
      },
      "description": "Ranked matches, closest first. May be empty."
    },
    "notFound": {
      "type": [
        "object",
        "null"
      ],
      "default": null,
      "required": [
        "notFound",
        "query",
        "suggestions"
      ],
      "properties": {
        "query": {
          "type": "string",
          "description": "What was asked for."
        },
        "notFound": {
          "type": "boolean",
          "description": "Always true. The requested fragrance is not in the catalogue."
        },
        "suggestions": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "slug",
              "name",
              "brand",
              "concentration",
              "yearLaunched",
              "url"
            ],
            "properties": {
              "url": {
                "type": "string",
                "description": "Canonical page URL."
              },
              "name": {
                "type": "string",
                "description": "Fragrance name without the brand."
              },
              "slug": {
                "type": "string",
                "description": "Stable identifier. Pass this to other tools."
              },
              "brand": {
                "type": "string",
                "description": "Brand name."
              },
              "yearLaunched": {
                "type": [
                  "integer",
                  "null"
                ],
                "description": "Year first launched. Null when unknown."
              },
              "concentration": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Concentration, for example Edt or Edp. Null when unknown."
              }
            }
          },
          "description": "Close catalogue entries the user may have meant. May be empty. Never treat these as the answer without confirming."
        }
      },
      "description": "Set when the anchor fragrance is not in the catalogue."
    },
    "direction": {
      "type": "string",
      "description": "How results were steered away from the anchor."
    },
    "anchorSlug": {
      "type": "string",
      "description": "The fragrance the results were derived from."
    }
  }
}
find_similar_fragrances annotations
{
  "title": "Find Similar Fragrances",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
compare_fragrances — Compare Two Fragrances
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

compare_fragrances input schema
{
  "type": "object",
  "required": [
    "slugA",
    "slugB"
  ],
  "properties": {
    "slugA": {
      "type": "string",
      "description": "Slug of the first fragrance."
    },
    "slugB": {
      "type": "string",
      "description": "Slug of the second fragrance."
    },
    "country": {
      "type": [
        "string",
        "null"
      ],
      "default": null,
      "description": "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 client's location hint is used if it sent one, otherwise GB."
    }
  }
}
compare_fragrances output schema
{
  "type": "object",
  "required": [
    "a",
    "b",
    "sharedNotes",
    "onlyInA",
    "onlyInB",
    "comparisonUrl",
    "notFound",
    "error"
  ],
  "properties": {
    "a": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "slug",
        "name",
        "brand",
        "brandSlug",
        "concentration",
        "yearLaunched",
        "verdictBadge",
        "verdict",
        "keyNotes",
        "price",
        "imageUrl",
        "scentArtUrl",
        "url"
      ],
      "properties": {
        "url": {
          "type": "string",
          "description": "Canonical page URL, carrying the interactive scent wheel, drydown timeline and full descriptor profile."
        },
        "name": {
          "type": "string",
          "description": "Fragrance name without the brand."
        },
        "slug": {
          "type": "string",
          "description": "Stable identifier. Pass this to other tools."
        },
        "brand": {
          "type": "string",
          "description": "Brand name."
        },
        "price": {
          "type": [
            "object",
            "null"
          ],
          "required": [
            "amount",
            "currency",
            "sizeMl",
            "pricePerMl",
            "excludesTax",
            "fromAbroad",
            "shipsFrom",
            "importChargesMayApply",
            "estimate"
          ],
          "properties": {
            "amount": {
              "type": "number",
              "description": "The bottle price, in Currency. This is the shop's own price, never a conversion."
            },
            "sizeMl": {
              "type": "number",
              "description": "Bottle size in millilitres that Amount applies to. 0 means the shop did not state a size."
            },
            "currency": {
              "type": "string",
              "description": "ISO 4217 currency code of Amount, for example GBP, USD or EUR. The shop's own currency."
            },
            "estimate": {
              "type": [
                "object",
                "null"
              ],
              "required": [
                "amount",
                "currency",
                "rateDate"
              ],
              "properties": {
                "amount": {
                  "type": "number",
                  "description": "The price converted to Currency, in whole units. Approximate."
                },
                "currency": {
                  "type": "string",
                  "description": "ISO 4217 code of the user's currency."
                },
                "rateDate": {
                  "type": "string",
                  "description": "Date of the reference rate used, as YYYY-MM-DD. The European Central Bank's rate, or Frankfurter's for a currency the ECB does not publish."
                }
              },
              "description": "Rough value of Amount in the user's currency, at a published reference rate. Present only when Currency differs from the user's currency and a recent rate exists. For orientation only: never use it to rank, compare or filter prices."
            },
            "shipsFrom": {
              "type": "string",
              "description": "ISO 3166-1 alpha-2 country the shop sells from, for example GB or US."
            },
            "fromAbroad": {
              "type": "boolean",
              "description": "True when no shop in the user's own customs area sells a bottle, so this is the cheapest bottle from a shop in another country that delivers to them."
            },
            "pricePerMl": {
              "type": [
                "number",
                "null"
              ],
              "description": "Amount divided by SizeMl, in Currency. USE THIS to compare value between fragrances priced in the same currency, never the bottle price - a small bottle can look cheap while costing far more per millilitre. Null when the size is unknown."
            },
            "excludesTax": {
              "type": "boolean",
              "description": "True when the shop quotes this price before sales tax, as US shops do. Say so when you quote it."
            },
            "importChargesMayApply": {
              "type": "boolean",
              "description": "True when the user may have to pay import charges on top of Amount. Say 'import charges may apply' when you quote it."
            }
          },
          "description": "Cheapest full-size bottle for the user's country, in the shop's own currency. Excludes samples and decants. Null when we hold no bottle price a shop will sell to that country."
        },
        "verdict": {
          "type": [
            "string",
            "null"
          ],
          "description": "The full ScentVerdict editorial verdict. Null when this row came from a source that carries no verdict."
        },
        "imageUrl": {
          "type": [
            "string",
            "null"
          ],
          "description": "Bottle image URL. Null when we hold no image."
        },
        "keyNotes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The most characteristic notes. May be empty."
        },
        "brandSlug": {
          "type": "string",
          "description": "Brand slug."
        },
        "scentArtUrl": {
          "type": [
            "string",
            "null"
          ],
          "description": "ScentArt visual URL, generated from this fragrance's own composition. Null when not yet rendered."
        },
        "verdictBadge": {
          "type": [
            "string",
            "null"
          ],
          "description": "Editorial classification: Favourite, Statement or Acquired. Null when not yet classified."
        },
        "yearLaunched": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Year first launched. Null when unknown."
        },
        "concentration": {
          "type": [
            "string",
            "null"
          ],
          "description": "Concentration, for example Edt, Edp or Parfum. Null when unknown."
        }
      },
      "description": "The first fragrance."
    },
    "b": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "slug",
        "name",
        "brand",
        "brandSlug",
        "concentration",
        "yearLaunched",
        "verdictBadge",
        "verdict",
        "keyNotes",
        "price",
        "imageUrl",
        "scentArtUrl",
        "url"
      ],
      "properties": {
        "url": {
          "type": "string",
          "description": "Canonical page URL, carrying the interactive scent wheel, drydown timeline and full descriptor profile."
        },
        "name": {
          "type": "string",
          "description": "Fragrance name without the brand."
        },
        "slug": {
          "type": "string",
          "description": "Stable identifier. Pass this to other tools."
        },
        "brand": {
          "type": "string",
          "description": "Brand name."
        },
        "price": {
          "$ref": "#/properties/a/properties/price",
          "description": "Cheapest full-size bottle for the user's country, in the shop's own currency. Excludes samples and decants. Null when we hold no bottle price a shop will sell to that country."
        },
        "verdict": {
          "type": [
            "string",
            "null"
          ],
          "description": "The full ScentVerdict editorial verdict. Null when this row came from a source that carries no verdict."
        },
        "imageUrl": {
          "type": [
            "string",
            "null"
          ],
          "description": "Bottle image URL. Null when we hold no image."
        },
        "keyNotes": {
          "$ref": "#/properties/a/properties/keyNotes",
          "items": {},
          "description": "The most characteristic notes. May be empty."
        },
        "brandSlug": {
          "type": "string",
          "description": "Brand slug."
        },
        "scentArtUrl": {
          "type": [
            "string",
            "null"
          ],
          "description": "ScentArt visual URL, generated from this fragrance's own composition. Null when not yet rendered."
        },
        "verdictBadge": {
          "type": [
            "string",
            "null"
          ],
          "description": "Editorial classification: Favourite, Statement or Acquired. Null when not yet classified."
        },
        "yearLaunched": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Year first launched. Null when unknown."
        },
        "concentration": {
          "type": [
            "string",
            "null"
          ],
          "description": "Concentration, for example Edt, Edp or Parfum. Null when unknown."
        }
      },
      "description": "The second fragrance."
    },
    "error": {
      "type": [
        "string",
        "null"
      ],
      "description": "Set when the comparison could not be completed."
    },
    "market": {
      "type": [
        "object",
        "null"
      ],
      "default": null,
      "required": [
        "country",
        "countryName",
        "currency",
        "source"
      ],
      "properties": {
        "source": {
          "type": "string",
          "description": "How the country was chosen: 'argument' (the country you passed), 'clientHint' (the client's location hint), or 'default' (GB, used when neither was given - ask the user for their country if it matters)."
        },
        "country": {
          "type": "string",
          "description": "ISO 3166-1 alpha-2 country the prices are for, for example GB, US or DE."
        },
        "currency": {
          "type": "string",
          "description": "ISO 4217 code of that country's currency. Budgets are read in this currency."
        },
        "countryName": {
          "type": "string",
          "description": "The country's name in English."
        }
      },
      "description": "The country the prices in this result are for, its currency, and how it was chosen."
    },
    "onlyInA": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Notes only in the first."
    },
    "onlyInB": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Notes only in the second."
    },
    "notFound": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "notFound",
        "query",
        "suggestions"
      ],
      "properties": {
        "query": {
          "type": "string",
          "description": "What was asked for."
        },
        "notFound": {
          "type": "boolean",
          "description": "Always true. The requested fragrance is not in the catalogue."
        },
        "suggestions": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "slug",
              "name",
              "brand",
              "concentration",
              "yearLaunched",
              "url"
            ],
            "properties": {
              "url": {
                "type": "string",
                "description": "Canonical page URL."
              },
              "name": {
                "type": "string",
                "description": "Fragrance name without the brand."
              },
              "slug": {
                "type": "string",
                "description": "Stable identifier. Pass this to other tools."
              },
              "brand": {
                "type": "string",
                "description": "Brand name."
              },
              "yearLaunched": {
                "type": [
                  "integer",
                  "null"
                ],
                "description": "Year first launched. Null when unknown."
              },
              "concentration": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Concentration, for example Edt or Edp. Null when unknown."
              }
            }
          },
          "description": "Close catalogue entries the user may have meant. May be empty. Never treat these as the answer without confirming."
        }
      },
      "description": "Set when either fragrance is not in the catalogue."
    },
    "sharedNotes": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Notes present in both."
    },
    "comparisonUrl": {
      "type": [
        "string",
        "null"
      ],
      "description": "Canonical URL of the comparison page."
    }
  }
}
compare_fragrances annotations
{
  "title": "Compare Two Fragrances",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
recommend_fragrances — Recommend Fragrances
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

recommend_fragrances input schema
{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "default": 5,
      "description": "Maximum results. Default 5, maximum 10."
    },
    "season": {
      "enum": [
        "Spring",
        "Summer",
        "Autumn",
        "Winter",
        null
      ],
      "type": [
        "string",
        "null"
      ],
      "default": null,
      "description": "Season the fragrance is for."
    },
    "country": {
      "type": [
        "string",
        "null"
      ],
      "default": null,
      "description": "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 client's location hint is used if it sent one, otherwise GB."
    },
    "occasion": {
      "enum": [
        "Office",
        "Date",
        "Casual",
        "Formal",
        "Sport",
        null
      ],
      "type": [
        "string",
        "null"
      ],
      "default": null,
      "description": "Occasion the fragrance is for."
    },
    "budgetMax": {
      "type": [
        "number",
        "null"
      ],
      "default": null,
      "description": "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."
    },
    "intensity": {
      "enum": [
        "Sheer",
        "Light",
        "Moderate",
        "Strong",
        "Potent",
        null
      ],
      "type": [
        "string",
        "null"
      ],
      "default": null,
      "description": "How strong the fragrance should be."
    },
    "noteLoved": {
      "type": [
        "string",
        "null"
      ],
      "default": null,
      "description": "A single note the user likes, for example vanilla."
    },
    "longevityMin": {
      "enum": [
        "Fleeting",
        "Short",
        "Moderate",
        "Long",
        "Beast",
        null
      ],
      "type": [
        "string",
        "null"
      ],
      "default": null,
      "description": "Minimum staying power."
    },
    "genderPresentation": {
      "enum": [
        "Masculine",
        "Feminine",
        "Unisex",
        null
      ],
      "type": [
        "string",
        "null"
      ],
      "default": null,
      "description": "Who the fragrance presents as."
    }
  }
}
recommend_fragrances output schema
{
  "type": "object",
  "required": [
    "results",
    "caveat"
  ],
  "properties": {
    "caveat": {
      "type": [
        "string",
        "null"
      ],
      "description": "Caveat about how the constraints were applied. Null when there is nothing to qualify."
    },
    "market": {
      "type": [
        "object",
        "null"
      ],
      "default": null,
      "required": [
        "country",
        "countryName",
        "currency",
        "source"
      ],
      "properties": {
        "source": {
          "type": "string",
          "description": "How the country was chosen: 'argument' (the country you passed), 'clientHint' (the client's location hint), or 'default' (GB, used when neither was given - ask the user for their country if it matters)."
        },
        "country": {
          "type": "string",
          "description": "ISO 3166-1 alpha-2 country the prices are for, for example GB, US or DE."
        },
        "currency": {
          "type": "string",
          "description": "ISO 4217 code of that country's currency. Budgets are read in this currency."
        },
        "countryName": {
          "type": "string",
          "description": "The country's name in English."
        }
      },
      "description": "The country the prices in this result are for, its currency, and how it was chosen."
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "slug",
          "name",
          "brand",
          "brandSlug",
          "concentration",
          "yearLaunched",
          "verdictBadge",
          "verdict",
          "keyNotes",
          "price",
          "imageUrl",
          "scentArtUrl",
          "url"
        ],
        "properties": {
          "url": {
            "type": "string",
            "description": "Canonical page URL, carrying the interactive scent wheel, drydown timeline and full descriptor profile."
          },
          "name": {
            "type": "string",
            "description": "Fragrance name without the brand."
          },
          "slug": {
            "type": "string",
            "description": "Stable identifier. Pass this to other tools."
          },
          "brand": {
            "type": "string",
            "description": "Brand name."
          },
          "price": {
            "type": [
              "object",
              "null"
            ],
            "required": [
              "amount",
              "currency",
              "sizeMl",
              "pricePerMl",
              "excludesTax",
              "fromAbroad",
              "shipsFrom",
              "importChargesMayApply",
              "estimate"
            ],
            "properties": {
              "amount": {
                "type": "number",
                "description": "The bottle price, in Currency. This is the shop's own price, never a conversion."
              },
              "sizeMl": {
                "type": "number",
                "description": "Bottle size in millilitres that Amount applies to. 0 means the shop did not state a size."
              },
              "currency": {
                "type": "string",
                "description": "ISO 4217 currency code of Amount, for example GBP, USD or EUR. The shop's own currency."
              },
              "estimate": {
                "type": [
                  "object",
                  "null"
                ],
                "required": [
                  "amount",
                  "currency",
                  "rateDate"
                ],
                "properties": {
                  "amount": {
                    "type": "number",
                    "description": "The price converted to Currency, in whole units. Approximate."
                  },
                  "currency": {
                    "type": "string",
                    "description": "ISO 4217 code of the user's currency."
                  },
                  "rateDate": {
                    "type": "string",
                    "description": "Date of the reference rate used, as YYYY-MM-DD. The European Central Bank's rate, or Frankfurter's for a currency the ECB does not publish."
                  }
                },
                "description": "Rough value of Amount in the user's currency, at a published reference rate. Present only when Currency differs from the user's currency and a recent rate exists. For orientation only: never use it to rank, compare or filter prices."
              },
              "shipsFrom": {
                "type": "string",
                "description": "ISO 3166-1 alpha-2 country the shop sells from, for example GB or US."
              },
              "fromAbroad": {
                "type": "boolean",
                "description": "True when no shop in the user's own customs area sells a bottle, so this is the cheapest bottle from a shop in another country that delivers to them."
              },
              "pricePerMl": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "Amount divided by SizeMl, in Currency. USE THIS to compare value between fragrances priced in the same currency, never the bottle price - a small bottle can look cheap while costing far more per millilitre. Null when the size is unknown."
              },
              "excludesTax": {
                "type": "boolean",
                "description": "True when the shop quotes this price before sales tax, as US shops do. Say so when you quote it."
              },
              "importChargesMayApply": {
                "type": "boolean",
                "description": "True when the user may have to pay import charges on top of Amount. Say 'import charges may apply' when you quote it."
              }
            },
            "description": "Cheapest full-size bottle for the user's country, in the shop's own currency. Excludes samples and decants. Null when we hold no bottle price a shop will sell to that country."
          },
          "verdict": {
            "type": [
              "string",
              "null"
            ],
            "description": "The full ScentVerdict editorial verdict. Null when this row came from a source that carries no verdict."
          },
          "imageUrl": {
            "type": [
              "string",
              "null"
            ],
            "description": "Bottle image URL. Null when we hold no image."
          },
          "keyNotes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The most characteristic notes. May be empty."
          },
          "brandSlug": {
            "type": "string",
            "description": "Brand slug."
          },
          "scentArtUrl": {
            "type": [
              "string",
              "null"
            ],
            "description": "ScentArt visual URL, generated from this fragrance's own composition. Null when not yet rendered."
          },
          "verdictBadge": {
            "type": [
              "string",
              "null"
            ],
            "description": "Editorial classification: Favourite, Statement or Acquired. Null when not yet classified."
          },
          "yearLaunched": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Year first launched. Null when unknown."
          },
          "concentration": {
            "type": [
              "string",
              "null"
            ],
            "description": "Concentration, for example Edt, Edp or Parfum. Null when unknown."
          }
        }
      },
      "description": "Matching fragrances. May be empty when the constraints are too narrow."
    }
  }
}
recommend_fragrances annotations
{
  "title": "Recommend Fragrances",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_fragrance — Look Up a Fragrance
Advertised by the server during the last successful anonymous check.
Advertised read-only

Look up one perfume or 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.

get_fragrance input schema
{
  "type": "object",
  "required": [
    "slug"
  ],
  "properties": {
    "slug": {
      "type": "string",
      "description": "The fragrance slug, for example bleu-de-chanel. Use search_fragrances if you do not have one."
    },
    "country": {
      "type": [
        "string",
        "null"
      ],
      "default": null,
      "description": "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 client's location hint is used if it sent one, otherwise GB."
    }
  }
}
get_fragrance output schema
{
  "type": "object",
  "required": [
    "fragrance",
    "notFound",
    "error"
  ],
  "properties": {
    "error": {
      "type": [
        "string",
        "null"
      ],
      "description": "Set when the lookup could not be completed. Explain this rather than guessing."
    },
    "market": {
      "type": [
        "object",
        "null"
      ],
      "default": null,
      "required": [
        "country",
        "countryName",
        "currency",
        "source"
      ],
      "properties": {
        "source": {
          "type": "string",
          "description": "How the country was chosen: 'argument' (the country you passed), 'clientHint' (the client's location hint), or 'default' (GB, used when neither was given - ask the user for their country if it matters)."
        },
        "country": {
          "type": "string",
          "description": "ISO 3166-1 alpha-2 country the prices are for, for example GB, US or DE."
        },
        "currency": {
          "type": "string",
          "description": "ISO 4217 code of that country's currency. Budgets are read in this currency."
        },
        "countryName": {
          "type": "string",
          "description": "The country's name in English."
        }
      },
      "description": "The country the prices in this result are for, its currency, and how it was chosen."
    },
    "notFound": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "notFound",
        "query",
        "suggestions"
      ],
      "properties": {
        "query": {
          "type": "string",
          "description": "What was asked for."
        },
        "notFound": {
          "type": "boolean",
          "description": "Always true. The requested fragrance is not in the catalogue."
        },
        "suggestions": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "slug",
              "name",
              "brand",
              "concentration",
              "yearLaunched",
              "url"
            ],
            "properties": {
              "url": {
                "type": "string",
                "description": "Canonical page URL."
              },
              "name": {
                "type": "string",
                "description": "Fragrance name without the brand."
              },
              "slug": {
                "type": "string",
                "description": "Stable identifier. Pass this to other tools."
              },
              "brand": {
                "type": "string",
                "description": "Brand name."
              },
              "yearLaunched": {
                "type": [
                  "integer",
                  "null"
                ],
                "description": "Year first launched. Null when unknown."
              },
              "concentration": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Concentration, for example Edt or Edp. Null when unknown."
              }
            }
          },
          "description": "Close catalogue entries the user may have meant. May be empty. Never treat these as the answer without confirming."
        }
      },
      "description": "Set when the fragrance is not in the catalogue. Carries suggestions."
    },
    "fragrance": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "slug",
        "name",
        "brand",
        "brandSlug",
        "concentration",
        "yearLaunched",
        "verdictBadge",
        "verdict",
        "keyNotes",
        "price",
        "imageUrl",
        "scentArtUrl",
        "url"
      ],
      "properties": {
        "url": {
          "type": "string",
          "description": "Canonical page URL, carrying the interactive scent wheel, drydown timeline and full descriptor profile."
        },
        "name": {
          "type": "string",
          "description": "Fragrance name without the brand."
        },
        "slug": {
          "type": "string",
          "description": "Stable identifier. Pass this to other tools."
        },
        "brand": {
          "type": "string",
          "description": "Brand name."
        },
        "price": {
          "type": [
            "object",
            "null"
          ],
          "required": [
            "amount",
            "currency",
            "sizeMl",
            "pricePerMl",
            "excludesTax",
            "fromAbroad",
            "shipsFrom",
            "importChargesMayApply",
            "estimate"
          ],
          "properties": {
            "amount": {
              "type": "number",
              "description": "The bottle price, in Currency. This is the shop's own price, never a conversion."
            },
            "sizeMl": {
              "type": "number",
              "description": "Bottle size in millilitres that Amount applies to. 0 means the shop did not state a size."
            },
            "currency": {
              "type": "string",
              "description": "ISO 4217 currency code of Amount, for example GBP, USD or EUR. The shop's own currency."
            },
            "estimate": {
              "type": [
                "object",
                "null"
              ],
              "required": [
                "amount",
                "currency",
                "rateDate"
              ],
              "properties": {
                "amount": {
                  "type": "number",
                  "description": "The price converted to Currency, in whole units. Approximate."
                },
                "currency": {
                  "type": "string",
                  "description": "ISO 4217 code of the user's currency."
                },
                "rateDate": {
                  "type": "string",
                  "description": "Date of the reference rate used, as YYYY-MM-DD. The European Central Bank's rate, or Frankfurter's for a currency the ECB does not publish."
                }
              },
              "description": "Rough value of Amount in the user's currency, at a published reference rate. Present only when Currency differs from the user's currency and a recent rate exists. For orientation only: never use it to rank, compare or filter prices."
            },
            "shipsFrom": {
              "type": "string",
              "description": "ISO 3166-1 alpha-2 country the shop sells from, for example GB or US."
            },
            "fromAbroad": {
              "type": "boolean",
              "description": "True when no shop in the user's own customs area sells a bottle, so this is the cheapest bottle from a shop in another country that delivers to them."
            },
            "pricePerMl": {
              "type": [
                "number",
                "null"
              ],
              "description": "Amount divided by SizeMl, in Currency. USE THIS to compare value between fragrances priced in the same currency, never the bottle price - a small bottle can look cheap while costing far more per millilitre. Null when the size is unknown."
            },
            "excludesTax": {
              "type": "boolean",
              "description": "True when the shop quotes this price before sales tax, as US shops do. Say so when you quote it."
            },
            "importChargesMayApply": {
              "type": "boolean",
              "description": "True when the user may have to pay import charges on top of Amount. Say 'import charges may apply' when you quote it."
            }
          },
          "description": "Cheapest full-size bottle for the user's country, in the shop's own currency. Excludes samples and decants. Null when we hold no bottle price a shop will sell to that country."
        },
        "verdict": {
          "type": [
            "string",
            "null"
          ],
          "description": "The full ScentVerdict editorial verdict. Null when this row came from a source that carries no verdict."
        },
        "imageUrl": {
          "type": [
            "string",
            "null"
          ],
          "description": "Bottle image URL. Null when we hold no image."
        },
        "keyNotes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The most characteristic notes. May be empty."
        },
        "brandSlug": {
          "type": "string",
          "description": "Brand slug."
        },
        "scentArtUrl": {
          "type": [
            "string",
            "null"
          ],
          "description": "ScentArt visual URL, generated from this fragrance's own composition. Null when not yet rendered."
        },
        "verdictBadge": {
          "type": [
            "string",
            "null"
          ],
          "description": "Editorial classification: Favourite, Statement or Acquired. Null when not yet classified."
        },
        "yearLaunched": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Year first launched. Null when unknown."
        },
        "concentration": {
          "type": [
            "string",
            "null"
          ],
          "description": "Concentration, for example Edt, Edp or Parfum. Null when unknown."
        }
      },
      "description": "The fragrance. Null when not found or on error."
    }
  }
}
get_fragrance annotations
{
  "title": "Look Up a Fragrance",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1802 ms
95th percentile latency
1802 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1802 ms · metadata changed · 6 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http scentverdict-mcp https://scentverdict.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add scentverdict-mcp --url https://scentverdict.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable scentverdict-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "scentverdict-mcp": {
      "url": "https://scentverdict.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "scentverdict-mcp": {
      "type": "streamableHttp",
      "url": "https://scentverdict.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start scentverdict-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "scentverdict-mcp": {
      "type": "http",
      "url": "https://scentverdict.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http scentverdict-mcp https://scentverdict.com/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://scentverdict.com/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "scentverdict-mcp": {
      "serverUrl": "https://scentverdict.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like ScentVerdict MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run ScentVerdict MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing