Skip to content

Fragrance & Perfume MCP (Noteboxd)

by noteboxd.com · remote · local (npm) · no sign-in to list tools · v0.1.4 · published by com.noteboxd

Fragrance & perfume MCP: search fragrances, notes, accords, brands, perfumers, reviews & charts.

Changes · 4

27 tools: 4 change things and 23 only read.

Scanned Oct 21, 2026

2 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http noteboxd https://mcp.noteboxd.com/mcp

Findings

Matches of fixed checks, with the text they matched.

2 warn
  • The server marks "noteboxd_open" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "noteboxd_open" says "open": a word for a change.

    What this check looks for
  • The server marks "ai_collection" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The description's first verb is "generate": a word for a change.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

27 tools

Changes things 4Claude Code: ask
  • ai_collectionGenerate a curated fragrance collection from a natural-language prompt (e.g.1 finding

    Why it is in this group

    • The description's first verb is "generate": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "ai_collection" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The description's first verb is "generate": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Generate a curated fragrance collection from a natural-language prompt (e.g. 'office-safe designer scents under $100', 'niche oud masterpieces'). Returns 5–25 grounded picks with rationale. Requires Pro. See also: `ai_recommend` for personalized picks · `fragrance_search` for manual filtering.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • ai_wear_todayWhat should I wear today?No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    What should I wear today? Picks from your owned cabinet (CURRENT status only) based on optional prompt/weather. Returns nothing if your cabinet is empty. Requires Pro. See also: `ai_recommend` for discovery beyond your cabinet · `user_get_cabinet` for your full collection.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • noteboxd_openOpen the Noteboxd app UI in ChatGPT.1 finding

    Why it is in this group

    • The name "noteboxd_open" says "open": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "noteboxd_open" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "noteboxd_open" says "open": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Open the Noteboxd app UI in ChatGPT. Call with no arguments to show the home screen (trending fragrances), with `query` to run a fragrance search inside the app, or with `fragrance` (slug or UUID) to show a fragrance profile. The app renders the returned result; keep the chat reply to one short line.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
Only reads 23Claude Code: allow
  • ai_recommendGet personalized fragrance recommendations based on your taste profile.No findings

    Why it is in this group

    • The description's first verb is "get": a word for reading.
    Description, as the server wrote it
    Get personalized fragrance recommendations based on your taste profile. Optional natural-language prompt to guide results (e.g. 'something fresh for summer'). Requires Pro. See also: `ai_wear_today` for what to wear right now · `user_get_cabinet` for your collection.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • brand_getGet a brand profile (name, country, founded, description) and its top fragrances.No findings

    Why it is in this group

    • The name "brand_get" says "get": a word for reading.
    Description, as the server wrote it
    Get a brand profile (name, country, founded, description) and its top fragrances. Use the brand slug, e.g. 'maison-francis-kurkdjian'. See also: `fragrance_search` with the `brand` filter to get the full paginated catalogue for this brand · `perfumer_get` if the brand has a known house perfumer.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • chart_getGet a specific chart leaderboard by slug (e.g.No findings

    Why it is in this group

    • The name "chart_get" says "get": a word for reading.
    Description, as the server wrote it
    Get a specific chart leaderboard by slug (e.g. 'top-rated', 'trending', 'top-rated-brand-chanel'). Returns ranked fragrances with scores and movement. See also: `charts_list` to see all available charts · `fragrance_get` for the full profile of any fragrance on the chart.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • charts_listList all available Noteboxd chart rankings (e.g.No findings

    Why it is in this group

    • The name "charts_list" says "list": a word for reading.
    Description, as the server wrote it
    List all available Noteboxd chart rankings (e.g. top-rated, trending, top by brand). Returns chart names and summary stats. See also: `chart_get` with a chart slug to see the full leaderboard · `trending` for a quick snapshot of what's hot.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • fragrance_compareCompare two fragrances head-to-head — shared vs.No findings

    Why it is in this group

    • The name "fragrance_compare" says "compare": a word for reading.
    Description, as the server wrote it
    Compare two fragrances head-to-head — shared vs. distinct notes/accords/families, community and critic scores, audience, and an AI-written synthesis (shared character, differences, who each suits). Public, cached 7 days per pair. See also: `fragrance_get` for full profiles · `fragrance_similar` for alternatives.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • fragrance_getGet the full profile for a single fragrance by UUID or slug (e.g.No findings

    Why it is in this group

    • The name "fragrance_get" says "get": a word for reading.
    Description, as the server wrote it
    Get the full profile for a single fragrance by UUID or slug (e.g. 'tom-ford/oud-wood'). Returns notes pyramid, accords, FOTW classification, perfumer, community score, and more. See also: `fragrance_similar` for fragrances with similar accord profiles · `fragrance_get_reviews` for community reviews · `fragrance_get_wearing_stats` for when people wear it.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • fragrance_get_reviewsGet paginated community reviews for a fragrance.No findings

    Why it is in this group

    • The name "fragrance_get_reviews" says "get": a word for reading.
    Description, as the server wrote it
    Get paginated community reviews for a fragrance. Sort by helpfulness, recency, or score. See also: `fragrance_get` for the fragrance's full profile · `fragrance_get_wearing_stats` for aggregate wearing data.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • fragrance_get_wearing_statsCommunity wearing counts for a fragrance.No findings

    Why it is in this group

    • The name "fragrance_get_wearing_stats" says "get": a word for reading.
    Description, as the server wrote it
    Community wearing counts for a fragrance. Free tier sees the last 30 days; Pro also sees today and the last 7 days. See also: `fragrance_get` for full profile · `fragrance_similar` for alternatives with similar profiles.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • fragrance_review_digestGet a concise AI-generated digest summarizing a fragrance's community reviews — key themes, consensus, and standout opinions.No findings

    Why it is in this group

    • The description's first verb is "get": a word for reading.
    Description, as the server wrote it
    Get a concise AI-generated digest summarizing a fragrance's community reviews — key themes, consensus, and standout opinions. Public, cached per fragrance. See also: `fragrance_get_reviews` for individual reviews · `fragrance_get` for full profile.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • fragrance_similarFind fragrances with similar accord profiles to a given fragrance.No findings

    Why it is in this group

    • The description's first verb is "find": a word for reading.
    Description, as the server wrote it
    Find fragrances with similar accord profiles to a given fragrance. Returns ranked alternatives based on shared accords and character. See also: `fragrance_get` for the source fragrance's full profile · `fragrance_search` with note/accord filters for manual exploration.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • note_exploreGet a note's profile (family, description, origin, extraction method) and top fragrances featuring it, sorted by community score.No findings

    Why it is in this group

    • The description's first verb is "get": a word for reading.
    Description, as the server wrote it
    Get a note's profile (family, description, origin, extraction method) and top fragrances featuring it, sorted by community score. Use the note slug, e.g. 'oud', 'bergamot', 'iris'. See also: `notes_list` to browse all notes by family/popularity · `fragrance_search` with the `note` filter to find fragrances featuring this note.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • notes_listBrowse fragrance notes — filter by family (e.g.No findings

    Why it is in this group

    • The name "notes_list" says "list": a word for reading.
    Description, as the server wrote it
    Browse fragrance notes — filter by family (e.g. 'woody', 'floral', 'citrus') and sort by popularity or name. Returns note names, families, colours, and fragrance counts. See also: `note_explore` for a single note's full profile and top fragrances · `fragrance_search` with the `note` filter to find fragrances featuring a specific note.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • perfumer_getGet a perfumer's profile (bio, country, house affiliation) and their top fragrances by community score.No findings

    Why it is in this group

    • The name "perfumer_get" says "get": a word for reading.
    Description, as the server wrote it
    Get a perfumer's profile (bio, country, house affiliation) and their top fragrances by community score. See also: `fragrance_search` to find more fragrances by this perfumer · `brand_get` if you want the brand they work for.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • user_get_cabinetGet your fragrance cabinet — fragrances you own, have tried, or finished.No findings

    Why it is in this group

    • The name "user_get_cabinet" says "get": a word for reading.
    Description, as the server wrote it
    Get your fragrance cabinet — fragrances you own, have tried, or finished. Requires a Pro account. See also: `fragrance_get` for full details on any fragrance in your cabinet · `fragrance_similar` to find alternatives to your favourites · `user_get_wishlist` for fragrances you want to try.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • user_get_collectionsGet your collections (fragrance lists).No findings

    Why it is in this group

    • The name "user_get_collections" says "get": a word for reading.
    Description, as the server wrote it
    Get your collections (fragrance lists). Optionally pass a collectionId to see its items. Requires a Pro account. See also: `fragrance_get` for full details on any fragrance in a collection.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • user_get_reviewsGet reviews you've written, or reviews you found helpful.No findings

    Why it is in this group

    • The name "user_get_reviews" says "get": a word for reading.
    Description, as the server wrote it
    Get reviews you've written, or reviews you found helpful. Requires a Pro account. See also: `fragrance_get_reviews` for community reviews on a specific fragrance.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • user_get_wearing_historyGet your wearing check-in history over time.No findings

    Why it is in this group

    • The name "user_get_wearing_history" says "get": a word for reading.
    Description, as the server wrote it
    Get your wearing check-in history over time. Requires a Pro account. See also: `fragrance_get_wearing_stats` for aggregate community wearing data on a specific fragrance.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • user_get_wishlistGet your fragrance wishlist.No findings

    Why it is in this group

    • The name "user_get_wishlist" says "get": a word for reading.
    Description, as the server wrote it
    Get your fragrance wishlist. Requires a Pro account. See also: `fragrance_get` for full details on any wishlist fragrance · `user_get_cabinet` for fragrances you already own.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • user_taste_compareCompare your taste with another user — compatibility score, shared and divergent notes/accords/families, and an optional AI overview.No findings

    Why it is in this group

    • The name "user_taste_compare" says "compare": a word for reading.
    Description, as the server wrote it
    Compare your taste with another user — compatibility score, shared and divergent notes/accords/families, and an optional AI overview. Requires Pro for the overview. See also: `user_taste_public` for a user's top preferences · `user_taste_summary` for your own summary.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • user_taste_publicGet a user's public taste profile — their top notes, accords, and families derived from their collection and reviews.No findings

    Why it is in this group

    • The description's first verb is "get": a word for reading.
    Description, as the server wrote it
    Get a user's public taste profile — their top notes, accords, and families derived from their collection and reviews. No LLM call, deterministic. See also: `user_taste_compare` for compatibility between two users.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • user_taste_summaryGet your AI-generated taste profile summary — a natural-language description of your fragrance preferences based on your cabinet, reviews, and likes.No findings

    Why it is in this group

    • The description's first verb is "get": a word for reading.
    Description, as the server wrote it
    Get your AI-generated taste profile summary — a natural-language description of your fragrance preferences based on your cabinet, reviews, and likes. Requires Pro. See also: `user_taste_public` for the deterministic breakdown · `user_taste_compare` for compatibility.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 0.1.4. Values in angle brackets are yours to fill in.

claude mcp add --transport http noteboxd https://mcp.noteboxd.com/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__noteboxd__search",
      "mcp__noteboxd__fragrance_similar",
      "mcp__noteboxd__charts_list",
      "mcp__noteboxd__chart_get",
      "mcp__noteboxd__notes_list",
      "mcp__noteboxd__ai_recommend",
      "mcp__noteboxd__fragrance_search",
      "mcp__noteboxd__fragrance_get",
      "mcp__noteboxd__fragrance_get_reviews",
      "mcp__noteboxd__fragrance_get_wearing_stats",
      "mcp__noteboxd__brand_get",
      "mcp__noteboxd__perfumer_get",
      "mcp__noteboxd__note_explore",
      "mcp__noteboxd__fragrance_compare",
      "mcp__noteboxd__fragrance_review_digest",
      "mcp__noteboxd__user_get_cabinet",
      "mcp__noteboxd__user_get_wishlist",
      "mcp__noteboxd__user_get_collections",
      "mcp__noteboxd__user_get_reviews",
      "mcp__noteboxd__user_get_wearing_history",
      "mcp__noteboxd__user_taste_public",
      "mcp__noteboxd__user_taste_summary",
      "mcp__noteboxd__user_taste_compare"
    ],
    "ask": [
      "mcp__noteboxd__noteboxd_open",
      "mcp__noteboxd__trending",
      "mcp__noteboxd__ai_wear_today",
      "mcp__noteboxd__ai_collection"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as noteboxd. Review it before you use it.