# gisgp MCP server

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

## Links
- Registry page: https://www.getdrio.com/mcp/io-github-uponex-gisgp
- Repository: https://github.com/uponex/gisgp-mcp

## Install
- Endpoint: https://gisgp.com/mcp
- Auth: Not captured

## Setup notes
- Remote endpoint: https://gisgp.com/mcp

## Tools
- 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], ...], "from_epsg": ..., "to_epsg": ...}.
     Endpoint: https://gisgp.com/mcp
- validate_geojson - Validate GeoJSON (RFC 7946 structure, topology, WGS84 coordinate ranges).

    Returns a JSON report: {valid, errors, warnings, stats}.
     Endpoint: https://gisgp.com/mcp
- geojson_to_csv - Convert a GeoJSON FeatureCollection to CSV (feature properties + geometry column). Endpoint: https://gisgp.com/mcp
- 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: {"ok": true, "count": ..., "name": ..., "geometry": ...}.
     Endpoint: https://gisgp.com/mcp
- extract_domains - Extract coded value domains from an ArcGIS FeatureServer layer.

    Returns JSON: {"layer_name": ..., "domains": {field: {name, field_alias, codes}}}.
     Endpoint: https://gisgp.com/mcp
- 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/mapping data.
     Endpoint: https://gisgp.com/mcp
- 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}.
     Endpoint: https://gisgp.com/mcp
- 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, layers:[{id, name, type}]}.
     Endpoint: https://gisgp.com/mcp
- 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 or migration.
     Endpoint: https://gisgp.com/mcp
- 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: {...}, reprojection_notice: str|null}.
     Endpoint: https://gisgp.com/mcp
- kml_to_geojson - Convert KML (2.0–2.2) to a GeoJSON FeatureCollection.

    Returns the GeoJSON FeatureCollection as a JSON string.
     Endpoint: https://gisgp.com/mcp
- gpx_to_geojson - Convert GPX (waypoints, tracks, routes) to a GeoJSON FeatureCollection.

    Returns the GeoJSON FeatureCollection as a JSON string.
     Endpoint: https://gisgp.com/mcp
- 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, geojson, note}. Full unlimited export is a paid operation.
     Endpoint: https://gisgp.com/mcp
- 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. Returns JSON: {field, results:[...]}.
    Cheap way to answer "what's the average/total of field X" without an export.
     Endpoint: https://gisgp.com/mcp
- 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.
     Endpoint: https://gisgp.com/mcp
- reproject_geojson - Reproject an entire GeoJSON between EPSG coordinate systems (all geometry types). Endpoint: https://gisgp.com/mcp
- simplify_geometry - Simplify GeoJSON geometry (Douglas–Peucker, tolerance in degrees). Lower = more detail. Endpoint: https://gisgp.com/mcp
- reduce_precision - Round every coordinate to N decimal places — shrinks GeoJSON payload size. Endpoint: https://gisgp.com/mcp
- csv_to_geojson - Convert CSV with coordinate columns (auto-detected) to a GeoJSON FeatureCollection. Endpoint: https://gisgp.com/mcp
- geojson_to_kml - Convert a GeoJSON FeatureCollection to KML. Endpoint: https://gisgp.com/mcp
- geojson_to_shapefile - Convert a GeoJSON FeatureCollection to a Shapefile ZIP (base64-encoded).

    Returns JSON: {shapefile_zip_base64, warnings}.
     Endpoint: https://gisgp.com/mcp
- gpx_to_kml - Convert GPX (waypoints, tracks, routes) to KML. Endpoint: https://gisgp.com/mcp
- kml_to_shapefile - Convert KML to a Shapefile ZIP (base64-encoded). Returns JSON: {shapefile_zip_base64, warnings}. Endpoint: https://gisgp.com/mcp
- wkt_to_geojson - Convert a WKT geometry string to a GeoJSON geometry (e.g. from PostGIS). Endpoint: https://gisgp.com/mcp
- geojson_to_wkt - Convert a GeoJSON geometry (or a Feature's geometry) to a WKT string. Endpoint: https://gisgp.com/mcp
- 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, score, note}], archetype,
    insight, percentile, share_url} — share_url is a public scorecard page you can
    send to a human. token: only for private layers (never stored in the scorecard).
     Endpoint: https://gisgp.com/mcp
- 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/fields/domains lookups. Returns JSON:
    {name, geometry_type, health, fields, domains, summary}.
     Endpoint: https://gisgp.com/mcp
- 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 JSON: {layer_name,
    issues:[{severity, code, message}], issue_count, sample_size, note}.
     Endpoint: https://gisgp.com/mcp
- 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 live 30 days). Use it to hand off results of a
    GIS workflow visually instead of pasting raw GeoJSON.
     Endpoint: https://gisgp.com/mcp
- 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 sharing a link.
    Returns JSON: {ok, embed_html, url, expires_at}.
     Endpoint: https://gisgp.com/mcp
- 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_m, geojson} where geojson
    is a FeatureCollection of buffer polygons.
     Endpoint: https://gisgp.com/mcp
- 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}.
     Endpoint: https://gisgp.com/mcp
- centroids_geojson - Replace each feature's geometry with its centroid Point (properties kept).

    Returns JSON {ok, geojson} — a FeatureCollection of points.
     Endpoint: https://gisgp.com/mcp
- convex_hull_geojson - Smallest convex polygon containing all input features (a single polygon).

    Returns JSON {ok, geojson}.
     Endpoint: https://gisgp.com/mcp
- 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, then the operation is
    applied. Returns JSON {ok, op, geojson} — empty geojson means no overlap,
    not an error.
     Endpoint: https://gisgp.com/mcp
- 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.
    Returns JSON {ok, predicate, match_count, geojson}.
     Endpoint: https://gisgp.com/mcp
- 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}.
     Endpoint: https://gisgp.com/mcp
- 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}.
     Endpoint: https://gisgp.com/mcp
- 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 equals). Returns JSON {ok, added,
    removed, changed, added_count, removed_count, changed_count, unchanged_count}.
     Endpoint: https://gisgp.com/mcp
- 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}.
     Endpoint: https://gisgp.com/mcp
- 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}.
     Endpoint: https://gisgp.com/mcp
- envelope_geojson - Bounding-box rectangle (envelope) per feature, properties kept.

    Returns JSON {ok, geojson}.
     Endpoint: https://gisgp.com/mcp
- minimum_rotated_rectangle - Smallest-area rotated rectangle containing all input features combined
    (may be tilted, unlike a bbox envelope). Returns JSON {ok, geojson}.
     Endpoint: https://gisgp.com/mcp
- voronoi_geojson - Voronoi diagram of the input points (non-point features use their
    centroid). Needs at least 2 points. Returns JSON {ok, cell_count, geojson}.
     Endpoint: https://gisgp.com/mcp
- 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_layer_issues).

    Returns JSON: {ok, grade, score, categories, archetype, insight,
    percentile, share_url, audit: {name, health, fields, domains, summary},
    issues, issue_count}.
     Endpoint: https://gisgp.com/mcp
- 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_geometry + geometry_stats +
    envelope_geojson).

    Returns JSON: {ok, valid, errors, warnings, fixed_count, stats, envelope,
    geojson} where geojson is the (possibly auto-fixed) input.
     Endpoint: https://gisgp.com/mcp
- get_terrain_profile - Elevation (metres) at a WGS84 point via Open-Meteo (Copernicus DEM
    GLO-90, no key, free). Returns JSON: {ok, lon, lat, elevation_m, source}.
     Endpoint: https://gisgp.com/mcp
- 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>...}, source}.
     Endpoint: https://gisgp.com/mcp
- 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-26: gated separately (mcp_layer1_landcover, Off pending live
    smoke-check) — swapped from the earlier ESA WorldCover WMS source, which
    was confirmed dead (being phased out). This ArcGIS REST identify endpoint
    was live-verified locally (Sofia -> class 8, "Artificial Surface or
    Urban Area") before this swap.
     Endpoint: https://gisgp.com/mcp
- 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, locality, source}.
     Endpoint: https://gisgp.com/mcp
- 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 through
    Esri's own World Geocoding Service instead for more authoritative
    matches — uses YOUR OWN AGOL credentials/quota, not GISGP's (no extra
    charge either way, no GISGP account needed for this option). Returns
    JSON: {ok, lon, lat, display_name, type, importance, source}.
     Endpoint: https://gisgp.com/mcp
- 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, distance_m, bearing_deg, source}.
     Endpoint: https://gisgp.com/mcp
- 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 any value
    exceeds ±90 (only longitude can); honestly reports 'inconclusive'
    otherwise, never a fabricated guess. Pure computation, no external API.
    Returns JSON: {ok, order, confidence, note}.
     Endpoint: https://gisgp.com/mcp
- 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 nature — returns ranked
    candidates with an honest 'not a certain identification' caveat, never
    a single confident answer. Pure computation, no external API.
    Returns JSON: {ok, x_range, y_range, candidates, note}.
     Endpoint: https://gisgp.com/mcp
- 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', 'streets', or
    'satellite'. Reuses the exact rendering path already used inside PDF
    map reports, no new map-rendering logic. Optional agol_token: for a
    single-Point input, renders through Esri's own Static Maps Service
    instead (real ArcGIS basemap tiles) — uses YOUR OWN AGOL
    credentials/quota, not GISGP's (multi-feature/non-point input always
    uses the default renderer regardless of token). Returns JSON: {ok,
    image_data_url, feature_count, width, height, basemap}.
     Endpoint: https://gisgp.com/mcp
- 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 survey).
    No key needed. Returns JSON: {ok, substations: {count, nearest,
    source}, transmission_lines: {count, volt_classes, owners, source}}.
     Endpoint: https://gisgp.com/mcp
- 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). No key
    needed. Returns JSON: {ok, terrain, land_cover, solar_wind, grid_proximity}.
    Not a substitute for a professional feasibility study.
     Endpoint: https://gisgp.com/mcp
- 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 transmission
    pipelines only, NOT local distribution lines. Not a substitute for
    calling 811 before excavation. No key needed.
    Returns JSON: {ok, count, pipeline_types, operators, source, note}.
     Endpoint: https://gisgp.com/mcp
- 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 the point
    falls inside/near (2 mile radius) a federally-tracked protected area:
    name, managing agency, designation type, public access. US-only.
    Returns JSON: {ok, count, areas, source, note}.
     Endpoint: https://gisgp.com/mcp
- 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
    directly with query_features/count_features/rest_explore/compare_schemas.
    Free, no API key. Not a universal open-data search (ArcGIS Hub coverage
    only — see tool note).
    Returns JSON: {ok, query, count, results, source, note}.
     Endpoint: https://gisgp.com/mcp
- 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.
    Returns JSON: {ok, grid_proximity, land_cover, location, physically_unsuitable}.
     Endpoint: https://gisgp.com/mcp
- 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 JSON: {ok, grid_proximity, terrain, land_cover, physically_unsuitable}.
     Endpoint: https://gisgp.com/mcp
- 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 unsuitable land cover
    (urban/water/snow) or no substation nearby are filtered out, not
    silently scored low. No invented composite score. No key needed.
    Returns JSON: {ok, evaluated, excluded_count, excluded, ranked_by, top}.
     Endpoint: https://gisgp.com/mcp
- 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-
    liability factor). No key needed — GISGP holds its own free NASA
    FIRMS key server-side. Two separate honest indicators, no fabricated
    combined risk score. Returns JSON: {ok, active_fires, grid_proximity}.
     Endpoint: https://gisgp.com/mcp
- 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 Route Service
    instead — uses YOUR OWN AGOL credentials/quota, not GISGP's (no extra
    charge either way, no GISGP account needed for this option).
    Returns "no_route" honestly when no driving path exists (e.g. across
    open water). Returns JSON: {ok, routable, distance_km, duration_min, source}.
     Endpoint: https://gisgp.com/mcp
- 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 only
    rank_hazard_safe_sites — pass the number of candidates you intend to
    submit); ignored (treated as 1) for every flat-priced tool. Returns JSON:
    {ok, tool_name, units, credits, eur_estimate} for credits-wallet tools;
    for assess_property_hazard_x402 (paid on-chain via x402, not the credits
    wallet) returns {ok, tool_name, units, payment, price_usd} instead; or
    {ok: false, error} for an unknown/free tool name. Endpoint: https://gisgp.com/mcp
- 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 its own,
    no browser/dashboard needed. Returns JSON: {ok, balance, eur_equivalent}
    or {ok: false, error} if no API key was provided. Endpoint: https://gisgp.com/mcp
- 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 active severe weather
    alerts at the point. Requires Authorization: Bearer <api_key> and a
    sufficient credits balance — top up at
    https://gisgp.com/billing/mcp-credits/topup. Use estimate_cost first to quote
    without charging. Returns JSON: {ok, pga_percent_g, hazard_note, source,
    disaster_history_10y, active_weather_alerts}.

    NOTE 2026-07-28: still not a full multi-hazard property report — no
    flood-plain/wildfire-hazard polygon layer is reachable from GISGP's
    infrastructure (FEMA NFHL/USFS geo-IP/WAF blocks), see hazard_scoring.py
    module docstring and .claude/plans/kind-snacking-puppy.md. No invented
    composite risk score — each source is reported honestly as what it is.
     Endpoint: https://gisgp.com/mcp
- 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 only the top_n ranked by lowest
    real seismic risk (PGA). Not a full multi-hazard ranking — ranked by ONE
    real, single-source metric only (matches this project's no-invented-
    composite-score stance); disaster_history_10y/active_weather_alerts are
    still included per-candidate for context. Use estimate_cost(tool_name=
    "rank_hazard_safe_sites", units=<candidate count>) first to quote.
    Requires Authorization: Bearer <api_key>. Returns JSON: {ok, evaluated,
    excluded_count, excluded, ranked_by, top, note}. Endpoint: https://gisgp.com/mcp
- 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 reporting). Runs
    assess_property_hazard for each [lon, lat] property and returns honest
    aggregate counts (properties with FEMA disaster history, properties with
    active NOAA alerts) alongside each property's own full result — no
    invented portfolio-level risk score. Use estimate_cost(tool_name=
    "assess_portfolio_climate_disclosure", units=<property count>) first to
    quote. Requires Authorization: Bearer <api_key>. Returns JSON: {ok,
    evaluated, scored_count, failed_count, failed, properties_with_disaster_
    history_10y, properties_with_active_weather_alerts, properties, note}. Endpoint: https://gisgp.com/mcp
- 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 site's own
    multi-source hazard profile (seismic + FEMA + NOAA) side by side, plus
    any FEMA disaster incident types they share in the last 10 years. No
    invented "redundancy score" — the caller judges independence from the
    real data. CAVEAT: FEMA disaster history is STATE-level, not point-level
    — two sites in the same state usually share most incident types
    regardless of true distance, so distance_km is the more reliable
    independence signal for same-state comparisons. Requires Authorization:
    Bearer <api_key> and sufficient credits balance. Returns JSON: {ok,
    distance_km, site_a, site_b, shared_fema_incident_types_10y, note}. Endpoint: https://gisgp.com/mcp
- 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 (coal-mine-
    closure/coal-plant-retirement adjoining tracts, and MSA/non-MSA fossil-
    fuel-employment + above-average-unemployment areas) — a point qualifies
    if either matches. Reports qualification only, not a project-specific
    dollar estimate (the +10 percentage-point ITC/PTC bonus is the one
    publicly documented figure). Requires Authorization: Bearer <api_key>
    and sufficient credits balance. Returns JSON: {ok, lon, lat, qualifies_
    for_bonus_credit, coal_closure_pathway, msa_fossil_employment_pathway,
    bonus_note, source}. Endpoint: https://gisgp.com/mcp
- 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), land cover,
    and a year of temperature history (cooling-load proxy). No invented
    overall suitability score — each source reported honestly. Requires
    Authorization: Bearer <api_key> and sufficient credits balance. Returns
    JSON: {ok, hazard, grid_proximity, land_cover, cooling_climate, note}. Endpoint: https://gisgp.com/mcp
- 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-viability
    proxy). All-free-primitive composite, priced for the bulk-screening
    convenience (carbon-offset/land-screening use case), no invented
    "sequestration score". Requires Authorization: Bearer <api_key> and
    sufficient credits balance. Returns JSON: {ok, terrain, land_cover,
    physically_unsuitable, precipitation, note}. Endpoint: https://gisgp.com/mcp
- 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 — all in one call.
    No invented overall "site score" across sources. Requires Authorization:
    Bearer <api_key> and sufficient credits balance. Use estimate_cost first
    to quote. Returns JSON: {ok, hazard, grid_exposure, land_cover, locality, note}. Endpoint: https://gisgp.com/mcp
- 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-service-tied, quota-
    gated there) — this is for GeoJSON an agent already has in hand. Requires
    Authorization: Bearer <api_key> and sufficient credits balance. Returns
    JSON: {ok, pdf_base64, feature_count, truncated, size_bytes}. Endpoint: https://gisgp.com/mcp
- 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 column. Separate from
    the web app's own Excel export (AGOL-service-tied, quota-gated there).
    Requires Authorization: Bearer <api_key> and sufficient credits balance.
    Returns JSON: {ok, xlsx_base64, feature_count}. Endpoint: https://gisgp.com/mcp
- 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 disaster history + NOAA active alerts), same underlying data as assess_property_hazard. Returns JSON: {ok, pga_percent_g, hazard_note, source, disaster_history_10y, active_weather_alerts}. Endpoint: https://gisgp.com/mcp

## Resources
Not captured

## Prompts
Not captured

## Metadata
- Owner: io.github.uponex
- Version: 1.3.0
- Runtime: Streamable Http
- Transports: HTTP
- License: Not captured
- Language: Not captured
- Stars: Not captured
- Updated: Jul 29, 2026
- Source: https://registry.modelcontextprotocol.io
