Find alcohol-free bars and bottle shops by city.
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.
Get one published alcohol-free venue by its slug.
The listing slug.
Get one published alcohol-free venue by its slug.
| Argument | Type | Description |
|---|---|---|
| slug* | string | The listing slug. |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
"maxLength": 100,
"minLength": 1,
"description": "The listing slug."
}
},
"additionalProperties": false
}Get the number of published alcohol-free venues, places and categories, and when the data last changed.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}List categories with their alcohol-free venue counts.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}List countries, regions and cities that have alcohol-free venues.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}List where the alcohol-free venue data comes from, with the license and refresh of each source.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Search published alcohol-free venues by text, place and category.
| Argument | Type | Description |
|---|---|---|
| q | string | Search text, with at least one letter or digit. Matches name, categories, attributes, description and place. Typos fall back to close matches. |
| city | string | City slug, from /places. |
| sort | string | `relevance` needs `q` and is the default with it. `name` is the default without `q`. `recent` is newest first. |
| limit | integer | Items per page. |
| cursor | string | `page.nextCursor` from the previous response. Opaque. Send the same filters and `limit`. |
| region | string | Region slug, from /places. |
| country | string | ISO 3166-1 alpha-2 country code, any case. A country the directory does not cover, as listed in /places, gives 400. |
| category | string | Category slug, from /categories. A parent slug also matches its children. |
{
"type": "object",
"properties": {
"q": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Search text, with at least one letter or digit. Matches name, categories, attributes, description and place. Typos fall back to close matches."
},
"city": {
"type": "string",
"pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
"maxLength": 100,
"minLength": 1,
"description": "City slug, from /places."
},
"sort": {
"enum": [
"relevance",
"name",
"recent"
],
"type": "string",
"description": "`relevance` needs `q` and is the default with it. `name` is the default without `q`. `recent` is newest first."
},
"limit": {
"type": "integer",
"default": 20,
"maximum": 50,
"minimum": 1,
"description": "Items per page."
},
"cursor": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "`page.nextCursor` from the previous response. Opaque. Send the same filters and `limit`."
},
"region": {
"type": "string",
"pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
"maxLength": 100,
"minLength": 1,
"description": "Region slug, from /places."
},
"country": {
"type": "string",
"pattern": "^[A-Za-z]{2}$",
"description": "ISO 3166-1 alpha-2 country code, any case. A country the directory does not cover, as listed in /places, gives 400."
},
"category": {
"type": "string",
"pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
"maxLength": 100,
"minLength": 1,
"description": "Category slug, from /categories. A parent slug also matches its children."
}
},
"additionalProperties": false
}