Loading server...
{
"type": "object",
"properties": {
"grinder": {
"type": "string",
"description": "Grinder name as the user said it, e.g. \"Baratza Encore\""
},
"setting": {
"type": [
"number",
"string"
],
"description": "The setting they brewed at as written on the grinder, e.g. 18. On Fellow dials 4.2 is the second mark after 4; a Baratza Forte is macro number and micro letter, e.g. \"4R\"."
},
"result": {
"type": "string",
"enum": [
"sour",
"bitter",
"good"
],
"description": "How it tasted: sour (also weak, thin, ran fast), bitter (also harsh, dry, ran slow), or good"
},
"method": {
"type": "string",
"description": "Brew method, e.g. \"espresso\", \"V60\", \"Kalita Wave\". Pass it whenever the user has said it; the card shows that method's recipe."
},
"coffee": {
"type": "string",
"description": "The coffee as the user named it, roaster and name: \"Stumptown Hair Bender\". Only the coffee: never the user's name or other personal details. Leave out if they have not said."
},
"roast": {
"type": "string",
"enum": [
"light",
"medium-light",
"medium",
"medium-dark",
"dark"
],
"description": "Optional roast level of that coffee, if known. Recorded with the report; it does not change the suggestion."
}
},
"required": [
"grinder",
"setting",
"result"
]
}
Find a grinder
find_grinder
Shortlist coffee grinders for someone deciding which one to buy: "which grinder should I get for pour over under $200?", "a quiet grinder for espresso", "best hand grinder for travel". Ranks BrewMark's grinder finder by how they brew, budget, hand or electric, and must-haves, and returns each pick with an approximate US price, why it fits, and a link to its BrewMark buying guide. BrewMark does not sell grinders: do not use this to place an order, and for a grinder the user already owns use get_grinder_chart instead.
Schema valid · SHA-256 95e5f1634d7d…
View input schema
{
"type": "object",
"properties": {
"methods": {
"type": "array",
"items": {
"type": "string",
"enum": [
"pourover",
"aeropress",
"drip",
"french",
"cold",
"moka",
"espresso"
]
},
"description": "Brew methods they will use. Leave out if they did not say."
},
"budget": {
"type": "number",
"description": "Most they want to spend, in US dollars. Leave out for any price."
},
"power": {
"type": "string",
"enum": [
"either",
"hand",
"electric"
],
"description": "Hand grinder, electric, or either (default)."
},
"must_have": {
"type": "array",
"items": {
"type": "string",
"enum": [
"quiet",
"travel",
"single-dose"
]
},
"description": "Only if the user asked for it."
}
}
}
Grinder settings chart
get_grinder_chart
Grind settings for one grinder across every brew method. Use this for any question of the form "what grind should I use for my <grinder>", "what setting for French press on a <grinder>", or "how do I dial in my <grinder>". Returns the recommended setting and usable range for espresso, moka pot, AeroPress, pour over, siphon, steep-and-release (Clever Dripper, Hario Switch), drip, cupping, Chemex, French press and cold brew. When the user names a brew method, pass it as `method`: the answer then leads with that method, plus a starting recipe (ratio, dose, water temperature, time). The grinder can be named however the user said it.
Schema valid · SHA-256 65ec957ef9c6…
View input schema
{
"type": "object",
"properties": {
"grinder": {
"type": "string",
"description": "Grinder name as the user said it, e.g. \"Fellow Ode\", \"Baratza Encore\", or a slug"
},
"method": {
"type": "string",
"description": "Optional brew method the user asked about, as they said it: \"V60\", \"pour over\", \"French press\", \"espresso\", \"AeroPress\", \"cold brew\", \"Chemex\", \"drip\", \"moka pot\", \"siphon\", \"Clever Dripper\", \"cupping\""
},
"roast": {
"type": "string",
"enum": [
"light",
"medium-light",
"medium",
"medium-dark",
"dark"
],
"description": "Optional roast level of the coffee the user is brewing. If they name a coffee rather than a roast (\"Stumptown Hair Bender\", \"Lavazza Super Crema\"), use what you know of it; leave out when unsure. Lighter roasts move the starting setting finer, darker ones coarser."
}
},
"required": [
"grinder"
]
}
Grind for a recipe on your grinder
translate_recipe
Turn a recipe written in the open BrewMark Protocol into a setting on the user's own grinder. Use when a coffee bag or roaster gives a BrewMark code or link ("7H2KQ9", "brewmark.io/p/7H2KQ9"), or a recipe gives its grind as a BrewMark Grind Index ("BGI 38") or as an Open Brew Profile (JSON with "spec": "brewmark.obp/0.1"). Pass one of `code`, `bgi` or `profile`. Spec: https://github.com/jeffreygluck/brewmark-protocol. For a recipe that quotes a setting on another grinder, use convert_grind_setting instead.
Schema valid · SHA-256 cd59efa553d6…
View input schema
{
"type": "object",
"properties": {
"grinder": {
"type": "string",
"description": "The user's grinder, named however they said it, e.g. \"Fellow Ode\", \"Baratza Encore\""
},
"code": {
"type": "string",
"description": "A BrewMark code from a coffee bag, or its link, e.g. \"7H2KQ9\" or \"https://brewmark.io/p/7H2KQ9\""
},
"bgi": {
"type": "number",
"description": "Grind target on the BrewMark Grind Index, 0 (espresso fine) to 100 (very coarse); 40 is filter medium"
},
"profile": {
"type": "object",
"description": "An Open Brew Profile (spec \"brewmark.obp/0.1\"), as given by the roaster or app"
}
},
"required": [
"grinder"
]
}