Cork & Curve MCP
Provides Model Context Protocol tools for accessing verified wine travel data, including searching for wineries and wine bars, retrieving place details, planning daily itineraries, finding wine festivals, booking experiences and stays, hiring cars, discovering food pairings, and accessing city guides across European wine regions.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://corkandcurve.com/mcpWhat its tools do
10 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Passed Official MCP Registry namespace is tied to corkandcurve.com ·
- Passed Endpoint is on the registry namespace domain ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Search for wineries and wine bars by region or coordinates
- Plan daily wine travel itineraries
- Find wine festivals by date range
- Book wine tastings, tours, and stays
Source and maintenance
Protocol and capabilities
- Server
- corkandcurve 1.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 10 advertised
- Resources
- 1 advertised
- Resource templates
- 0 advertised
- Prompts
- 0 advertised
{
"tools": {
"listChanged": false
},
"prompts": {
"listChanged": false
},
"resources": {
"subscribe": false,
"listChanged": false
},
"experimental": {}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
10 advertised
search_places
Search verified venues (read-only). Filter by text, city, kind (a topic such as vineyards, tasting-rooms, wine-bars, wine-restaurants, wine-retailers, distilleries, or a group: visit, drink, buy, do), cuisine, dietary, price tier, opening time, or near a coordinate. Results are ranked by relevance then editorial score and carry provenance (source URL, checked_on, open_status), hours, a page URL to cite and a tracked booking link where one exists. Returns at most `limit` items; an unknown city returns {did_you_mean: [...]} instead of a list.
{
"type": "object",
"title": "t_placesArguments",
"properties": {
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "City",
"default": null,
"description": "City slug or name, e.g. 'burgenland' or 'New York City'. Unknown cities answer with did_you_mean."
},
"kind": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Kind",
"default": null,
"description": "A topic slug (vineyards, tasting-rooms, wine-bars, wine-restaurants, wine-retailers, distilleries...) or a group: visit, drink, buy, do."
},
"near": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Near",
"default": null,
"description": "'lat,lng' to search around a point; results then sort by distance."
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 20,
"minimum": 1,
"description": "Maximum results (1-100)."
},
"query": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Query",
"default": null,
"description": "Free text: a venue name, dish, cuisine, neighbourhood or theme."
},
"offset": {
"type": "integer",
"title": "Offset",
"default": 0,
"minimum": 0,
"description": "Skip this many results, for paging."
},
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Country",
"default": null,
"description": "Country slug or name, e.g. 'italy'. Optional where city is given."
},
"cuisine": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Cuisine",
"default": null,
"description": "Cuisine slug or name, e.g. 'sichuan', 'neapolitan pizza'."
},
"dietary": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Dietary",
"default": null,
"description": "vegan, vegetarian, gluten-free, halal, kosher..."
},
"open_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Open At",
"default": null,
"description": "'now', a weekday and time such as 'sunday 10:00', or an ISO datetime (UTC). Venues with unparseable hours are returned last, flagged."
},
"radius_km": {
"type": "number",
"title": "Radius Km",
"default": 3,
"description": "Radius for near, in km."
},
"price_tier": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Price Tier",
"default": null,
"description": "The site's tier symbols for the country, e.g. '€€' or '$$$'."
}
}
}{
"type": "object",
"title": "t_placesOutput",
"required": [
"result"
],
"properties": {
"result": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
}
},
{
"type": "object",
"additionalProperties": true
}
],
"title": "Result"
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}plan_day
Compose a wine day for one city (read-only): one best-scored open venue per slot from morning to evening, filtered by neighbourhood, dietary need and price tier, every stop open on the given date, plus one bookable experience. Also lists the titles of the editorial itineraries for the city, which are the better plan when one exists (fetch them with `itineraries`).
{
"type": "object",
"title": "t_planArguments",
"required": [
"country",
"city"
],
"properties": {
"city": {
"type": "string",
"title": "City",
"description": "City slug or name, e.g. 'burgenland' or 'New York City'. Unknown cities answer with did_you_mean."
},
"date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Date",
"default": null,
"description": "ISO date, e.g. '2026-09-20'. Each stop is checked open at its slot time on that weekday."
},
"country": {
"type": "string",
"title": "Country",
"description": "Country slug or name, e.g. 'italy'. Optional where city is given."
},
"dietary": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Dietary",
"default": null,
"description": "vegan, vegetarian, gluten-free, halal, kosher..."
},
"price_tier": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Price Tier",
"default": null,
"description": "The site's tier symbols for the country, e.g. '€€' or '$$$'."
},
"neighborhood": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Neighborhood",
"default": null,
"description": "Neighbourhood name or slug to keep the day inside."
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}place
One venue in full by id (read-only): every field, provenance, hours, open_now_utc, the booking link and three nearby venues. Returns {error: ...} when the id is malformed or unknown.
{
"type": "object",
"title": "t_placeArguments",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"title": "Id",
"description": "The id search_places returned: country/city/kind/slug, e.g. 'italy/rome/restaurants/roscioli'."
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}festivals
Wine festivals with their next resolved dates (read-only). Filter by city, country, a date window and text. Each item carries starts_on/ends_on for the next edition, the organiser source URL and the page to cite.
{
"type": "object",
"title": "t_festivalsArguments",
"properties": {
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "City",
"default": null,
"description": "City slug or name, e.g. 'burgenland' or 'New York City'. Unknown cities answer with did_you_mean."
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 20,
"minimum": 1,
"description": "Maximum results (1-100)."
},
"query": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Query",
"default": null,
"description": "Free text: festival name, food or drink."
},
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Country",
"default": null,
"description": "Country slug or name, e.g. 'italy'. Optional where city is given."
},
"date_to": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Date To",
"default": null,
"description": "Latest start date to include, ISO."
},
"date_from": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Date From",
"default": null,
"description": "Earliest end date to include, ISO. Defaults to today."
}
}
}{
"type": "object",
"title": "t_festivalsOutput",
"required": [
"result"
],
"properties": {
"result": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"title": "Result"
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}experiences
Bookable wine tours, tastings, cellar visits and tickets for a region. Read-only. Each item has price, rating, review count, duration and a tracked `book` link. Ranked by relevance to `query` when given, otherwise by popularity.
{
"type": "object",
"title": "t_experiencesArguments",
"required": [
"city"
],
"properties": {
"city": {
"type": "string",
"title": "City",
"description": "City slug or name, e.g. 'burgenland' or 'New York City'. Unknown cities answer with did_you_mean."
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 20,
"minimum": 1,
"description": "Maximum results (1-100)."
},
"query": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Query",
"default": null,
"description": "Free text, e.g. 'cooking class', 'wine tasting', 'market tour'."
},
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Country",
"default": null,
"description": "Country slug or name, e.g. 'italy'. Optional where city is given."
},
"food_only": {
"type": "boolean",
"title": "Food Only",
"default": true,
"description": "Keep only products on the site's theme (food and drink, or wine). Set false for everything bookable in the city."
}
}
}{
"type": "object",
"title": "t_experiencesOutput",
"required": [
"result"
],
"properties": {
"result": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"title": "Result"
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}stays
Hotels and stay partners for a city (read-only): hotel listings with a tracked booking link each, plus the partner search links that cover the city. Prices are not returned; the partner page has them.
{
"type": "object",
"title": "t_staysArguments",
"required": [
"country",
"city"
],
"properties": {
"city": {
"type": "string",
"title": "City",
"description": "City slug or name, e.g. 'burgenland' or 'New York City'. Unknown cities answer with did_you_mean."
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 10,
"minimum": 1,
"description": "Maximum hotel listings (1-50)."
},
"country": {
"type": "string",
"title": "Country",
"description": "Country slug or name, e.g. 'italy'. Optional where city is given."
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}car_hire
Car hire partners that verifiably cover a city (read-only): one entry per partner with the pickup facts we checked and a tracked booking link. Empty list when no partner covers the city.
{
"type": "object",
"title": "t_carsArguments",
"required": [
"country",
"city"
],
"properties": {
"city": {
"type": "string",
"title": "City",
"description": "City slug or name, e.g. 'burgenland' or 'New York City'. Unknown cities answer with did_you_mean."
},
"country": {
"type": "string",
"title": "Country",
"description": "Country slug or name, e.g. 'italy'. Optional where city is given."
}
}
}{
"type": "object",
"title": "t_carsOutput",
"required": [
"result"
],
"properties": {
"result": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"title": "Result"
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}dishes
Signature wines of a region and the producer to visit (read-only). Each item has a description, the venues resolved to ids and page URLs, and the page to cite; ranked by editorial score.
{
"type": "object",
"title": "t_dishesArguments",
"properties": {
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "City",
"default": null,
"description": "City slug or name, e.g. 'burgenland' or 'New York City'. Unknown cities answer with did_you_mean."
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 20,
"minimum": 1,
"description": "Maximum results (1-100)."
},
"query": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Query",
"default": null,
"description": "Free text: a dish, ingredient, style or grape."
},
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Country",
"default": null,
"description": "Country slug or name, e.g. 'italy'. Optional where city is given."
}
}
}{
"type": "object",
"title": "t_dishesOutput",
"required": [
"result"
],
"properties": {
"result": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"title": "Result"
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}itineraries
Editorial day-by-day wine itineraries for a city (read-only): every venue resolved to an id, address, hours and page URL. Empty list when the city has none.
{
"type": "object",
"title": "t_itinerariesArguments",
"required": [
"country",
"city"
],
"properties": {
"city": {
"type": "string",
"title": "City",
"description": "City slug or name, e.g. 'burgenland' or 'New York City'. Unknown cities answer with did_you_mean."
},
"country": {
"type": "string",
"title": "Country",
"description": "Country slug or name, e.g. 'italy'. Optional where city is given."
}
}
}{
"type": "object",
"title": "t_itinerariesOutput",
"required": [
"result"
],
"properties": {
"result": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"title": "Result"
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}cities
Every city the site covers (read-only), with the country and city slugs the other tools accept and the hub page URL. Call first when unsure of coverage.
{
"type": "object",
"title": "t_citiesArguments",
"properties": {
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Country",
"default": null,
"description": "Country slug to filter by, e.g. 'italy'."
}
}
}{
"type": "object",
"title": "t_citiesOutput",
"required": [
"result"
],
"properties": {
"result": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"title": "Result"
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
0 advertised
Resources
1 advertised
How to use this server
guide://usage90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-06: 1 of 1 checks answered
- 2026-11-07: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 925 ms
- 95th percentile latency
- 925 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 925 ms · metadata changed · 10 tool(s), 1 resource(s), 0 resource template(s), 0 prompt(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http cork-curve-mcp https://corkandcurve.com/mcpCodex
codex mcp add cork-curve-mcp --url https://corkandcurve.com/mcpCursor
{
"mcpServers": {
"cork-curve-mcp": {
"url": "https://corkandcurve.com/mcp"
}
}
}Cline
{
"mcpServers": {
"cork-curve-mcp": {
"type": "streamableHttp",
"url": "https://corkandcurve.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"cork-curve-mcp": {
"type": "http",
"url": "https://corkandcurve.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http cork-curve-mcp https://corkandcurve.com/mcpClaude Desktop
https://corkandcurve.com/mcpWindsurf
{
"mcpServers": {
"cork-curve-mcp": {
"serverUrl": "https://corkandcurve.com/mcp"
}
}
}Let your agent find its tools
Find servers like Cork & Curve MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other commerce servers
Do you run Cork & Curve MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.