{"name":"io.github.mapsmith-ai/mapsmith","slug":"mapsmith-ai-mapsmith","title":null,"description":"Deterministic GIS geoprocessing for AI agents, with verifiable provenance on every output","url":"https://mcp.market/server/mapsmith-ai-mapsmith","rating":null,"grade":"B","score":82,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":28,"stars":1,"forks":0,"downloads_week":29,"last_push_at":"2026-09-15T08:54:34.000Z","license":"AGPL-3.0"},"uptime":null,"claimed":false,"transport":"mixed","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/mapsmith-ai/MapSmith","website":"https://github.com/mapsmith-ai/MapSmith","version":"0.4.0","remotes":[],"packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"mapsmith","version":"0.4.0","runtimeHint":"uvx","transport":{"type":"stdio"},"environmentVariables":[{"description":"Confine all reads/writes to this directory (path jail + sandboxed SQL engine)","format":"filepath","name":"MAPSMITH_WORKSPACE"}]},{"registryType":"oci","identifier":"ghcr.io/mapsmith-ai/mapsmith:0.4.0","runtimeHint":"docker","transport":{"type":"stdio"},"environmentVariables":[{"description":"Confine all reads/writes to this directory (path jail + sandboxed SQL engine)","format":"filepath","name":"MAPSMITH_WORKSPACE"}]}],"tools":[{"name":"aspect","description":"Aspect from a DEM: downslope azimuth in degrees, 0 = north. GeoTIFF in/out.","write_action":false,"price_micros":0,"input_schema":null},{"name":"buffer_layer","description":"Buffer all features by a distance in meters.","write_action":false,"price_micros":0,"input_schema":null},{"name":"centroid_layer","description":"One point per feature: the geometric centroid, computed in a metric CRS.","write_action":false,"price_micros":0,"input_schema":null},{"name":"clip_layer","description":"Clip a layer to the area of a mask layer. CRS are aligned automatically.","write_action":false,"price_micros":0,"input_schema":null},{"name":"convert_format","description":"Convert a vector dataset between formats; the target is chosen by the output extension (.parquet, .gpkg, .geojson).","write_action":false,"price_micros":0,"input_schema":null},{"name":"describe_dataset","description":"Inspect a dataset, vector or raster, before analysing it.","write_action":false,"price_micros":0,"input_schema":null},{"name":"dissolve_layer","description":"Merge features into one geometry per value of `by` (or one feature in all).","write_action":false,"price_micros":0,"input_schema":null},{"name":"execute_plan","description":"Validate, then execute a geoprocessing plan step by step.","write_action":true,"price_micros":0,"input_schema":null},{"name":"explode_layer","description":"Split multi-part geometries into one feature per part (attributes copied).","write_action":false,"price_micros":0,"input_schema":null},{"name":"flow_accumulation","description":"D8 flow accumulation from a DEM (GeoTIFF in/out). Depressions are filled first.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_provenance","description":"Return the full lineage manifest of a MapSmith output dataset.","write_action":false,"price_micros":0,"input_schema":null},{"name":"hillshade","description":"Shaded relief from a DEM: GeoTIFF in, GeoTIFF out (values scaled 0-32767).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_operations","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"measure_area","description":"Area per feature in SQUARE METRES, written to a named column, with the total in the result.","write_action":false,"price_micros":0,"input_schema":null},{"name":"merge_layers","description":"Append two or more layers into one (schema union, attributes aligned by name).","write_action":false,"price_micros":0,"input_schema":null},{"name":"nearest_join","description":"Attach each feature's nearest neighbour from another layer, with the distance IN METERS in a named column.","write_action":false,"price_micros":0,"input_schema":null},{"name":"overlay_layers","description":"Set-theoretic overlay of two layers: intersection (default), union, identity, symmetric_difference or difference.","write_action":false,"price_micros":0,"input_schema":null},{"name":"preview_map","description":"Show datasets on the interactive in-chat map panel (MCP Apps).","write_action":false,"price_micros":0,"input_schema":null},{"name":"reproject_layer","description":"Reproject a layer to a target CRS, e.g. 'EPSG:32632' or a WKT string.","write_action":false,"price_micros":0,"input_schema":null},{"name":"run_operation","description":"Run ANY catalog operation by name, including the ones with no tool of their own — which is most of them, and increasingly so.","write_action":true,"price_micros":0,"input_schema":null},{"name":"run_sql","description":"Run spatial SQL (DuckDB dialect, ST_* functions, read_parquet/ST_Read for files).","write_action":true,"price_micros":0,"input_schema":null},{"name":"server_info","description":"MapSmith version, licensing, and available engines.","write_action":false,"price_micros":0,"input_schema":null},{"name":"simplify_layer","description":"Simplify geometries (Douglas-Peucker, topology preserved) with the drift measured: the manifest records total area and length before and after.","write_action":false,"price_micros":0,"input_schema":null},{"name":"slope","description":"Slope gradient from a DEM: GeoTIFF in, GeoTIFF out.","write_action":false,"price_micros":0,"input_schema":null},{"name":"spatial_join","description":"Join by spatial predicate (intersects/within/contains).","write_action":false,"price_micros":0,"input_schema":null},{"name":"validate_plan","description":"Statically validate a multi-step geoprocessing plan BEFORE running anything.","write_action":false,"price_micros":0,"input_schema":null},{"name":"watershed","description":"Watershed of each pour point: DEM + points in, basin raster out (GeoTIFF).","write_action":false,"price_micros":0,"input_schema":null},{"name":"zonal_statistics","description":"Statistics of a raster within each vector zone (exact fractional pixel coverage).","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":82,"grade":"B","scanned_at":"2026-09-20T20:12:19.267Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-20T20:12:19.211Z","components":{"code":{"score":20,"max":25,"notes":["43 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 5 days ago"]},"identity":{"score":6,"max":10,"notes":["registry namespace matches repository owner"]}},"findings":[{"id":"exec.eval","severity":"medium","component":"code","title":"eval / new Function used","evidence":"mapsmith-0.4.0/src/mapsmith/engines/raster.py: … invalid=\"ignore\"): computed = eval( expression, {\"__builtins__…"}],"inputs":{"packages":[{"registryType":"pypi","identifier":"mapsmith","version":"0.4.0","found":true,"weeklyDownloads":29,"license":"AGPL-3.0-or-later","dependencyCount":16,"publishedAt":"2026-08-31T18:15:03.566758Z","repositoryUrl":"https://github.com/mapsmith-ai/MapSmith"}],"repo":{"found":true,"owner":"mapsmith-ai","repo":"MapSmith","archived":false,"pushedAt":"2026-09-15T08:54:34Z","stars":1,"forks":0,"openIssues":5,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/318242121?v=4","ownerCreatedAt":"2026-08-18T12:26:02Z","license":"AGPL-3.0"},"icon":{"url":"https://avatars.githubusercontent.com/u/318242121?v=4&s=128","source":"github"},"presence":{"stars":1,"forks":0,"downloadsWeek":29,"license":"AGPL-3.0","lastPushAt":"2026-09-15T08:54:34.000Z","score":28}}}},"grade_history":[],"reviews":[]}