
Search the Percolate specialty coffee database: 1,100+ coffees with brew recipes and pairings.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Side-by-side comparison: roast, body/acidity/sweetness, shared and distinct flavors, brew methods, and price difference.
First coffee — id or name
Second coffee — id or name
Side-by-side comparison: roast, body/acidity/sweetness, shared and distinct flavors, brew methods, and price difference.
| Argument | Type | Description |
|---|---|---|
| coffee_a* | string | First coffee — id or name |
| coffee_b* | string | Second coffee — id or name |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"coffee_a",
"coffee_b"
],
"properties": {
"coffee_a": {
"type": "string",
"maxLength": 200,
"description": "First coffee — id or name"
},
"coffee_b": {
"type": "string",
"maxLength": 200,
"description": "Second coffee — id or name"
}
},
"additionalProperties": false
}Brew guidance for a specific coffee: curated recipes from the Percolate catalog (ratio, temperature, grind) when available, or a roast-based starting point. Optionally scoped to your brew method.
| Argument | Type | Description |
|---|---|---|
| coffee* | string | Coffee id or name |
| brew_method | string | Your brewer, e.g. 'V60', 'espresso', 'french press' |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"coffee"
],
"properties": {
"coffee": {
"type": "string",
"maxLength": 200,
"description": "Coffee id or name"
},
"brew_method": {
"type": "string",
"maxLength": 120,
"description": "Your brewer, e.g. 'V60', 'espresso', 'french press'"
}
},
"additionalProperties": false
}Coffees with a similar profile to a given one, ranked by shared flavor notes and roast/body/acidity/sweetness proximity. Deterministic scoring over Percolate's structured tasting data.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max results (default 5) |
| coffee* | string | Coffee id or name |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"coffee"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 10,
"minimum": 1,
"description": "Max results (default 5)"
},
"coffee": {
"type": "string",
"maxLength": 200,
"description": "Coffee id or name"
}
},
"additionalProperties": false
}Detailed record for one coffee: roast level, body/acidity/sweetness profile, flavor notes, suited brew methods, food and brew pairings, price, and retailer names with prices (no purchase links). Accepts a Percolate id or a name.
| Argument | Type | Description |
|---|---|---|
| id_or_name* | string | Coffee id or a name like 'Bean Box Taste of New York City' |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id_or_name"
],
"properties": {
"id_or_name": {
"type": "string",
"maxLength": 120,
"description": "Coffee id or a name like 'Bean Box Taste of New York City'"
}
},
"additionalProperties": false
}Personalized coffee picks from flavor preferences (e.g. 'chocolate', 'berry', 'caramel'), a budget in USD, roast preference, and the brew gear you own.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max results (default 5) |
| budget | number | Max price in USD per bag |
| brew_method | string | What you brew with, e.g. 'espresso', 'pourover' |
| preferences* | array | Flavors the drinker enjoys, e.g. ['chocolate','caramel','nutty'] |
| roast_level | string | Roast level to filter by; omit to include all roasts |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"preferences"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 10,
"minimum": 1,
"description": "Max results (default 5)"
},
"budget": {
"type": "number",
"minimum": 0,
"description": "Max price in USD per bag"
},
"brew_method": {
"type": "string",
"maxLength": 120,
"description": "What you brew with, e.g. 'espresso', 'pourover'"
},
"preferences": {
"type": "array",
"items": {
"type": "string",
"maxLength": 60
},
"maxItems": 20,
"minItems": 1,
"description": "Flavors the drinker enjoys, e.g. ['chocolate','caramel','nutty']"
},
"roast_level": {
"enum": [
"light",
"medium-light",
"medium",
"medium-dark",
"dark"
],
"type": "string",
"description": "Roast level to filter by; omit to include all roasts"
}
},
"additionalProperties": false
}Search 1,100+ curated specialty coffees in the Percolate database. Filter by category (espresso, single_origin, blend, decaf, dark), roast level, brew method, and price (USD). Returns tasting profiles, brew methods, and retailer names with prices (no purchase links).
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max results (default 10, max 10) |
| query | string | Free-text search: coffee or roaster name |
| category | string | Coffee category to filter by; omit to search all |
| price_max | number | Maximum price in USD |
| price_min | number | Minimum price in USD |
| brew_method | string | e.g. 'espresso', 'pourover', 'french press', 'drip' |
| roast_level | string | Roast level to filter by; omit to include all roasts |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 10,
"minimum": 1,
"description": "Max results (default 10, max 10)"
},
"query": {
"type": "string",
"maxLength": 120,
"description": "Free-text search: coffee or roaster name"
},
"category": {
"enum": [
"espresso",
"single_origin",
"blend",
"decaf",
"dark"
],
"type": "string",
"description": "Coffee category to filter by; omit to search all"
},
"price_max": {
"type": "number",
"minimum": 0,
"description": "Maximum price in USD"
},
"price_min": {
"type": "number",
"minimum": 0,
"description": "Minimum price in USD"
},
"brew_method": {
"type": "string",
"maxLength": 120,
"description": "e.g. 'espresso', 'pourover', 'french press', 'drip'"
},
"roast_level": {
"enum": [
"light",
"medium-light",
"medium",
"medium-dark",
"dark"
],
"type": "string",
"description": "Roast level to filter by; omit to include all roasts"
}
},
"additionalProperties": false
}Coffees Percolate users are adding to their collections most over the last 30 days (falls back to catalog popularity when live activity data is unavailable). The method used is labeled in the response.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max results (default 10, max 10) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 10,
"minimum": 1,
"description": "Max results (default 10, max 10)"
}
},
"additionalProperties": false
}A coffee suggestion for right now, based on time of day (evening picks lean decaf), mood, and the brew method you're using — scored over Percolate's tasting profiles.
| Argument | Type | Description |
|---|---|---|
| mood | string | e.g. 'need focus', 'lazy weekend', 'something comforting', 'adventurous' |
| brew_method | string | What you're brewing with |
| time_of_day | string | When the coffee will be drunk — shifts the pick toward lighter or lower-caffeine options later in the day |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"mood": {
"type": "string",
"maxLength": 120,
"description": "e.g. 'need focus', 'lazy weekend', 'something comforting', 'adventurous'"
},
"brew_method": {
"type": "string",
"maxLength": 120,
"description": "What you're brewing with"
},
"time_of_day": {
"enum": [
"morning",
"afternoon",
"evening"
],
"type": "string",
"description": "When the coffee will be drunk — shifts the pick toward lighter or lower-caffeine options later in the day"
}
},
"additionalProperties": false
}