diff --git a/README.md b/README.md index 7d726e9..7c18ee1 100644 --- a/README.md +++ b/README.md @@ -126,9 +126,9 @@ Add to `.mcp.json`: | `import_stac_asset` | Import a STAC asset as a local dataset | | `search_stac` | Search local STAC with bbox/datetime/CQL2 filters | | `indoor_api` | Allowlisted Indoor GIS endpoint access (buildings/floors/spaces/navigation/analytics/sensors/booking/geofences/simulations). Mutations require `confirm=true`. | -| `map_api` | Allowlisted map endpoint access (publish/unpublish/stats/embed config, raster metadata/JSON analysis/export ops including contour/viewshed/profile/KDE, OGC feature edit ops). Mutations require `confirm=true`. | +| `map_api` | Allowlisted map endpoint access (publish/unpublish/stats/embed config, raster metadata/JSON analysis/export ops including contour/viewshed/profile/KDE/slope/aspect, geodesic area/length, raster classification via k-means/ISODATA/max-likelihood/random-forest, OGC feature edit ops). Mutations require `confirm=true`. | -Use `list_operations` for the live vector-processing catalog. Raster operations do not currently have a live catalog endpoint, so `run_raster_process` documents the current backend families directly: terrain, hydrology, distance/cost, spectral/change, classification, and raster-vector conversion. For dataset-name-based raster JSON routes, `map_api` now also exposes contour, viewshed, profile, and KDE. +Use `list_operations` for the live vector-processing catalog. Raster operations do not currently have a live catalog endpoint, so `run_raster_process` documents the current backend families directly: terrain, hydrology, distance/cost, spectral/change, classification, and raster-vector conversion. For dataset-name-based raster JSON routes, `map_api` now also exposes contour, viewshed, profile, KDE, slope, and aspect. Geodesic area/length and raster classification (k-means, ISODATA, maximum-likelihood, random-forest) are also available via `map_api`. ## Example Workflows diff --git a/mcp/handlers.go b/mcp/handlers.go index 105018a..0acb767 100644 --- a/mcp/handlers.go +++ b/mcp/handlers.go @@ -212,6 +212,14 @@ var mapOperations = map[string]apiOperation{ "raster_viewshed": {Method: "POST", Path: "/raster/{name}/viewshed"}, "raster_profile": {Method: "POST", Path: "/raster/{name}/profile"}, "raster_kde": {Method: "POST", Path: "/api/raster/kde"}, + "raster_slope": {Method: "POST", Path: "/raster/{name}/slope"}, + "raster_aspect": {Method: "POST", Path: "/raster/{name}/aspect"}, + "geodesic_area": {Method: "POST", Path: "/api/geodesic/area"}, + "geodesic_length": {Method: "POST", Path: "/api/geodesic/length"}, + "classify_kmeans": {Method: "POST", Path: "/api/raster/classify/kmeans"}, + "classify_isodata": {Method: "POST", Path: "/api/raster/classify/isodata"}, + "classify_ml": {Method: "POST", Path: "/api/raster/classify/ml"}, + "classify_rf": {Method: "POST", Path: "/api/raster/classify/rf"}, "create_feature": {Method: "POST", Path: "/collections/{collection_id}/items", Mutating: true}, "update_feature": {Method: "PUT", Path: "/collections/{collection_id}/items/{feature_id}", Mutating: true}, "delete_feature": {Method: "DELETE", Path: "/collections/{collection_id}/items/{feature_id}", Mutating: true}, diff --git a/mcp/tools.go b/mcp/tools.go index 56a0581..de0a8a4 100644 --- a/mcp/tools.go +++ b/mcp/tools.go @@ -617,7 +617,7 @@ func AllTools() []Tool { }, { Name: "map_api", - Description: "Access map-focused operations (publishing, raster metadata, OGC feature edits) through a strict allowlist. Mutating operations require confirm=true.", + Description: "Access map-focused operations (publishing, raster metadata, slope/aspect, geodesic area/length, raster classification, OGC feature edits) through a strict allowlist. Mutating operations require confirm=true.", InputSchema: InputSchema{ Type: "object", Properties: map[string]PropertySchema{ @@ -629,6 +629,9 @@ func AllTools() []Tool { "update_map_embed_config", "get_public_map", "get_raster_info", "get_raster_stats", "get_raster_histogram", "get_raster_dimensions", "get_raster_values", "raster_zonal_stats", "export_raster_band", "raster_contour", "raster_viewshed", "raster_profile", "raster_kde", + "raster_slope", "raster_aspect", + "geodesic_area", "geodesic_length", + "classify_kmeans", "classify_isodata", "classify_ml", "classify_rf", "create_feature", "update_feature", "delete_feature", }, },