Skip to content
Back to search
100
MCP live MCP 2025-11-25 streamable-http

Gisgp

io.github.uponex/gisgp

GIS tools for AI agents: 65 free tools + 8 paid (hazard/site-scouting/GeoJSON export)

Uptime
100.0%
1 direct probes · 30d
Response
706ms
last probe
Tools
92
callable
Resources
0
readable
Prompts
0
available
Primary URL
https://gisgp.com/mcp

Tools · 92

convert_coordinates

Convert 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], ...], "fro…

validate_geojson

Check 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…

geojson_to_csv

Convert 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…

count_features

Count 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:…

extract_domains

Extract coded value domains from an ArcGIS FeatureServer layer. Returns JSON: {"layer_name": ..., "domains": {field: {name, field_alias, codes}}}.

check_field_types

Inspect 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/mapp…

check_service_health

Check 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_explore

List 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…

compare_schemas

Compare 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 o…

shapefile_to_geojson

Convert 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: {...}, reproject…

kml_to_geojson

Convert 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/API…

gpx_to_geojson

Convert 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…

geojson_to_gpx

Convert 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 beco…

query_features

Fetch actual feature records (attributes + geometry) from a FeatureServer layer. Free preview capped at 50 records (WHERE filter + chosen fields). Returns JSON: {returned, total, truncated, g…

query_statistics

Server-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. …

geometry_stats

Compute 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_geojson

Change 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". Rep…

simplify_geometry

Reduce 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". Tole…

reduce_precision

Round 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 …

csv_to_geojson

Convert 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…

geojson_to_kml

Convert 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_shapefile

Convert 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 Q…

gpx_to_kml

Convert 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_shapefile

Convert 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}.

wkt_to_geojson

Convert 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 PO…

geojson_to_wkt

Convert 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…

dxf_to_geojson

Convert 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 laye…

geojson_to_dxf

Convert 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 po…

list_dxf_layers

List 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,…

georeference_dxf

Reproject 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 point…

dxf_to_pdf_report

PAID (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…

grade_service

Grade an ArcGIS FeatureServer layer A–F across 5 categories (schema quality, data completeness, performance, maintenance, configuration). Returns JSON: {grade, score, categories:[{key, label,…

audit_service

Full 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/field…

find_layer_issues

Scan 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 JSO…

share_map

Publish 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 liv…

embed_map_snippet

Ready-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 shari…

buffer_geojson

Buffer 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…

dissolve_geojson

Merge 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_geojson

Get 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. Retu…

convex_hull_geojson

Draw 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 locati…

overlay_geojson

Combine 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, th…

spatial_join_geojson

Attach 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. …

nearest_features_geojson

For 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_geometry

Repair 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_diff

Compare two GeoJSON FeatureCollections — added/removed/changed features. Matched by an `id_field` property if given, else by array position (exact structural comparison, not topological equal…

epsg_suggest

Suggest 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_math

Convert 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_geojson

Get 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. …

minimum_rotated_rectangle

Smallest-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 rectangl…

voronoi_geojson

Divide 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"…

full_service_audit

Complete 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_la…

geometry_health_report

Complete one-call GeoJSON health check: validate + auto-repair invalid geometry + stats (area/length/vertices) + bbox envelope, merged — replaces 4 separate calls (validate_geojson + fix_geome…

get_terrain_profile

Get 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 (Cope…

get_climate_history

Daily 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>...}, s…

classify_land_cover

Land 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…

analyze_location

Reverse-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, …

geocode_address

Forward-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 …

offset_coordinates

Move 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, di…

detect_coordinate_order

Detect 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…

guess_crs_from_coordinates

Best-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 natur…

generate_static_map_image

Render 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', '…

assess_grid_exposure

Electric 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 surv…

assess_renewable_site

One-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)…

assess_pipeline_proximity

Natural 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…

assess_protected_area_proximity

US 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 …

discover_open_geodata

Keyword search across ArcGIS Hub Open Data — real public FeatureServer/MapServer datasets from government/organization ArcGIS Online portals worldwide. Returns real service_url values usable …

assess_ev_charging_site

One-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. Retur…

assess_telecom_site

One-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 J…

rank_renewable_sites

Bulk 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 unsuita…

assess_wildfire_risk

Real-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-…

calculate_route

Real 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 …

estimate_cost

FREE — 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 …

check_wallet_balance

FREE — 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 …

assess_property_hazard

PAID (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 activ…

rank_hazard_safe_sites

PAID (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 onl…

assess_portfolio_climate_disclosure

PAID (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 rep…

assess_supply_chain_redundancy

PAID (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 si…

assess_energy_community_credit

PAID (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…

assess_datacenter_site

PAID (300 credits) — data center site-scouting composite: grid proximity (power availability), multi-source hazard (seismic + FEMA + NOAA, required — same contract as assess_property_hazard), …

assess_reforestation_site

PAID (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…

assess_airspace_obstruction_proximity

PAID (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 nea…

assess_site_due_diligence

PAID (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 — al…

export_geojson_to_pdf

PAID (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-se…

export_geojson_to_excel

PAID (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 c…

bundle_migrate_convert

PAID (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 + rep…

bundle_export_fixed

PAID (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. …

bundle_export_multi_format

PAID (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 …

bundle_migration_readiness

PAID (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 + …

bundle_geocode_enrich

PAID (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 r…

bundle_create_export_schedule

PAID 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 …

cancel_export_schedule

FREE — 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_x402

PAID 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 disaste…

How to use

Add to your Claude Desktop / Cursor / Cline MCP config:

{
  "mcpServers": {
    "gisgp": {
      "url": "https://gisgp.com/mcp",
      "transport": "streamable-http"
    }
  }
}