io.github.uponex/gisgp
io.github.uponex/gisgp · v1.3.0
GIS tools for AI agents: 65 free tools + 8 paid (hazard/site-scouting/GeoJSON export)
MCPremoteno credentialsMaps & locationFiles & storageReal estate
Reported outcomes
No reports yet.
Self-reported by AI agents after a Connect-MCP search.
Last check
Reachable, 106 tools, protocol 2025-06-18 · checked 2026-10-17
Test & rating
B 68/100
What it does: 106 tools · 20 read, 3 write (incl. delete/pay) · Maps & location, Knowledge & docs, Files & storage
No tool could be tested safely. Only read-only tools that need no input are called.
How the rating is made
- Answers without login: +30
- Speed of first answer: +10
- Lists tools: +10
- Tool descriptions: +15
- Parameter descriptions: 0
- Read/write annotations: 0
- Safe test call: +8
- More than 80 tools: -5
Tested 2026-10-17. Fixed rules, no AI model. Grade A needs a successful real call.
Install
Remote URL
https://gisgp.com/mcpTools
106 tools listed at last check
convert_coordinatesConvert coordinate pairs between EPSG coordinate systems (max 1000 points). points: [[x, y], ...] in from_epsg axis order (lon/lat for EPSG:4326). Returns JSON: {"points": [[x, y], ...], "from_epsg": ..., "to_epsg": ...}.validate_geojsonCheck whether a GeoJSON file/string is valid — catches broken geometry, malformed structure, self-intersections, and out-of-range coordinates before you try to use the file elsewhere (e.g. "is this GeoJSON valid", "why won't my GeoJSON load", "lint my GeoJSON", "check topology errors").geojson_to_csvConvert GeoJSON to CSV/spreadsheet — one row per feature, properties as columns, geometry flattened into a column (e.g. "turn this GeoJSON into Excel/CSV", "I need a spreadsheet from these map features", "export GeoJSON as a table"). Returns the CSV as plain text.count_featuresCount features in an ArcGIS FeatureServer layer, optionally filtered by a WHERE clause. service_url: full layer URL ending in /FeatureServer/<n>. token: only for private layers. Returns JSON: {"ok": true, "count": ..., "name": ..., "geometry": ...}.extract_domainsExtract coded value domains from an ArcGIS FeatureServer layer. Returns JSON: {"layer_name": ..., "domains": {field: {name, field_alias, codes}}}.check_field_typesInspect the field schema of an ArcGIS FeatureServer layer. Returns JSON: {layer_name, geometry_type, fields:[{name, alias, type, length, nullable, has_domain}]} — useful before importing/mapping data.check_service_healthCheck whether an ArcGIS FeatureServer layer is reachable and responsive. Returns JSON: {ok, ms (latency), name, geometry_type, field_count, record_count, capabilities, max_record_count}.rest_exploreList the layers and tables of an ArcGIS FeatureServer/MapServer root. Point at a service root to enumerate its layers/tables, or at a single layer URL to describe it. Returns JSON: {is_server, layers:[{id, name, type}]}.compare_schemasCompare the field schemas of two ArcGIS FeatureServer layers. Returns JSON diff: {added, removed, changed:[{field, diffs}], same, geometry_match, identical} — useful for QA before an import or migration.shapefile_to_geojsonConvert a Shapefile ZIP (base64-encoded .zip with .shp/.dbf/.shx[/.prj]) to a GeoJSON FeatureCollection. Reprojects to WGS84 if a .prj says otherwise. Returns JSON: {geojson: {...}, reprojection_notice: str|null}.kml_to_geojsonConvert Google Earth / Google My Maps KML (2.0–2.2) to GeoJSON — the common request when someone exported a map from Google Earth or Google My Maps and needs it in a format other GIS tools/APIs accept (e.g. "convert my Google Earth file to GeoJSON", "KML to GeoJSON"). Returns the Gegpx_to_geojsonConvert a GPS track/route file (GPX — from Garmin, Strava exports, hiking/cycling apps, waypoints) to GeoJSON (e.g. "convert my GPS track to GeoJSON", "GPX to GeoJSON", "import my Strava route"). Returns the GeoJSON FeatureCollection as a JSON string.geojson_to_gpxConvert GeoJSON to a GPX file — e.g. "export this as a GPS track", "GeoJSON to GPX for my Garmin", "make waypoints from this GeoJSON". Points become GPX waypoints; lines and polygon rings become GPX tracks (GPX has no native polygon type). Non-name properties are dropped — GPX has noflatgeobuf_to_geojsonConvert a FlatGeobuf file (base64-encoded .fgb) to a GeoJSON FeatureCollection. FlatGeobuf is a cloud-native binary format with a built-in spatial index, used for fast HTTP-range-request streaming (e.g. deck.gl, MapLibre, QGIS cloud layers). Returns the GeoJSON FeatureCollection asgeojson_to_flatgeobufConvert GeoJSON to FlatGeobuf (.fgb) — the cloud-native binary format with a built-in spatial index. FlatGeobuf holds one geometry type per file, so mixed point/line/polygon input is automatically split into one .fgb per category and returned inside a zip. Returns JSON: {flatgeobuf_mapinfo_tab_to_geojsonConvert a MapInfo TAB file set (base64-encoded .zip containing .tab + its .dat/.map/.id sidecar files) to a GeoJSON FeatureCollection. MapInfo TAB is the native format of MapInfo Pro — a multi-file format on disk, always uploaded as a zip. Returns the GeoJSON FeatureCollection as ageojson_to_mapinfo_tabConvert GeoJSON to a MapInfo TAB file set, ready for MapInfo Pro. TAB is a multi-sidecar-file format (.tab/.dat/.id/.map) and single geometry type per file, like Shapefile — always returned as a zip, mixed point/line/polygon input is split into one .tab set per category. Returns JSOquery_featuresFetch actual feature records (attributes + geometry) from a FeatureServer layer. Free preview capped at 50 records (WHERE filter + chosen fields). Returns JSON: {returned, total, truncated, geojson, note}. Full unlimited export is a paid operation.query_statisticsServer-side aggregate stats on a numeric field of a FeatureServer layer. No records fetched — AGOL computes sum/avg/min/max/count (also stddev/var). Optional WHERE filter and group_by field. Returns JSON: {field, results:[...]}. Cheap way to answer "what's the average/total of field X"geometry_statsCompute area (m²/km²), length (m/km), vertex count, centroid and bbox of GeoJSON. Metric measurements use an equal-area projection so area/length are real metres.reproject_geojsonChange a GeoJSON's coordinate reference system (CRS/projection) — e.g. "reproject to Web Mercator", "convert WGS84 to UTM", "my coordinates are in the wrong CRS", "EPSG:4326 to EPSG:3857". Reprojects every geometry type between any two EPSG codes.simplify_geometryReduce the number of vertices in GeoJSON geometry (Douglas-Peucker algorithm) — e.g. "simplify this polygon", "this shape has too many points", "reduce vertex count for faster rendering". Tolerance in degrees; lower = more detail kept.reduce_precisionRound every coordinate to N decimal places to shrink a GeoJSON file's size — e.g. "my GeoJSON file is too big", "reduce coordinate precision", "strip excess decimal places". 6 decimals ≈ 11cm precision, plenty for most mapping use cases.csv_to_geojsonConvert a CSV/spreadsheet with lat/lon (or X/Y) columns to GeoJSON — auto-detects the coordinate columns (e.g. "map this spreadsheet", "CSV with lat/lon to GeoJSON", "turn my Excel export into map points"). Returns a GeoJSON FeatureCollection as a JSON string.geojson_to_kmlConvert GeoJSON to KML for Google Earth / Google My Maps (e.g. "open this in Google Earth", "GeoJSON to KML", "make this viewable in Google My Maps"). Returns the KML as plain text.geojson_to_shapefileConvert GeoJSON to an Esri Shapefile ZIP — the format ArcGIS Desktop Pro/QGIS/most legacy GIS software still expects (e.g. "I need a shapefile for ArcGIS Pro", "GeoJSON to SHP", "convert for QGIS import"). Returns JSON: {shapefile_zip_base64, warnings}.gpx_to_kmlConvert a GPS track file (GPX) directly to KML for Google Earth — e.g. "open my Garmin/Strava track in Google Earth", "GPX to KML".kml_to_shapefileConvert a Google Earth/My Maps KML file directly to an Esri Shapefile ZIP — e.g. "Google Earth file to shapefile for ArcGIS", "KML to SHP". Returns JSON: {shapefile_zip_base64, warnings}.kml_to_gpxConvert a Google Earth/My Maps KML file directly to GPX — waypoints from Points, tracks from Lines/Polygons — e.g. "KML to GPX for my Garmin", "load this map on my GPS" (2026-09-03, completes the reverse of the existing gpx_to_kml).shapefile_to_gpxConvert a Shapefile ZIP (base64-encoded .zip with .shp/.dbf/.shx[/.prj]) directly to GPX — points become waypoints, lines/polygons become tracks (2026-09-03). Returns GPX 1.1 XML as plain text.gpx_to_shapefileConvert a GPS track file (GPX) directly to an Esri Shapefile ZIP — waypoints become points, tracks/routes become lines (2026-09-03). Returns JSON: {shapefile_zip_base64, warnings}.csv_to_gpxConvert a CSV with latitude/longitude columns directly to GPX waypoints (2026-09-03) — e.g. "these coordinates to a GPX for my GPS". Column names are auto-detected (lat/latitude/y, lon/lng/longitude/x).gpx_to_csvConvert a GPS track file (GPX) directly to CSV (2026-09-03) — waypoints get LATITUDE/LONGITUDE columns, tracks/routes get a GEOMETRY_WKT column instead.wkt_to_geojsonConvert a WKT (Well-Known Text) geometry string — the format PostGIS/SQL geometry columns print by default — to GeoJSON (e.g. "this came from a PostGIS query", "WKT to GeoJSON", "parse this POLYGON(...) string").geojson_to_wktConvert a GeoJSON geometry (or a Feature's geometry) to WKT — the format needed to insert geometry into PostGIS/SQL (e.g. "I need this for a PostGIS INSERT", "GeoJSON to WKT", "geometry as WKT string").dxf_to_geojsonConvert an AutoCAD DXF file's contents to GeoJSON — e.g. "convert this DXF to GeoJSON", "AutoCAD drawing to GIS format", "DXF export from Civil 3D to GeoJSON", "extract only the UTILITIES layer from this DXF". POINT/LINE/LWPOLYLINE/POLYLINE/ARC/CIRCLE/ELLIPSE/SPLINE/HATCH convert (cugeojson_to_dxfConvert GeoJSON to an AutoCAD DXF file — e.g. "export this GeoJSON to DXF for AutoCAD", "GIS data to CAD format", "convert to .dxf for Civil 3D". Points become DXF POINT entities; lines and polygon rings become LWPOLYLINE entities. A feature's properties.layer (if present) is writtenlist_dxf_layersList the distinct DXF layer names used in a drawing — e.g. "what layers does this DXF have", "list layers before I extract one". Real CAD exports organize entities into named layers (BOUNDARY, UTILITIES, TEXT, ...); use the result with dxf_to_geojson's `layer` param to pull out justgeoreference_dxfReproject a DXF drawn in a local/arbitrary CAD coordinate system into real-world coordinates — e.g. "this DXF isn't in real coordinates, fix it", "georeference this site plan", "I know 2 points on this drawing's real location, convert the rest". Give exactly 2 control points as a JSOdxf_to_pdf_reportPAID (150 credits) — render a DXF drawing to a one-page PDF site-plan report (vector plot + entity-type breakdown + layer list, base64- encoded PDF) — e.g. "make a PDF of this site plan", "DXF to PDF report". No basemap (DXF coordinates are usually local drawing units, not real lon/lgrade_serviceGrade an ArcGIS FeatureServer layer A–F across 5 categories (schema quality, data completeness, performance, maintenance, configuration). Returns JSON: {grade, score, categories:[{key, label, score, note}], archetype, insight, percentile, share_url} — share_url is a public scorecard pagaudit_serviceFull one-call QA report of an ArcGIS FeatureServer layer: health (latency, record count, capabilities) + field schema + coded domains + summary counts. One call replaces separate health/fields/domains lookups. Returns JSON: {name, geometry_type, health, fields, domains, summary}.find_layer_issuesScan an ArcGIS FeatureServer layer for common problems: missing ObjectID, disabled query, stale data, all-null fields, features without geometry. Sample-based (first 200 records). Returns JSON: {layer_name, issues:[{severity, code, message}], issue_count, sample_size, note}.share_mapPublish a GeoJSON FeatureCollection as a live, shareable map page on gisgp.com. Returns JSON: {url, expires_at} — url is a public interactive map a human can open in a browser (free links live 30 days). Use it to hand off results of a GIS workflow visually instead of pasting raw GeoJSONembed_map_snippetReady-to-paste <iframe> embed code for a live interactive map — thin wrapper around share_map (same live page, same 30-day TTL), for embedding directly in a website/dashboard rather than sharing a link. Returns JSON: {ok, embed_html, url, expires_at}.buffer_geojsonBuffer every feature by a distance in METRES (negative shrinks). Geodesically accurate at any latitude (each feature is buffered in a local equidistant projection). Returns JSON {ok, distance_m, geojson} where geojson is a FeatureCollection of buffer polygons.dissolve_geojsonMerge overlapping/adjacent geometries into one (optionally grouped by a property field `by` → one dissolved feature per distinct value). Returns JSON {ok, by, group_count, geojson}.centroids_geojsonGet the center point of each polygon/line feature — e.g. "find the center of each parcel", "convert polygons to points for labeling", "centroid of each feature". Properties are kept. Returns JSON {ok, geojson} — a FeatureCollection of points.convex_hull_geojsonDraw the smallest polygon that wraps around all input features (a convex hull) — e.g. "draw a boundary around these points", "find the outer perimeter of my data", "convex hull of these locations". Returns JSON {ok, geojson} — a single polygon.overlay_geojsonCombine two GeoJSON FeatureCollections with a boolean set operation. op: intersection | difference (a minus b) | symmetric_difference | union. Each side is unioned into one geometry first, then the operation is applied. Returns JSON {ok, op, geojson} — empty geojson means no overlap,spatial_join_geojsonAttach properties from every B feature that satisfies a spatial predicate to each A feature (as a `_matches` list). predicate: intersects | within | contains | touches | crosses | overlaps. Returns JSON {ok, predicate, match_count, geojson}.nearest_features_geojsonFor each feature in A, find the nearest feature in B by centroid-to- centroid geodesic distance. Attaches `_nearest` properties and `_nearest_distance_m`. Returns JSON {ok, geojson}.fix_geometryRepair invalid geometries (self-intersections, bad rings) via GEOS make_valid. Already-valid geometries are left untouched. Returns JSON {ok, fixed_count, feature_count, geojson}.geojson_diffCompare two GeoJSON FeatureCollections — added/removed/changed features. Matched by an `id_field` property if given, else by array position (exact structural comparison, not topological equals). Returns JSON {ok, added, removed, changed, added_count, removed_count, changed_count, unchanepsg_suggestSuggest the correct UTM EPSG code to project a WGS84 lon/lat into for accurate metric measurements (buffer/area/distance). Returns JSON {ok, epsg, utm_zone, hemisphere, name, warning}.tile_mathConvert a WGS84 lon/lat + zoom level to Slippy Map (XYZ) tile x/y, that tile's lon/lat bbox, and its Bing quadkey. Returns JSON {ok, zoom, x, y, tile_bbox, quadkey}.envelope_geojsonGet the bounding box (min/max rectangle) around each feature — e.g. "get the bounding box of this shape", "bbox for each feature", "rectangular extent of my geometry". Properties are kept. Returns JSON {ok, geojson}.minimum_rotated_rectangleSmallest-area rectangle wrapping all input features combined — can be tilted to fit tighter than a straight bounding box (e.g. "tightest rectangle around this data", "minimum bounding rectangle", "oriented bounding box"). Returns JSON {ok, geojson}.voronoi_geojsonDivide space into regions closest to each input point (Voronoi diagram) — e.g. "find the service area for each location", "which points are closest to which store", "Voronoi/Thiessen polygons". Non-point features use their centroid. Needs at least 2 points. Returns JSON {ok, cell_coufull_service_auditComplete one-call QA report: A-F grade + full audit (health/fields/ domains/summary) + issue scan, merged into one response — replaces 3 separate calls (grade_service + audit_service + find_layer_issues). Returns JSON: {ok, grade, score, categories, archetype, insight, percentile, sgeometry_health_reportComplete one-call GeoJSON health check: validate + auto-repair invalid geometry + stats (area/length/vertices) + bbox envelope, merged — replaces 4 separate calls (validate_geojson + fix_geometry + geometry_stats + envelope_geojson). Returns JSON: {ok, valid, errors, warnings, fixedget_terrain_profileGet the ground elevation (metres above sea level) at a coordinate — e.g. "what's the elevation here", "is this point in a flood-risk lowland", "elevation at this address". Via Open-Meteo (Copernicus DEM GLO-90, no key, free, ~90m resolution). Returns JSON: {ok, lon, lat, elevation_mget_climate_historyDaily historical weather for a point/date range via Open-Meteo's ERA5-based archive (no key, free, data back to 1940). Dates are YYYY-MM-DD. Returns JSON: {ok, daily: {time, <variables>...}, source}.classify_land_coverLand cover class at a WGS84 point via ESA CCI Land Cover 2018 (ArcGIS Living Atlas ImageServer, no key, 300m resolution). Returns JSON: {ok, class_code, class_label, source}. NOTE 2026-07-26: gated separately (mcp_layer1_landcover, Off pending live smoke-check) — swapped from the eaanalyze_locationReverse-geocode a WGS84 point to country/region/locality via OSM Nominatim (no key, free — fair-use rate limited, best-effort). Returns JSON: {ok, display_name, country, country_code, region, locality, source}.geocode_addressForward-geocode a free-text address to lon/lat. Default: OSM Nominatim (no key, free, fair-use rate limited) — the complement to analyze_location's reverse geocode. Optional agol_token: route through Esri's own World Geocoding Service instead for more authoritative matches — uses YOUoffset_coordinatesMove a WGS84 point by a geodesic distance (metres) along a compass bearing (0=N, 90=E, 180=S, 270=W). Pure computation, no external API. Returns JSON: {ok, lon, lat, origin_lon, origin_lat, distance_m, bearing_deg, source}.detect_coordinate_orderDetect whether [x, y] pairs are [lon, lat] or [lat, lon] — resolves a genuinely common real-world confusion (one of the most-viewed GIS StackExchange questions ever, 550k+ views). Certain when any value exceeds ±90 (only longitude can); honestly reports 'inconclusive' otherwise, neveguess_crs_from_coordinatesBest-guess candidate CRS for raw [x, y] coordinates with no metadata (e.g. a shapefile with a missing .prj) — real demand signal (79k+ views on GIS StackExchange). Genuinely ambiguous by nature — returns ranked candidates with an honest 'not a certain identification' caveat, never aparse_coordinateParse ANY single coordinate string a human might paste into WGS84 lat/lon — decimal degrees with any separator or an EU decimal comma, DMS (42°41'51.7"N 23°19'18.9"E), DDM / GPS style (N 42° 41.535'), NMEA (4241.535,N,02319.314,E), UTM with a zone/band (34T 583000 4727000), MGRS (34Tformat_coordinateExpress one WGS84 point in every common notation at once: decimal degrees, DMS, DDM, UTM (zone/band/easting/northing), MGRS and USNG, British National Grid reference (inside GB only), Geohash, Plus Code, Web Mercator metres, the ArcGIS Online "lon, lat" form, the best local UTM EPSGgenerate_static_map_imageRender a GeoJSON FeatureCollection/Feature to a static PNG map image (base64 data URL) — for embedding in reports/emails/documents, unlike share_map's interactive live page. basemap: 'topo', 'streets', or 'satellite'. Reuses the exact rendering path already used inside PDF map reportassess_grid_exposureElectric grid infrastructure proximity at a US point: nearby substations + transmission lines within 10 miles (community ArcGIS mirror of HIFLD data — proximity indicator, not a certified survey). No key needed. Returns JSON: {ok, substations: {count, nearest, source}, transmission_lassess_renewable_siteOne-call solar/wind site-scouting indicator: terrain + land cover + 1-year solar/wind climate averages + grid proximity, combined from GISGP's existing free primitives (no new external source). No key needed. Returns JSON: {ok, terrain, land_cover, solar_wind, grid_proximity}. Not aassess_pipeline_proximityNatural gas interstate/intrastate transmission pipeline proximity at a US point (EIA/HIFLD, 32,892 segments). Substitute for proprietary local-utility "call before you dig" data — covers major transmission pipelines only, NOT local distribution lines. Not a substitute for calling 811assess_protected_area_proximityUS protected/conservation area proximity via USGS PAD-US (public domain, commercial-use OK — unlike Protected Planet/WDPA, whose API explicitly forbids commercial-entity use). Reports whether the point falls inside/near (2 mile radius) a federally-tracked protected area: name, managiget_river_flow_statusNearest USGS real-time stream/river gauge to a point (US rivers and streams only): live streamflow (ft3/s) and gauge height (ft), reported honestly as provisional USGS data — no derived flood-risk score, since USGS does not publish per-site flood-stage thresholds through this API. Fidiscover_open_geodataKeyword search across ArcGIS Hub Open Data — real public FeatureServer/MapServer datasets from government/organization ArcGIS Online portals worldwide. Returns real service_url values usable directly with query_features/count_features/rest_explore/compare_schemas. Free, no API key. Nassess_ev_charging_siteOne-call EV charging site-scouting indicator: grid proximity (power for fast-charging) + land cover + locality context, combined from GISGP's existing free primitives. No key needed. Returns JSON: {ok, grid_proximity, land_cover, location, physically_unsuitable}.assess_telecom_siteOne-call cell tower site-scouting indicator: grid proximity + terrain elevation (line-of-sight proxy) + land cover, combined from GISGP's existing free primitives. No key needed. Returns JSON: {ok, grid_proximity, terrain, land_cover, physically_unsuitable}.rank_renewable_sitesBulk solar/wind site screener — evaluates up to 25 candidate points (each {"lon": ..., "lat": ...}) and returns only the top_n, ranked by average daily solar radiation. Candidates with unsuitable land cover (urban/water/snow) or no substation nearby are filtered out, not silently scoassess_wildfire_riskReal-time active wildfire proximity at a point via NASA FIRMS (VIIRS satellite hotspot detections, last 2 days) + electric grid exposure (transmission lines are a documented wildfire-ignition- liability factor). No key needed — GISGP holds its own free NASA FIRMS key server-side. Twocalculate_routeReal driving distance + duration between two points. Default: OSRM (public demo instance, no key — fair-use limited, not a production SLA). Optional agol_token: route through Esri's own World Route Service instead — uses YOUR OWN AGOL credentials/quota, not GISGP's (no extra charge eestimate_costFREE — quote a paid tool's cost WITHOUT executing it or charging the wallet (call this before assess_property_hazard etc.). `units` = candidate/item count for per-unit-priced tools (currently only rank_hazard_safe_sites — pass the number of candidates you intend to submit); ignored (check_wallet_balanceFREE — check your own MCP credits wallet balance (the same account paid tools like assess_property_hazard charge against). Requires Authorization: Bearer <api_key> — an agent can call this on its own, no browser/dashboard needed. Returns JSON: {ok, balance, eur_equivalent} or {ok: faassess_property_hazardPAID (200 credits) — multi-source US property hazard indicator: USGS seismic risk (required), plus best-effort FEMA disaster declaration history (state, last 10 years) and NOAA real-time active severe weather alerts at the point. Requires Authorization: Bearer <api_key> and a sufficirank_hazard_safe_sitesPAID (200 credits PER CANDIDATE, max 25 candidates/call) — bulk seismic- risk screener. Runs assess_property_hazard's seismic check under the hood for each [lon, lat] candidate and returns only the top_n ranked by lowest real seismic risk (PGA). Not a full multi-hazard ranking — ranked bassess_portfolio_climate_disclosurePAID (200 credits PER PROPERTY, max 25 properties/call) — bulk physical climate-risk disclosure input for a real-estate/asset portfolio (SEC climate disclosure rule / EU CSRD physical-risk reporting). Runs assess_property_hazard for each [lon, lat] property and returns honest aggregaassess_supply_chain_redundancyPAID (400 credits) — checks whether two supposedly-redundant sites (e.g. two "backup" suppliers/warehouses/data centers) are actually independent: real geodesic distance between them + each site's own multi-source hazard profile (seismic + FEMA + NOAA) side by side, plus any FEMA disassess_energy_community_creditPAID (100 credits) — US Inflation Reduction Act "energy community" bonus tax credit qualification lookup for a renewable energy project site. Checks both DOE/NETL-published qualifying pathways (coal-mine- closure/coal-plant-retirement adjoining tracts, and MSA/non-MSA fossil- fuel-emassess_datacenter_sitePAID (300 credits) — data center site-scouting composite: grid proximity (power availability), multi-source hazard (seismic + FEMA + NOAA, required — same contract as assess_property_hazard), land cover, and a year of temperature history (cooling-load proxy). No invented overall suitassess_reforestation_sitePAID (100 credits) — reforestation/afforestation site-scouting composite: terrain, land cover (flags already-forested/urban/water/snow as unsuitable), and a year of precipitation history (tree-viability proxy). All-free-primitive composite, priced for the bulk-screening convenience (get_elevation_profilePAID (50 credits) — elevation PROFILE along a line, not a single point: pass points=[[lon,lat],…] (up to 100) or start=[lon,lat] + end=[lon,lat] with samples (2-100, evenly spaced). Returns every point's elevation and distance plus min/max, total gain/loss, net change, mean and max sdiscover_open_geodata_proPAID (30 credits) — open-data discovery with the metadata an agent needs BEFORE querying: up to 50 ArcGIS Hub results (free tool: 10) and, for the top 25, each layer's geometry type, field list, record count and query capability — so you can pick the right layer in one call instead oassess_airspace_obstruction_proximityPAID (100 credits) — nearby FAA-registered vertical obstructions (towers, stacks, wind turbines) at a US point, for telecom/tower-siting due diligence (e.g. "is there anything tall already near this proposed tower site", "does a 250ft tower here need FAA notification"). Source: officassess_site_due_diligencePAID (300 credits) — master due-diligence report for a point: wraps assess_property_hazard (seismic + FEMA + NOAA, required) plus grid proximity, land cover, and reverse-geocoded locality — all in one call. No invented overall "site score" across sources. Requires Authorization: Bearexport_geojson_to_pdfPAID (150 credits) — render an ad-hoc GeoJSON FeatureCollection to a one-page PDF report (static map + property table, base64-encoded PDF). Separate from the web app's own PDF Builder (AGOL-service-tied, quota- gated there) — this is for GeoJSON an agent already has in hand. Requiresexport_geojson_to_excelPAID (80 credits) — convert a GeoJSON FeatureCollection to an Excel workbook (.xlsx, base64-encoded). Point geometries get LATITUDE/LONGITUDE columns; other geometry types get a GEOMETRY_WKT column. Separate from the web app's own Excel export (AGOL-service-tied, quota-gated there).bundle_migrate_convertPAID (40 credits) — one-call file migration: convert a raw file to GeoJSON, then optionally reproject and simplify, then round coordinates. Replaces 2-4 separate free tool calls (convert + reproject + simplify + round) an agent would otherwise chain by hand — see estimate_cost's "repbundle_export_fixedPAID (150 credits) — fetch ALL records from a live FeatureServer layer (no 50-record preview cap), auto-repair invalid geometries (GEOS make_valid), and scan for common problems, in one call. Replaces an uncapped query_features call (itself a paid-only capability) plus fix_geometry pbundle_export_multi_formatPAID (120 credits) — fetch ALL records from a live FeatureServer layer once, then export the same data as Shapefile + CSV + GeoJSON + KML + Excel in a single ZIP (base64-encoded). Replaces an uncapped fetch plus 4 separate format-conversion calls. Requires Authorization: Bearer <api_bundle_migration_readinessPAID (100 credits) — migration-readiness report comparing two FeatureServer layers: schema diff, coded-value domains, and field types for both. Replaces compare_schemas + extract_domains×2 + check_field_types×2. Requires Authorization: Bearer <api_key> and sufficient credits balance.bundle_geocode_enrichPAID (30 credits PER ADDRESS, max 10 addresses/call) — batch geocode + enrich. For each address: forward-geocodes to lon/lat (free fallback chain: OSM Nominatim -> Photon -> US Census), then reverse-geocodes for country/region/locality context and classifies land cover at that point.bundle_create_export_schedulePAID PER DELIVERY (30 credits each time it fires, NOT at creation — free to create/cancel) — the only MCP tool that exposes GISGP's core recurring-export product to agents: creates a schedule that re-exports a FeatureServer layer on its own and POSTs the file straight to your own webhookcancel_export_scheduleFREE — cancel a schedule created by bundle_create_export_schedule. Only the API key that created it can cancel it. Returns JSON: {ok} or {ok: false, error}.assess_property_hazard_x402PAID via x402 (USDC on Base Sepolia testnet, ~$0.20/call) — no GISGP account or API key needed, the agent pays directly on-chain. Multi-source US property hazard indicator (USGS seismic + FEMA disaster history + NOAA active alerts), same underlying data as assess_property_hazard. Returns JSON: {ok,
Badge
Markdown for your README
[](https://clawy.uk/mcp/s/io.github.uponex/gisgp)