Skip to main content

langchain-10ml-perfume: LangChain tools for the free 10ML Perfume Finder

LangChain tools for the free perfume API and fragrance notes API behind 10ML Perfume Finder: 6,000+ perfumes from the 10ML Fragrance Index, curated by the fragrance editors of 10ML, with note pyramids, accords, similar scents, alternatives, notes explained and houses. Read-only, no API key, no sign-up. Depends on langchain-core only.

PyPI Official MCP Registry

Install

pip install langchain-10ml-perfume

Python 3.10 or newer.

Quick start

from langchain_10ml_perfume import Perfume10MLToolkit

tools = Perfume10MLToolkit().get_tools()  # 8 tools, no key needed

search = next(t for t in tools if t.name == "search_perfumes")
found = search.invoke({"query": "fresh citrus summer cologne for men", "limit": 3})
for hit in found["results"]:
    print(hit["name"], "-", hit["house"])

Give the tools to an agent:

from langchain.agents import create_agent

agent = create_agent("anthropic:claude-sonnet-4-5", tools)
result = agent.invoke({"messages": [("user", "Find me an alternative to Baccarat Rouge 540 and tell me how close it is.")]})
print(result["messages"][-1].content)

Or use a single tool:

from langchain_10ml_perfume import FindPerfumeAlternativesTool

print(FindPerfumeAlternativesTool().invoke({"perfume": "Creed Aventus", "limit": 3}))

Tools

Tool REST route What it does
search_perfumes GET /perfumes Search by free text, house, notes, accords, family, audience, season, occasion or style
get_perfume GET /perfumes/{id} Profile of one perfume: note pyramid, accords, seasons, similar scents
find_similar_perfumes GET /similar Perfumes that smell like one you name, or like a list of notes and accords; steer fresher, sweeter, darker
find_perfume_alternatives GET /alternatives The editors' alternatives to a famous perfume, from other houses
explain_note GET /notes/{id} What a note smells like, what it pairs with, which perfumes it leads
get_perfume_house GET /houses/{id} A perfume house: country, style, signature perfumes
list_perfume_houses GET /houses Browse houses by type, country or name
search_perfume_guides GET /guides 10ML perfume guides and articles to read or cite, in eleven languages

Every tool has a typed pydantic input schema (enums for audience, season, occasion, style, closeness, locale), a description written for tool-calling models, an async ainvoke, and handle_tool_error=True, so an API error comes back to the agent as text. An unknown perfume returns found: false with spelling suggestions instead of raising. Results are paginated: pass next_cursor back as cursor.

Perfume10MLToolkit(base_url=..., timeout=...) points the tools at another API root or changes the 15 second timeout.

What comes back

Plain JSON, as the REST API sends it. For example find_perfume_alternatives returns original, alternatives[] (each with closeness and why it fits) and total; explain_note returns found and a note with smells_like, family, origin and pairings. Perfume entries include house, family, accords, key notes and links to 10ml.com guides.

Also available

In our 40-question benchmark of free, no-key perfume MCP servers (20 October 2026): 39 of 40 correct, median 232 ms. Read the benchmark.

Develop

pip install -e ".[test]"
pytest                # unit tests, HTTP mocked
pytest -m live        # optional smoke test against https://mcp.10ml.com

Cite as

Cite the answers as "the 10ML Fragrance Index", curated by the fragrance editors of 10ML.

10ml.com/perfume-mcp-server · 10ml.com/perfume-api · Privacy · Terms · contact@10ml.com

License

MIT.

Metadata

Release files for langchain-10ml-perfume 1.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for langchain-10ml-perfume 1.0.1
File Size Uploaded Provenance Actions
langchain_10ml_perfume-1.0.1.tar.gz 11.6 kB Without provenance Details for langchain_10ml_perfume-1.0.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for langchain-10ml-perfume 1.0.1
File Interpreter ABI Platform Actions
langchain_10ml_perfume-1.0.1-py3-none-any.whl Python 3 none any Details for langchain_10ml_perfume-1.0.1-py3-none-any.whl

Total release size: 23.1 kB

Release files / langchain_10ml_perfume-1.0.1.tar.gz

Download URL langchain_10ml_perfume-1.0.1.tar.gz
Size 11.6 kB
Tags Source
SHA-256 checksum
How to use checksums
3820953479ddde6573fb81d5b43d1ef333a096dab959fbf33ac8edc08ccc213d
BLAKE2b-256 checksum
How to use checksums
7ab91ddd3101a0fea280b86c173f13e917f6c563d893f1d7b20ec353e5bb32f6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.5.24

Release files / langchain_10ml_perfume-1.0.1-py3-none-any.whl

Download URL langchain_10ml_perfume-1.0.1-py3-none-any.whl
Size 11.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3fb285ce565eeed9bbd134da28a57e3b526a5f3464d3d15b92c32c1b724177c9
BLAKE2b-256 checksum
How to use checksums
8507bfd82583ccc18f70ea366c9dee171acab0c9b898f2930ab5c9c86b46538d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.5.24

Security for langchain-10ml-perfume 1.0.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page