glassmap.clyeh.xyz
An agent-native web map: WebMCP turns the map canvas into a semantic surface.
First seen 2026-11-05 · Last seen 2026-11-05 · Source: webmcp.com
Answer 7 · Act 8 · Transact 0 · Score: Not yet scored
Tool inspector
find_features
Search every loaded feature, not only the visible ones. Filter by text (name, brand, cuisine or address), category, distance from a place, a feature or a coordinate (up to 10000 m), and by whether a feature is inside a shape on the map - including one the human drew by hand. Results come back nearest first, each with its distance in metres and an 8-point compass direction from that origin, which is echoed as origin - together with radius_m when near or radius_m limited the search. Naming a point-of-interest category (restaurant, cafe, pharmacy and so on) fetches it for the whole city on first use and then searches all of it, wherever the map happens to be pointing; searching without categories answers from what is already loaded and lists the rest under unsearched_categories. With query, the answer also carries unloaded_matches when the same text matches in point-of-interest categories this session has not fetched: {category, count} for each, biggest first, at most 6 of them (unloaded_matches_omitted counts any further ones). This is how a search that returned nothing can still tell you where the matches are - the count is city-wide, matched on the same name, brand, cuisine and address fields this tool matches once a category is loaded, so call find_features again with that category in categories to load it and get the features. Nothing is fetched on your behalf: naming the category is still your call.
Input schema
| Property | Type | Required | Description |
|---|---|---|---|
query |
string | no | Case-insensitive substring of the local or English name, brand, cuisine, or address. A result may have matched on a field the list does not echo; get_place_details shows all of a feature's tags. Omit to match every name. |
categories |
array | no | Which categories to search. Always in memory: mrt_station, park, school, supermarket, listing, district. Points of interest, fetched for the whole city the first time you name one and kept for the rest of the session: restaurant, cafe, fast_food, bakery, bar, convenience, pharmacy, clinic, hospital, place_of_worship, bank, hotel, parking, bicycle_rental, library, museum, post_office, police. Naming a category is how you search it - there is no way to search all of them at once. Omit this and the search covers the always-in-memory categories plus the points of interest fetched earlier in this session; the answer then lists what it did not search under unsearched_categories, with how many exist city-wide. |
near |
— | no | Origin for distances and for the radius filter: a feature id returned by an earlier call (e.g. "osm:node:123"), a place name to look up in the loaded data (e.g. "Daan Station"), or an explicit coordinate. Omit to measure from the centre of the current view. |
radius_m |
number | no | Keep only features within this many metres of "near" (default 800 when "near" is given, no radius filter otherwise, at most 10000). A larger radius is refused rather than quietly narrowed. Measured to a feature point, or to the centroid of an area. |
within |
string | no | "drawing:<n>" - restrict results to features inside that drawing, as returned by draw_shape or listed in map state under drawings (the ten most recent; drawings.count is the true total). A circle or polygon works; a line has no inside. Combines with the other filters instead of replacing them. |
limit |
integer | no | Maximum number of features to return (default 20, max 100). The "total" field reports how many matched in all. |
Raw JSON schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Case-insensitive substring of the local or English name, brand, cuisine, or address. A result may have matched on a field the list does not echo; get_place_details shows all of a feature's tags. Omit to match every name."
},
"categories": {
"type": "array",
"minItems": 1,
"items": {
"type": "string",
"enum": [
"mrt_station",
"park",
"school",
"supermarket",
"listing",
"district",
"restaurant",
"cafe",
"fast_food",
"bakery",
"bar",
"convenience",
"pharmacy",
"clinic",
"hospital",
"place_of_worship",
"bank",
"hotel",
"parking",
"bicycle_rental",
"library",
"museum",
"post_office",
"police"
]
},
"description": "Which categories to search. Always in memory: mrt_station, park, school, supermarket, listing, district. Points of interest, fetched for the whole city the first time you name one and kept for the rest of the session: restaurant, cafe, fast_food, bakery, bar, convenience, pharmacy, clinic, hospital, place_of_worship, bank, hotel, parking, bicycle_rental, library, museum, post_office, police. Naming a category is how you search it - there is no way to search all of them at once. Omit this and the search covers the always-in-memory categories plus the points of interest fetched earlier in this session; the answer then lists what it did not search under unsearched_categories, with how many exist city-wide."
},
"near": {
"description": "Origin for distances and for the radius filter: a feature id returned by an earlier call (e.g. \"osm:node:123\"), a place name to look up in the loaded data (e.g. \"Daan Station\"), or an explicit coordinate. Omit to measure from the centre of the current view.",
"anyOf": [
{
"type": "string",
"description": "A feature id, or the name of a station, park or district. A name needs the base data the page loads on open; before that it answers \"map data not ready\" rather than guessing, and asking again works."
},
{
"type": "object",
"properties": {
"lng": {
"type": "number",
"minimum": -180,
"maximum": 180,
"description": "Longitude in degrees."
},
"lat": {
"type": "number",
"minimum": -90,
"maximum": 90,
"description": "Latitude in degrees."
}
},
"required": [
"lng",
"lat"
],
"additionalProperties": false,
"description": "Explicit coordinate."
}
]
},
"radius_m": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 10000,
"description": "Keep only features within this many metres of \"near\" (default 800 when \"near\" is given, no radius filter otherwise, at most 10000). A larger radius is refused rather than quietly narrowed. Measured to a feature point, or to the centroid of an area."
},
"within": {
"type": "string",
"description": "\"drawing:<n>\" - restrict results to features inside that drawing, as returned by draw_shape or listed in map state under drawings (the ten most recent; drawings.count is the true total). A circle or polygon works; a line has no inside. Combines with the other filters instead of replacing them."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"description": "Maximum number of features to return (default 20, max 100). The \"total\" field reports how many matched in all."
}
},
"additionalProperties": false
}
Similar websites
gabrielcatdeveloper.github.io
portami
carregados.com.br
Brazilian EV charging station map and trip planner for finding charging points and planning routes with charging stops across Latin America.
trip-world-taupe.vercel.app
TripBuilder is a shared itinerary workspace for humans and AI agents.
freemap.sk
Freemap Slovakia, a detailed digital map of Central Europe for hiking, cycling, cross-country skiing and horse riding, with marked trails and place search.