Skip to content
Page loaded

For AI assistants

Ask your AI about the swap.

FragranceSwap has an MCP server, so Claude, Claude Code, Cursor, and other AI assistants can search r/fragranceswap, find deals, and price a bottle you want to sell from the same live data as this site. It’s free and needs no account. Sign in with Reddit and it can also manage your watchlist, saved listings, and alerts.

Server URL
https://fragranceswap.io/mcp

Connect

Claude Code

Run this in a terminal, then start claude and ask away:

Terminal
claude mcp add --transport http fragranceswap https://fragranceswap.io/mcp

Add --scope user to have it in every project. Check it with /mcp inside Claude Code.

Claude (web, desktop, and mobile)

In Settings → Connectors, choose Add custom connector, name it FragranceSwap, and paste the server URL. Then turn it on for a chat from the tools menu. On Team and Enterprise plans an owner adds custom connectors first.

Cursor, Windsurf, and others with an mcpServers file

Add this to the client’s MCP settings (for Cursor, ~/.cursor/mcp.json):

mcp.json
{
  "mcpServers": {
    "fragranceswap": {
      "type": "http",
      "url": "https://fragranceswap.io/mcp"
    }
  }
}

VS Code

Add this to .vscode/mcp.json, or run MCP: Add Server and choose HTTP:

.vscode/mcp.json
{
  "servers": {
    "fragranceswap": {
      "type": "http",
      "url": "https://fragranceswap.io/mcp"
    }
  }
}

Any other client that supports remote MCP servers over Streamable HTTP works the same way: give it the server URL. No API key is needed.

Your account

Searching and pricing work without signing in. The first time you ask about your watchlist, saved listings, or alerts, your assistant asks you to sign in: FragranceSwap opens in your browser, you sign in with Reddit as usual, and you allow the app.

  • Claude Code: when it says FragranceSwap needs authentication, run /mcp, pick fragranceswap, and choose Authenticate.
  • Claude and other apps: follow the sign-in prompt the app shows (for Claude, Connect on the connector).
  • What it can do: read and change your watchlist and alert settings, save and unsave listings, and read your alerts. It can’t post or message on Reddit, see or change your email address, or delete your account.
  • Disconnect any time under Connected AI apps on your account page. Access lasts until you disconnect, or 90 days without use.

Things to ask

Buying

  • “What are the best deals on full bottles on r/fragranceswap right now?”
  • “Find me a Layton under $150, ideally 125 ml, and tell me if any of them are a good price.”
  • “Is $190 a good price for a used 100 ml Aventus with 90% left?”
  • “I like Naxos and Side Effect. What similar bottles are for sale under $120?”

Selling

  • “I want to sell my 75 ml Grand Soir, about 70% full. What should I ask?”
  • “Price these for me: Creed Aventus 100 ml sealed, Bleu de Chanel EDP 100 ml used 80%, a 10 ml decant of Erba Pura.”
  • “How fast do 50 ml Baccarat Rouge 540 bottles sell, and how many people are looking for one?”

Your account

  • “Watch Layton for me and alert me to any 125 ml bottle under $160.”
  • “Anything new from my alerts? Which of them are actually good deals?”
  • “Go through my saved listings and tell me which are sold now.”

Your assistant picks the tools itself. For pricing, telling it the sale type, the bottle size, how full it is, and the condition gets the closest comparison, just like the seller tools.

Tools

Market (no sign-in)

These only read public data; none of them post, message, or change anything.

search_fragrances

Find fragrances in the catalog by name, house, or nickname, with their known bottle sizes.

query
Name, house, or nickname
limit
1–20, default 8

search_listings

Search bottles posted on r/fragranceswap, for sale or wanted, active or sold, with each ask’s normalized price and how it compares with the market.

query
Free text, optional
fragrance
Name, slug, or id, optional
sale_type
full_bottle, partial_bottle, decant, sample, bundle
intent
for_sale (default) or wanted
status
active (default) or sold
min_size_ml, max_size_ml
Bottle capacity
min_price_usd, max_price_usd
Total price
sort
newest, price_low, price_high, price_per_ml_low, best_value
limit
1–25, default 10

top_deals

The best-value active asks right now: the same list as the home page.

sale_type
full_bottle, partial_bottle, decant, sample; optional
limit
1–20, default 10

fragrance_market

90 days of asks for one fragrance: counts, median and percentile prices, per-ml prices for partials and decants, time to sell, and retail prices per size.

fragrance
Name, slug, or id
size_ml
One bottle size, optional

price_bottle

What to ask for a bottle you’re selling: a suggested range from comparable asks with its confidence, the cheapest competing asks, recent sales, time to sell, demand, and retail.

fragrance
Name, slug, or id
sale_type
full_bottle (default), partial_bottle, decant
size_ml
Bottle capacity; ml in the vial for a decant
fill_percent
How full a partial is
condition
sealed, new_open_box, used; optional

get_listing

One post with every bottle in it: prices, sizes, condition, sold state, value, and links.

post_id
Post id or a FragranceSwap /posts/ URL

Your account (sign in with Reddit)

my_watchlist

Your watched fragrances with their alert settings, how many bottles are for sale now, and your unread alerts.

watch_fragrance

Watch a fragrance, or change the alert settings of one you watch. Settings you leave out stay as they are.

fragrance
Name, slug, or id
alerts
On or off
max_price_usd
Only alert at or under this price; null clears it
min_size_ml, max_size_ml
Bottle sizes to alert on
sale_types
Kinds to alert on; empty means any
email
off, any, or 10, 15, 25 (% under market)

unwatch_fragrance

Stop watching a fragrance.

fragrance
Name, slug, or id

my_saved_listings

Listings you saved, with every bottle’s current price and status.

limit
1–50, default 20

save_listing

Save a listing.

post_id
Post id or a FragranceSwap /posts/ URL

unsave_listing

Remove a saved listing.

post_id
Post id or a FragranceSwap /posts/ URL

my_alerts

Recent alerts from your watches: the bottle, its price, and its value.

unread_only
Default false
limit
1–50, default 20

mark_alerts_read

Mark some alerts, or all of them, read.

alert_ids
Alerts to mark
all
true marks every alert

Results are JSON with prices in US dollars and links to the listing on FragranceSwap (url) and to the Reddit post (reddit_url).

About the data

  • Prices are asking prices from public r/fragranceswap posts, normalized to US dollars with shipping included when the seller stated it. Partials and decants are compared per ml of perfume left.
  • “Sold” means the seller marked it sold. The final price isn’t public, so sold asks show what bottles went for at most.
  • Suggested prices come from comparables: the middle half of asks for the same fragrance, sale type, and size over the last 90 days, with the sample size and a confidence level. With few comparables the assistant also sees retail prices and other sizes.
  • Listing details are read from posts automatically and can be wrong. Confirm with the seller before paying, and follow the safety advice.
  • Deals happen on Reddit, directly with the seller. FragranceSwap never handles money or bottles, and isn’t affiliated with Reddit or the sub’s moderators.
  • Limits: 60 requests a minute and 2,000 a day per network address, and the website’s own limits on changes to your account. Over that, requests get HTTP 429 until the window resets.
  • Privacy: we record which tool was called, the name of the app calling it, and search terms (with anything that looks like an email or number removed). Signed out, that isn’t linked to you; signed in, it’s linked to your account like your use of the site. See the privacy policy.