Skip to content

Molecular Pairing Tool (MCP Modernist)

The MCP Modernist tool drives all molecular pairing analysis in this project. It is reliable, but several output behaviors are easy to misread and have produced wrong conclusions in the past. This page documents the correct workflow and the known traps. For the flavor combinations themselves, see Flavor Pairing.

Verify IDs first (verbose)

Always resolve ingredient IDs with search_ingredients(query, verbose=true) before any pairing call. IDs are lowercased, sometimes compressed (darkchocolate, corn_grain for popcorn), and a wrong ID throws rather than guessing. Verbose also returns the compound count — your first signal of indexing depth.

Run pairings or dish analysis

find_pairings(id, verbose=true) for one-to-many; assemble the full ingredient set for a dish graph via generate_dish_png / create_share_link.

Read intersections only from verbose output

See the warning below. Non-verbose shared arrays are not pairwise intersections.

The sim score reflects whole-profile overlap (closer to a cosine over compound vectors), not the count of shared compounds. Two ingredients can share a single high-impact compound and still score low, or share many low-impact compounds and score moderate.

Some ingredients have shallow compound lists and will systematically under-pair.

IngredientCompoundsImplication
Dark chocolate13Pairs almost entirely on Maillard/roasted compounds (pyrazines, furfural, guaiacol) + benzaldehyde + vanillin. Under-reads fruit affinities.
Banana43Broad ester/floral profile; strongest kin are other fruits.
Vanilla41Broad; functions as a connector across spice, fruit, and roasted families.

A dish does not need every pair to overlap. The structurally important question is whether a keystone ingredient touches the otherwise-disconnected poles.

Worked example — dark chocolate + banana + vanilla:

PairVerbose overlapStrength
Banana ↔ dark chocolatebenzaldehyde (+ phenylacetaldehyde)Weak (1–2 compounds)
Banana ↔ vanilla2-phenylethanol, farnesol, 2-phenylethyl acetateModerate
Vanilla ↔ dark chocolatevanillin (+ guaiacol)Keystone link

The two flavor poles barely connect directly; vanilla is the only ingredient touching both, so it is load-bearing, not decorative. When two target ingredients show a weak direct overlap, look for (or add) a keystone before concluding the pairing fails. This is exactly the structure behind the Dark Chocolate Banana Cake Gelato.

Compound sets are not static across preparation. Browning, toasting, and caramelization generate Maillard compounds (furfural, pyrazines, guaiacol) that did not exist in the raw ingredient. A raw ingredient that under-pairs with a roasted one may pair strongly once caramelized. The tool indexes the named ingredient state; reason explicitly about what your process adds.

Verbose find_pairings and search_ingredients in current sessions return native JSON objects directly (no text wrapper). If a call instead returns a text-wrapped payload (raw[0]['text']), json.loads the inner text. Confirm the shape per tool rather than assuming a single pattern.


Methodology reference. Update when tool behavior changes.