Server definition
- Hash
- sha256:6ba0811be28995f3fa286f9c1ac5101f4fcd34b108b4e9ff104c53dd8179302e
- What it is
- What a remote MCP server returned when asked what it offers: 27 tools
The blob, as servednamed by its sha256
{
"instructions": null,
"tools": [
{
"description": "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.\n\nSee also: `ai_recommend` for personalized picks · `fragrance_search` for manual filtering.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"context": {
"description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
"type": "string"
},
"prompt": {
"description": "What kind of collection to create, e.g. 'niche oud masterpieces'",
"maxLength": 200,
"minLength": 1,
"type": "string"
},
"response_format": {
"default": "markdown",
"enum": [
"markdown",
"json"
],
"type": "string"
},
"size": {
"default": 10,
"maximum": 25,
"minimum": 5,
"type": "integer"
}
},
"required": [
"prompt",
"context"
],
"type": "object"
},
"name": "ai_collection",
"outputSchema": null
},
{
"description": "Get personalized fragrance recommendations based on your taste profile. Optional natural-language prompt to guide results (e.g. 'something fresh for summer'). Requires Pro.\n\nSee also: `ai_wear_today` for what to wear right now · `user_get_cabinet` for your collection.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"context": {
"description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
"type": "string"
},
"limit": {
"default": 12,
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"prompt": {
"description": "Optional natural-language guidance, e.g. 'fresh for summer office'",
"maxLength": 200,
"type": "string"
},
"response_format": {
"default": "markdown",
"enum": [
"markdown",
"json"
],
"type": "string"
}
},
"required": [
"context"
],
"type": "object"
},
"name": "ai_recommend",
"outputSchema": null
},
{
"description": "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.\n\nSee also: `ai_recommend` for discovery beyond your cabinet · `user_get_cabinet` for your full collection.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"context": {
"description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
"type": "string"
},
"prompt": {
"description": "Optional mood/occasion, e.g. 'dinner date'",
"maxLength": 200,
"type": "string"
},
"response_format": {
"default": "markdown",
"enum": [
"markdown",
"json"
],
"type": "string"
},
"weather": {
"description": "Optional weather context, e.g. 'hot and humid'",
"maxLength": 200,
"type": "string"
}
},
"required": [
"context"
],
"type": "object"
},
"name": "ai_wear_today",
"outputSchema": null
},
{
"description": "Get a brand profile (name, country, founded, description) and its top fragrances. Use the brand slug, e.g. 'maison-francis-kurkdjian'.\n\nSee 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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"context": {
"description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
"type": "string"
},
"response_format": {
"default": "markdown",
"enum": [
"markdown",
"json"
],
"type": "string"
},
"slug": {
"description": "Brand slug, e.g. 'maison-francis-kurkdjian'",
"type": "string"
}
},
"required": [
"slug",
"context"
],
"type": "object"
},
"name": "brand_get",
"outputSchema": null
},
{
"description": "Get a specific chart leaderboard by slug (e.g. 'top-rated', 'trending', 'top-rated-brand-chanel'). Returns ranked fragrances with scores and movement.\n\nSee also: `charts_list` to see all available charts · `fragrance_get` for the full profile of any fragrance on the chart.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"context": {
"description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
"type": "string"
},
"response_format": {
"default": "markdown",
"enum": [
"markdown",
"json"
],
"type": "string"
},
"slug": {
"description": "Chart slug, e.g. 'top-rated', 'trending', 'top-rated-brand-chanel'",
"type": "string"
}
},
"required": [
"slug",
"context"
],
"type": "object"
},
"name": "chart_get",
"outputSchema": null
},
{
"description": "List all available Noteboxd chart rankings (e.g. top-rated, trending, top by brand). Returns chart names and summary stats.\n\nSee also: `chart_get` with a chart slug to see the full leaderboard · `trending` for a quick snapshot of what's hot.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"context": {
"description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
"type": "string"
},
"response_format": {
"default": "markdown",
"enum": [
"markdown",
"json"
],
"type": "string"
}
},
"required": [
"context"
],
"type": "object"
},
"name": "charts_list",
"outputSchema": null
},
{
"description": "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.\n\nSee also: `fragrance_get` for full profiles · `fragrance_similar` for alternatives.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"context": {
"description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
"type": "string"
},
"fragrance_a": {
"description": "First fragrance UUID",
"type": "string"
},
"fragrance_b": {
"description": "Second fragrance UUID (must differ from fragrance_a)",
"type": "string"
},
"response_format": {
"default": "markdown",
"enum": [
"markdown",
"json"
],
"type": "string"
}
},
"required": [
"fragrance_a",
"fragrance_b",
"context"
],
"type": "object"
},
"name": "fragrance_compare",
"outputSchema": null
},
{
"description": "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.\n\nSee also: `fragrance_similar` for fragrances with similar accord profiles · `fragrance_get_reviews` for community reviews · `fragrance_get_wearing_stats` for when people wear it.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"context": {
"description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
"type": "string"
},
"id": {
"description": "Fragrance UUID",
"type": "string"
},
"response_format": {
"default": "markdown",
"enum": [
"markdown",
"json"
],
"type": "string"
},
"slug": {
"description": "'brand-slug/fragrance-slug', e.g. 'tom-ford/oud-wood'",
"type": "string"
}
},
"required": [
"context"
],
"type": "object"
},
"name": "fragrance_get",
"outputSchema": null
},
{
"description": "Get paginated community reviews for a fragrance. Sort by helpfulness, recency, or score.\n\nSee also: `fragrance_get` for the fragrance's full profile · `fragrance_get_wearing_stats` for aggregate wearing data.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"context": {
"description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
"type": "string"
},
"cursor": {
"type": "string"
},
"id": {
"description": "Fragrance UUID",
"type": "string"
},
"limit": {
"default": 20,
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"phase": {
"description": "Filter by drydown phase",
"type": "string"
},
"response_format": {
"default": "markdown",
"enum": [
"markdown",
"json"
],
"type": "string"
},
"sort": {
"default": "most_helpful",
"enum": [
"most_helpful",
"newest",
"highest",
"lowest"
],
"type": "string"
}
},
"required": [
"id",
"context"
],
"type": "object"
},
"name": "fragrance_get_reviews",
"outputSchema": null
},
{
"description": "Aggregate wearing statistics for a fragrance — when people wear it, in what seasons, and mood tags. Free tier sees total check-ins only; Pro sees full breakdowns.\n\nSee also: `fragrance_get` for full profile · `fragrance_similar` for alternatives with similar profiles.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"context": {
"description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
"type": "string"
},
"id": {
"description": "Fragrance UUID",
"type": "string"
},
"response_format": {
"default": "markdown",
"enum": [
"markdown",
"json"
],
"type": "string"
}
},
"required": [
"id",
"context"
],
"type": "object"
},
"name": "fragrance_get_wearing_stats",
"outputSchema": null
},
{
"description": "Get a concise AI-generated digest summarizing a fragrance's community reviews — key themes, consensus, and standout opinions. Public, cached per fragrance.\n\nSee also: `fragrance_get_reviews` for individual reviews · `fragrance_get` for full profile.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"context": {
"description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
"type": "string"
},
"id": {
"description": "Fragrance UUID to get the review digest for",
"type": "string"
},
"response_format": {
"default": "markdown",
"enum": [
"markdown",
"json"
],
"type": "string"
}
},
"required": [
"id",
"context"
],
"type": "object"
},
"name": "fragrance_review_digest",
"outputSchema": null
},
{
"description": "Search and filter the Noteboxd fragrance encyclopedia. Requires a query or at least one filter — the full catalogue cannot be listed.\n\nTip: The `q` parameter searches fragrance names OR brand names independently. For best results with a known brand, use the `brand` slug filter instead of including the brand name in `q`.\n\nExamples:\n- \"Find woody fragrances above 8/10 from the 2010s\" → note='woody' + minScore=8 + decade='2010s'\n- \"Creed fragrances\" → brand='creed'\n- \"Bleu de Chanel\" → q='Bleu' + brand='chanel'\n\nSee also: `fragrance_get` for a single fragrance's full profile · `search` for universal cross-entity lookup (brands, notes, perfumers, collections in one call).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"accord": {
"description": "Accord slug filter, e.g. 'woody', 'gourmand'",
"type": "string"
},
"brand": {
"description": "Brand slug filter, e.g. 'creed'",
"type": "string"
},
"concentration": {
"enum": [
"EdP",
"EdT",
"Parfum",
"EdC",
"SdP",
"EdF",
"Cologne",
"Other"
],
"type": "string"
},
"context": {
"description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
"type": "string"
},
"cursor": {
"type": "string"
},
"decade": {
"enum": [
"1990s",
"2000s",
"2010s",
"2020s"
],
"type": "string"
},
"gender": {
"enum": [
"masculine",
"feminine",
"unisex"
],
"type": "string"
},
"limit": {
"default": 24,
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"minScore": {
"description": "Minimum community score (0-10)",
"maximum": 10,
"minimum": 0,
"type": "number"
},
"note": {
"description": "Note slug filter, e.g. 'oud', 'bergamot'",
"type": "string"
},
"query": {
"description": "Free-text search across fragrance and brand names",
"maxLength": 200,
"minLength": 2,
"type": "string"
},
"response_format": {
"default": "markdown",
"enum": [
"markdown",
"json"
],
"type": "string"
},
"sort": {
"default": "score",
"enum": [
"score",
"reviews",
"recent",
"alpha"
],
"type": "string"
}
},
"required": [
"context"
],
"type": "object"
},
"name": "fragrance_search",
"outputSchema": null
},
{
"description": "Find fragrances with similar accord profiles to a given fragrance. Returns ranked alternatives based on shared accords and character.\n\nSee also: `fragrance_get` for the source fragrance's full profile · `fragrance_search` with note/accord filters for manual exploration.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"context": {
"description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
"type": "string"
},
"id": {
"description": "Fragrance UUID to find similar fragrances for",
"type": "string"
},
"response_format": {
"default": "markdown",
"enum": [
"markdown",
"json"
],
"type": "string"
}
},
"required": [
"id",
"context"
],
"type": "object"
},
"name": "fragrance_similar",
"outputSchema": null
},
{
"description": "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'.\n\nSee also: `notes_list` to browse all notes by family/popularity · `fragrance_search` with the `note` filter to find fragrances featuring this note.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"context": {
"description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
"type": "string"
},
"note": {
"description": "Note slug, e.g. 'oud', 'iris', 'ambroxan', 'bergamot'",
"type": "string"
},
"response_format": {
"default": "markdown",
"enum": [
"markdown",
"json"
],
"type": "string"
}
},
"required": [
"note",
"context"
],
"type": "object"
},
"name": "note_explore",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"context": {
"description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
"type": "string"
},
"fragrance": {
"description": "Fragrance slug or UUID to show in the Noteboxd app.",
"type": "string"
},
"query": {
"description": "Search query to run inside the Noteboxd app.",
"type": "string"
}
},
"required": [
"context"
],
"type": "object"
},
"name": "noteboxd_open",
"outputSchema": null
},
{
"description": "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.\n\nSee 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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"context": {
"description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
"type": "string"
},
"family": {
"description": "Filter by note family, e.g. 'woody', 'floral', 'citrus', 'oriental'",
"type": "string"
},
"limit": {
"default": 20,
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"response_format": {
"default": "markdown",
"enum": [
"markdown",
"json"
],
"type": "string"
},
"sort": {
"default": "popular",
"enum": [
"popular",
"alpha"
],
"type": "string"
}
},
"required": [
"context"
],
"type": "object"
},
"name": "notes_list",
"outputSchema": null
},
{
"description": "Get a perfumer's profile (bio, country, house affiliation) and their top fragrances by community score.\n\nSee also: `fragrance_search` to find more fragrances by this perfumer · `brand_get` if you want the brand they work for.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"context": {
"description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
"type": "string"
},
"response_format": {
"default": "markdown",
"enum": [
"markdown",
"json"
],
"type": "string"
},
"slug": {
"description": "Perfumer slug, e.g. 'francis-kurkdjian', 'jacques-polge'",
"type": "string"
}
},
"required": [
"slug",
"context"
],
"type": "object"
},
"name": "perfumer_get",
"outputSchema": null
},
{
"description": "Universal search across all Noteboxd entities — fragrances, brands, notes, perfumers, and collections — in a single call. Best for quick lookups and vague queries.\n\nExamples:\n- \"Jacques Polge\" → returns the perfumer\n- \"oud\" → returns the note, plus top oud fragrances\n- \"Bleu\" → returns Bleu de Chanel, Bleu de Dior, etc.\n\nSee also: `fragrance_search` for advanced fragrance-only filtering (by note, decade, score, concentration) · `trending` for what's popular right now.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"context": {
"description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
"type": "string"
},
"query": {
"description": "Search query — searches across fragrances, brands, notes, perfumers, collections",
"maxLength": 200,
"minLength": 1,
"type": "string"
},
"response_format": {
"default": "markdown",
"enum": [
"markdown",
"json"
],
"type": "string"
}
},
"required": [
"query",
"context"
],
"type": "object"
},
"name": "search",
"outputSchema": null
},
{
"description": "What's trending on Noteboxd right now — top search queries, highest-rated fragrances, and most popular notes. No parameters needed.\n\nSee also: `charts_list` for full ranking leaderboards · `fragrance_search` to explore specific categories.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"context": {
"description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
"type": "string"
},
"response_format": {
"default": "markdown",
"enum": [
"markdown",
"json"
],
"type": "string"
}
},
"required": [
"context"
],
"type": "object"
},
"name": "trending",
"outputSchema": null
},
{
"description": "Get your fragrance cabinet — fragrances you own, have tried, or finished. Requires a Pro account.\n\nSee 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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"context": {
"description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
"type": "string"
},
"cursor": {
"type": "string"
},
"limit": {
"default": 30,
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"response_format": {
"default": "markdown",
"enum": [
"markdown",
"json"
],
"type": "string"
},
"sort": {
"default": "recent",
"enum": [
"recent",
"score",
"alpha"
],
"type": "string"
},
"status": {
"default": "all",
"enum": [
"CURRENT",
"TRIED",
"FINISHED",
"all"
],
"type": "string"
}
},
"required": [
"context"
],
"type": "object"
},
"name": "user_get_cabinet",
"outputSchema": null
},
{
"description": "Get your collections (fragrance lists). Optionally pass a collectionId to see its items. Requires a Pro account.\n\nSee also: `fragrance_get` for full details on any fragrance in a collection.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"collectionId": {
"description": "If given, return items in this collection",
"type": "string"
},
"context": {
"description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
"type": "string"
},
"response_format": {
"default": "markdown",
"enum": [
"markdown",
"json"
],
"type": "string"
}
},
"required": [
"context"
],
"type": "object"
},
"name": "user_get_collections",
"outputSchema": null
},
{
"description": "Get reviews you've written, or reviews you found helpful. Requires a Pro account.\n\nSee also: `fragrance_get_reviews` for community reviews on a specific fragrance.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"context": {
"description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
"type": "string"
},
"cursor": {
"type": "string"
},
"kind": {
"default": "written",
"enum": [
"written",
"helpful"
],
"type": "string"
},
"limit": {
"default": 20,
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"response_format": {
"default": "markdown",
"enum": [
"markdown",
"json"
],
"type": "string"
}
},
"required": [
"context"
],
"type": "object"
},
"name": "user_get_reviews",
"outputSchema": null
},
{
"description": "Get your wearing check-in history over time. Requires a Pro account.\n\nSee also: `fragrance_get_wearing_stats` for aggregate community wearing data on a specific fragrance.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"context": {
"description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
"type": "string"
},
"cursor": {
"type": "string"
},
"limit": {
"default": 30,
"maximum": 90,
"minimum": 1,
"type": "integer"
},
"response_format": {
"default": "markdown",
"enum": [
"markdown",
"json"
],
"type": "string"
},
"since": {
"description": "ISO date lower bound",
"type": "string"
}
},
"required": [
"context"
],
"type": "object"
},
"name": "user_get_wearing_history",
"outputSchema": null
},
{
"description": "Get your fragrance wishlist. Requires a Pro account.\n\nSee also: `fragrance_get` for full details on any wishlist fragrance · `user_get_cabinet` for fragrances you already own.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"context": {
"description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
"type": "string"
},
"cursor": {
"type": "string"
},
"limit": {
"default": 30,
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"response_format": {
"default": "markdown",
"enum": [
"markdown",
"json"
],
"type": "string"
}
},
"required": [
"context"
],
"type": "object"
},
"name": "user_get_wishlist",
"outputSchema": null
},
{
"description": "Compare your taste with another user — compatibility score, shared and divergent notes/accords/families, and an optional AI overview. Requires Pro for the overview.\n\nSee also: `user_taste_public` for a user's top preferences · `user_taste_summary` for your own summary.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"context": {
"description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
"type": "string"
},
"response_format": {
"default": "markdown",
"enum": [
"markdown",
"json"
],
"type": "string"
},
"target_user_id": {
"description": "User ID to compare your taste with",
"type": "string"
},
"with_overview": {
"default": true,
"description": "Include AI-generated overview (requires Pro)",
"type": "boolean"
}
},
"required": [
"target_user_id",
"context"
],
"type": "object"
},
"name": "user_taste_compare",
"outputSchema": null
},
{
"description": "Get a user's public taste profile — their top notes, accords, and families derived from their collection and reviews. No LLM call, deterministic.\n\nSee also: `user_taste_compare` for compatibility between two users.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"context": {
"description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
"type": "string"
},
"response_format": {
"default": "markdown",
"enum": [
"markdown",
"json"
],
"type": "string"
},
"username": {
"description": "Username (handle) of the user to view",
"type": "string"
}
},
"required": [
"username",
"context"
],
"type": "object"
},
"name": "user_taste_public",
"outputSchema": null
},
{
"description": "Get your AI-generated taste profile summary — a natural-language description of your fragrance preferences based on your cabinet, reviews, and likes. Requires Pro.\n\nSee also: `user_taste_public` for the deterministic breakdown · `user_taste_compare` for compatibility.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"context": {
"description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
"type": "string"
},
"response_format": {
"default": "markdown",
"enum": [
"markdown",
"json"
],
"type": "string"
}
},
"required": [
"context"
],
"type": "object"
},
"name": "user_taste_summary",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:6ba0811be28995f3fa286f9c1ac5101f4fcd34b108b4e9ff104c53dd8179302e | sha256sum