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.
https://fragranceswap.io/mcpConnect
Claude Code
Run this in a terminal, then start claude and ask away:
claude mcp add --transport http fragranceswap https://fragranceswap.io/mcpAdd --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):
{
"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:
{
"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, pickfragranceswap, 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
- 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.