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
select_features
Highlight features on the map and in the sidebar so a sighted person can see what you are talking about. Pass explicit ids (from find_features, list_features_in_view or describe_surroundings), or the same query/near/radius_m (at most 10000 m)/categories/within filter as find_features — the filter resolves to the same set of features, but unlike find_features it does not stop at the limit: every match is selected, and state.selection.count reports the true number. Pass an empty ids array to clear the selection. Returns the resulting selection and the new map state; selected lists at most 20 of them. A filter that matches more than 500 point-of-interest features is refused rather than highlighting half a city: the answer gives the true count, and near + radius_m, within or query narrows it. On a page opened from a share link whose point-of-interest categories are still loading, the ids that belong to them stay selected and come back in pending_ids instead of selected: they are not lost, and state.tier2.loading names what is still arriving.
Input schema
| Property | Type | Required | Description |
|---|---|---|---|
ids |
array | no | Feature ids to select, as returned by find_features or list_features_in_view (at most 100; use the filter instead for larger sets). An empty array clears the selection. Ids that are not loaded are reported in unknown_ids instead of failing the call - except while a share link's categories are still loading, where an id they may contain is kept, selected and reported in pending_ids. |
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. Exactly as in find_features. |
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. |
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. |
replace |
boolean | no | true (the default) replaces the current selection; false adds to it. |
Raw JSON schema
{
"type": "object",
"properties": {
"ids": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 100,
"description": "Feature ids to select, as returned by find_features or list_features_in_view (at most 100; use the filter instead for larger sets). An empty array clears the selection. Ids that are not loaded are reported in unknown_ids instead of failing the call - except while a share link's categories are still loading, where an id they may contain is kept, selected and reported in pending_ids."
},
"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. Exactly as in find_features."
},
"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."
},
"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."
},
"replace": {
"type": "boolean",
"description": "true (the default) replaces the current selection; false adds to it."
}
},
"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.