{
  "result": {
    "tools": [
      {
        "name": "resolve_place",
        "title": "Resolve a place name",
        "description": "Find the Evendo ID of a country, region, city or neighbourhood by name. Always call this first: other tools take place IDs, not names. Names can be ambiguous (several 'Soho's), so check address_city / country_code in the results and pick the right one. If you don't know what kind of place it is, omit place_type.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "name": {
              "type": "string",
              "minLength": 1,
              "description": "Place name, spelled correctly, e.g. \"Prague\", \"Scotland\", \"Soho\"."
            },
            "place_type": {
              "type": "string",
              "enum": [
                "Country",
                "Regions",
                "SubRegions",
                "CountryRegions",
                "Destinations",
                "Cities",
                "Neighbourhoods"
              ],
              "description": "Cities for cities, Neighbourhoods for districts, CountryRegions for regions like Scotland or Bavaria (if none found, try Regions, then omit place_type), Destinations for destination areas, Country for countries."
            },
            "country_code": {
              "type": "string",
              "minLength": 2,
              "maxLength": 2,
              "description": "ISO 3166-1 alpha-2, e.g. \"GB\", to disambiguate."
            },
            "limit": {
              "type": "integer",
              "minimum": 1,
              "maximum": 10,
              "default": 5
            }
          },
          "required": [
            "name"
          ],
          "additionalProperties": false,
          "$schema": "http://json-schema.org/draft-07/schema#"
        },
        "annotations": {
          "readOnlyHint": true,
          "openWorldHint": true
        },
        "execution": {
          "taskSupport": "forbidden"
        }
      },
      {
        "name": "find_venues",
        "title": "Find venues in a place",
        "description": "List venues of one type anywhere inside a place (country, region, city or neighbourhood), best-ranked first, or nearest-first when `near` is given; sort_by switches to highest rated, most reviewed or distance. Use for requests like 'top-rated cheap Italian restaurants in Prague', 'most reviewed bars in London' or 'family-friendly outdoor attractions in Scotland'. place_id must come from resolve_place. For keyword matching ('sushi', 'rooftop', 'craft beer'), use search_venues instead. If a neighbourhood returns fewer than ~5 results, widen to its city.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "place_id": {
              "type": "string",
              "description": "ID from resolve_place."
            },
            "venue_type": {
              "type": "string",
              "enum": [
                "Restaurants",
                "Bars",
                "Shopping",
                "Attractions",
                "Landmarks"
              ],
              "description": "Restaurants (incl. cafes, diners), Bars (pubs, nightclubs), Shopping (markets, shops), Attractions (museums, parks, galleries, zoos), Landmarks (monuments, historic sites). Unsure between Attractions and Landmarks? Try both."
            },
            "category": {
              "type": "string",
              "description": "Exact, case-sensitive category. Restaurants: \"Italian\", \"Japanese\", \"Mexican\", \"Indian\", \"Chinese\", \"Thai\", \"French\", \"Mediterranean\", \"Seafood\", \"Steakhouse\", \"Pizza\", \"Sushi\", \"Vegan\", \"Vegetarian\", \"Fast Food\", \"Fine Dining\". Bars: \"Cocktail Bar\", \"Wine Bar\", \"Sports Bar\", \"Beer Garden\". Shopping: \"Market\", \"Boutique\", \"Mall\". Attractions: \"Museum\", \"Park\", \"Gallery\", \"Zoo\", \"Theme Park\", \"Garden\". If unsure of the exact value, use search_venues text instead."
            },
            "location_type": {
              "type": "string",
              "description": "Finer type than venue_type, exact match, e.g. \"Pub\", \"Cafe\", \"Restaurant\", \"Attraction\", \"Gastropub\", \"Museum\". Pub = Bars + \"Pub\"; cafe / coffee shop = Restaurants + \"Cafe\"."
            },
            "price_level": {
              "type": "string",
              "enum": [
                "inexpensive",
                "moderate",
                "expensive",
                "very_expensive"
              ],
              "description": "\"cheap\"/\"budget\" = inexpensive; \"upscale\"/\"fancy\" = expensive or very_expensive. There is no \"free\" level; for free places use search_venues with text \"free\"."
            },
            "min_rating": {
              "type": "number",
              "minimum": 0,
              "maximum": 5,
              "description": "Minimum average rating, 0-5. \"good\" = 4.0, \"top rated\"/\"best\" = 4.5 (pair with min_reviews)."
            },
            "min_reviews": {
              "type": "integer",
              "minimum": 0,
              "description": "Minimum number of reviews; use ~50+ to avoid thinly-rated places. \"good\" = 10+, \"top rated\" = 20+."
            },
            "environment": {
              "type": "string",
              "enum": [
                "Indoor",
                "Outdoor",
                "Indoor and Outdoor"
              ],
              "description": "\"outdoor\"/\"terrace\"/\"al fresco\" = Outdoor. For \"outdoor seating\" make two calls, Outdoor and \"Indoor and Outdoor\", and merge."
            },
            "ambience": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "Romantic",
                  "Cozy",
                  "Lively",
                  "Relaxing",
                  "Trendy",
                  "Scenic",
                  "Tranquil",
                  "Unique",
                  "Sophisticated"
                ]
              },
              "description": "Atmosphere tags. Every listed value must be present (AND), so pass only what the user actually requires."
            },
            "audience": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "Family Friendly",
                  "Child Friendly",
                  "Senior Friendly",
                  "Teen Friendly",
                  "Wheelchair Accessible",
                  "Pet Friendly",
                  "Business Meetings"
                ]
              },
              "description": "Who the place suits / accessibility. Every listed value must be present (AND), so pass only what the user actually requires."
            },
            "amenities": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "Restrooms",
                  "Parking",
                  "Wifi",
                  "Seating Areas",
                  "Drink Options",
                  "Food Options",
                  "Trash Bins",
                  "Information Boards"
                ]
              },
              "description": "Required amenities. Every listed value must be present (AND), so pass only what the user actually requires."
            },
            "experience": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "Cultural Heritage",
                  "Photowalk",
                  "Nature Escape",
                  "Day Trip",
                  "Weekend Getaway",
                  "Food & Drink Tour"
                ]
              },
              "description": "Experience tags. Every listed value must be present (AND), so pass only what the user actually requires."
            },
            "sustainability": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "Eco-Friendly",
                  "Public-Transport Accessible",
                  "Leave-No-Trace Critical"
                ]
              },
              "description": "Sustainability tags. Every listed value must be present (AND), so pass only what the user actually requires."
            },
            "weather_suitability": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "Any Weather",
                  "Rain / Wet Weather",
                  "Clear Skies",
                  "Windy Conditions",
                  "Mild Temperatures"
                ]
              },
              "description": "Weather suitability. Every listed value must be present (AND), so pass only what the user actually requires."
            },
            "access": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "Easy Access",
                  "Moderate Access",
                  "Difficult Access"
                ]
              },
              "description": "Physical access difficulty. Every listed value must be present (AND), so pass only what the user actually requires."
            },
            "style_visual": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "Iconic Views",
                  "Panoramas",
                  "Sunrise Spots",
                  "Sunset Spots"
                ]
              },
              "description": "Views. Every listed value must be present (AND), so pass only what the user actually requires."
            },
            "style_social_media": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "Instagrammable",
                  "Photo Spots",
                  "Selfie Spots",
                  "Aesthetic Corners"
                ]
              },
              "description": "Photo / social-media appeal. Every listed value must be present (AND), so pass only what the user actually requires."
            },
            "style_architecture": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "Landmarks",
                  "Heritage Neighborhoods",
                  "Modern Architecture"
                ]
              },
              "description": "Architecture. Every listed value must be present (AND), so pass only what the user actually requires."
            },
            "style_aesthetic": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "Industrial Designs",
                  "Modern Designs",
                  "Vintage",
                  "Minimalist"
                ]
              },
              "description": "Interior / design aesthetic. Every listed value must be present (AND), so pass only what the user actually requires."
            },
            "min_place_score": {
              "type": "number",
              "minimum": 0,
              "maximum": 100,
              "description": "Minimum Evendo place score (0-100 overall quality; most venues are 20-50, 70+ is excellent, 90+ is a city's very best)."
            },
            "near": {
              "type": "object",
              "properties": {
                "lat": {
                  "type": "number",
                  "minimum": -90,
                  "maximum": 90
                },
                "lon": {
                  "type": "number",
                  "minimum": -180,
                  "maximum": 180
                },
                "radius_km": {
                  "type": "number",
                  "minimum": 0.1,
                  "maximum": 50,
                  "default": 5
                }
              },
              "required": [
                "lat",
                "lon"
              ],
              "additionalProperties": false,
              "description": "Restrict to this radius around a point; results then sort nearest-first unless sort_by says otherwise. For 'near <landmark>', first find the landmark with search_venues (venue_type Landmarks, then Attractions) and use its location."
            },
            "sort_by": {
              "type": "string",
              "enum": [
                "best",
                "place_score",
                "rating",
                "reviews",
                "nearest",
                "farthest"
              ],
              "description": "best (default): Evendo ranking, or nearest-first when `near` is given. place_score: highest Evendo place score (0-100 overall quality) first. rating: highest average rating first (pair with min_reviews so 1-review places don't win). reviews: most reviewed first ('most popular'). nearest / farthest: by distance, require `near`. Places missing the value sort last. Changing sort_by restarts pagination: don't reuse a cursor from another sort."
            },
            "limit": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50,
              "default": 10,
              "description": "Results per page."
            },
            "cursor": {
              "type": "string",
              "description": "next_cursor from a previous call with otherwise identical arguments. Never invent one."
            }
          },
          "required": [
            "place_id",
            "venue_type"
          ],
          "additionalProperties": false,
          "$schema": "http://json-schema.org/draft-07/schema#"
        },
        "annotations": {
          "readOnlyHint": true,
          "openWorldHint": true
        },
        "execution": {
          "taskSupport": "forbidden"
        }
      },
      {
        "name": "search_venues",
        "title": "Keyword search for venues",
        "description": "Keyword search over venue names, taglines and descriptions (stemmed; 'brewery' matches 'breweries'; no typo tolerance). Scope it with within_place_id (from resolve_place) — never put the city name in the text. Short, concrete keywords work best: 'ramen', 'rooftop bar', 'flea market'. Combine with filters and/or `near`.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "text": {
              "type": "string",
              "minLength": 1,
              "description": "1-3 keywords describing what to find."
            },
            "within_place_id": {
              "type": "string",
              "description": "Restrict to this place's subtree (city, neighbourhood, region, country)."
            },
            "venue_type": {
              "type": "string",
              "enum": [
                "Restaurants",
                "Bars",
                "Shopping",
                "Attractions",
                "Landmarks"
              ],
              "description": "Restaurants (incl. cafes, diners), Bars (pubs, nightclubs), Shopping (markets, shops), Attractions (museums, parks, galleries, zoos), Landmarks (monuments, historic sites). Unsure between Attractions and Landmarks? Try both. Omit for vague asks ('spots', 'places')."
            },
            "country_code": {
              "type": "string",
              "minLength": 2,
              "maxLength": 2,
              "description": "ISO alpha-2; broad scoping when no place ID is known."
            },
            "category": {
              "type": "string",
              "description": "Exact, case-sensitive category. Restaurants: \"Italian\", \"Japanese\", \"Mexican\", \"Indian\", \"Chinese\", \"Thai\", \"French\", \"Mediterranean\", \"Seafood\", \"Steakhouse\", \"Pizza\", \"Sushi\", \"Vegan\", \"Vegetarian\", \"Fast Food\", \"Fine Dining\". Bars: \"Cocktail Bar\", \"Wine Bar\", \"Sports Bar\", \"Beer Garden\". Shopping: \"Market\", \"Boutique\", \"Mall\". Attractions: \"Museum\", \"Park\", \"Gallery\", \"Zoo\", \"Theme Park\", \"Garden\". If unsure of the exact value, use search_venues text instead."
            },
            "location_type": {
              "type": "string",
              "description": "Finer type than venue_type, exact match, e.g. \"Pub\", \"Cafe\", \"Restaurant\", \"Attraction\", \"Gastropub\", \"Museum\". Pub = Bars + \"Pub\"; cafe / coffee shop = Restaurants + \"Cafe\"."
            },
            "price_level": {
              "type": "string",
              "enum": [
                "inexpensive",
                "moderate",
                "expensive",
                "very_expensive"
              ],
              "description": "\"cheap\"/\"budget\" = inexpensive; \"upscale\"/\"fancy\" = expensive or very_expensive. There is no \"free\" level; for free places use search_venues with text \"free\"."
            },
            "min_rating": {
              "type": "number",
              "minimum": 0,
              "maximum": 5,
              "description": "Minimum average rating, 0-5. \"good\" = 4.0, \"top rated\"/\"best\" = 4.5 (pair with min_reviews)."
            },
            "min_reviews": {
              "type": "integer",
              "minimum": 0,
              "description": "Minimum number of reviews; use ~50+ to avoid thinly-rated places. \"good\" = 10+, \"top rated\" = 20+."
            },
            "environment": {
              "type": "string",
              "enum": [
                "Indoor",
                "Outdoor",
                "Indoor and Outdoor"
              ],
              "description": "\"outdoor\"/\"terrace\"/\"al fresco\" = Outdoor. For \"outdoor seating\" make two calls, Outdoor and \"Indoor and Outdoor\", and merge."
            },
            "ambience": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "Romantic",
                  "Cozy",
                  "Lively",
                  "Relaxing",
                  "Trendy",
                  "Scenic",
                  "Tranquil",
                  "Unique",
                  "Sophisticated"
                ]
              },
              "description": "Atmosphere tags. Every listed value must be present (AND), so pass only what the user actually requires."
            },
            "audience": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "Family Friendly",
                  "Child Friendly",
                  "Senior Friendly",
                  "Teen Friendly",
                  "Wheelchair Accessible",
                  "Pet Friendly",
                  "Business Meetings"
                ]
              },
              "description": "Who the place suits / accessibility. Every listed value must be present (AND), so pass only what the user actually requires."
            },
            "amenities": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "Restrooms",
                  "Parking",
                  "Wifi",
                  "Seating Areas",
                  "Drink Options",
                  "Food Options",
                  "Trash Bins",
                  "Information Boards"
                ]
              },
              "description": "Required amenities. Every listed value must be present (AND), so pass only what the user actually requires."
            },
            "experience": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "Cultural Heritage",
                  "Photowalk",
                  "Nature Escape",
                  "Day Trip",
                  "Weekend Getaway",
                  "Food & Drink Tour"
                ]
              },
              "description": "Experience tags. Every listed value must be present (AND), so pass only what the user actually requires."
            },
            "sustainability": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "Eco-Friendly",
                  "Public-Transport Accessible",
                  "Leave-No-Trace Critical"
                ]
              },
              "description": "Sustainability tags. Every listed value must be present (AND), so pass only what the user actually requires."
            },
            "weather_suitability": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "Any Weather",
                  "Rain / Wet Weather",
                  "Clear Skies",
                  "Windy Conditions",
                  "Mild Temperatures"
                ]
              },
              "description": "Weather suitability. Every listed value must be present (AND), so pass only what the user actually requires."
            },
            "access": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "Easy Access",
                  "Moderate Access",
                  "Difficult Access"
                ]
              },
              "description": "Physical access difficulty. Every listed value must be present (AND), so pass only what the user actually requires."
            },
            "style_visual": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "Iconic Views",
                  "Panoramas",
                  "Sunrise Spots",
                  "Sunset Spots"
                ]
              },
              "description": "Views. Every listed value must be present (AND), so pass only what the user actually requires."
            },
            "style_social_media": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "Instagrammable",
                  "Photo Spots",
                  "Selfie Spots",
                  "Aesthetic Corners"
                ]
              },
              "description": "Photo / social-media appeal. Every listed value must be present (AND), so pass only what the user actually requires."
            },
            "style_architecture": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "Landmarks",
                  "Heritage Neighborhoods",
                  "Modern Architecture"
                ]
              },
              "description": "Architecture. Every listed value must be present (AND), so pass only what the user actually requires."
            },
            "style_aesthetic": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "Industrial Designs",
                  "Modern Designs",
                  "Vintage",
                  "Minimalist"
                ]
              },
              "description": "Interior / design aesthetic. Every listed value must be present (AND), so pass only what the user actually requires."
            },
            "min_place_score": {
              "type": "number",
              "minimum": 0,
              "maximum": 100,
              "description": "Minimum Evendo place score (0-100 overall quality; most venues are 20-50, 70+ is excellent, 90+ is a city's very best)."
            },
            "near": {
              "type": "object",
              "properties": {
                "lat": {
                  "type": "number",
                  "minimum": -90,
                  "maximum": 90
                },
                "lon": {
                  "type": "number",
                  "minimum": -180,
                  "maximum": 180
                },
                "radius_km": {
                  "type": "number",
                  "minimum": 0.1,
                  "maximum": 50,
                  "default": 5
                }
              },
              "required": [
                "lat",
                "lon"
              ],
              "additionalProperties": false,
              "description": "Restrict to this radius around a point; results then sort nearest-first unless sort_by says otherwise. For 'near <landmark>', first find the landmark with search_venues (venue_type Landmarks, then Attractions) and use its location."
            },
            "sort_by": {
              "type": "string",
              "enum": [
                "best",
                "place_score",
                "rating",
                "reviews",
                "nearest",
                "farthest"
              ],
              "description": "best (default): Evendo ranking, or nearest-first when `near` is given. place_score: highest Evendo place score (0-100 overall quality) first. rating: highest average rating first (pair with min_reviews so 1-review places don't win). reviews: most reviewed first ('most popular'). nearest / farthest: by distance, require `near`. Places missing the value sort last. Changing sort_by restarts pagination: don't reuse a cursor from another sort."
            },
            "limit": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50,
              "default": 10,
              "description": "Results per page."
            },
            "cursor": {
              "type": "string",
              "description": "next_cursor from a previous call with otherwise identical arguments. Never invent one."
            }
          },
          "required": [
            "text"
          ],
          "additionalProperties": false,
          "$schema": "http://json-schema.org/draft-07/schema#"
        },
        "annotations": {
          "readOnlyHint": true,
          "openWorldHint": true
        },
        "execution": {
          "taskSupport": "forbidden"
        }
      },
      {
        "name": "list_subareas",
        "title": "List areas inside a place",
        "description": "List the direct children of a place, e.g. the neighbourhoods of a city or the cities of a region, most prominent first. Useful to suggest areas to explore or to narrow a search.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "place_id": {
              "type": "string",
              "description": "ID from resolve_place."
            },
            "area_type": {
              "type": "string",
              "enum": [
                "Country",
                "Regions",
                "SubRegions",
                "CountryRegions",
                "Destinations",
                "Cities",
                "Neighbourhoods"
              ],
              "description": "e.g. Neighbourhoods for a city, Cities for a region, CountryRegions for a country. Omit to see everything one level down, which can include featured venues, not just areas."
            },
            "limit": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 30
            },
            "cursor": {
              "type": "string"
            }
          },
          "required": [
            "place_id"
          ],
          "additionalProperties": false,
          "$schema": "http://json-schema.org/draft-07/schema#"
        },
        "annotations": {
          "readOnlyHint": true,
          "openWorldHint": true
        },
        "execution": {
          "taskSupport": "forbidden"
        }
      },
      {
        "name": "get_venue",
        "title": "Get venue details",
        "description": "Full details for one venue or place: description, address, coordinates, phone, website, booking link, photos, and all attribute tags. Pass the id from a previous result (or a slug like 'united-kingdom/london'). For several venues at once, use get_venues.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "description": "Node ID from another tool's results."
            },
            "slug": {
              "type": "string",
              "description": "Evendo slug path, if you have it instead of an ID."
            }
          },
          "additionalProperties": false,
          "$schema": "http://json-schema.org/draft-07/schema#"
        },
        "annotations": {
          "readOnlyHint": true,
          "openWorldHint": true
        },
        "execution": {
          "taskSupport": "forbidden"
        }
      },
      {
        "name": "get_venues",
        "title": "Get details for several venues",
        "description": "Full details (same fields as get_venue) for up to 50 venues or places in one call, e.g. every stop of an itinerary. Pass ids and/or slugs from previous results; duplicates are fetched once. Results keep the order you passed (ids first, then slugs); anything not found is listed in not_found instead of failing the call.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "ids": {
              "type": "array",
              "items": {
                "type": "string",
                "minLength": 1
              },
              "maxItems": 50,
              "description": "Node IDs from other tools' results."
            },
            "slugs": {
              "type": "array",
              "items": {
                "type": "string",
                "minLength": 1
              },
              "maxItems": 50,
              "description": "Evendo slug paths, if you have them instead of IDs."
            }
          },
          "additionalProperties": false,
          "$schema": "http://json-schema.org/draft-07/schema#"
        },
        "annotations": {
          "readOnlyHint": true,
          "openWorldHint": true
        },
        "execution": {
          "taskSupport": "forbidden"
        }
      }
    ]
  },
  "jsonrpc": "2.0",
  "id": 2
}