Why GISTools for AI?
Dead Simple
One endpoint. POST your data, get a URL. Works with GeoJSON, coordinates, or WKT.
Instant Sharing
Every map gets a unique URL. Share with users immediately. Embed anywhere.
No Auth Required
Free tier with rate limiting. No API keys needed for basic use.
API Reference
/api/mapCreate a map from any geographic data. Returns a shareable URL.
Request Body
{
"data": <geojson | coordinates | wkt>,
"title": "optional title",
"description": "optional description",
"style": "auto" | "light" | "dark" | "satellite",
"markers": [{"lat": 37.77, "lng": -122.4, "label": "SF"}],
"bounds": "auto" | [[sw_lng, sw_lat], [ne_lng, ne_lat]]
}Data Formats Accepted
GeoJSON (any type)
{"type": "Point", "coordinates": [-122.4, 37.8]}Coordinate Array
[[-122.4, 37.8], [-122.5, 37.9], ...]Single Coordinate
[-122.4194, 37.7749]WKT String
"POINT(-122.4 37.8)"Response
{
"success": true,
"id": "abc123",
"url": "https://gistools.io/m/abc123",
"embed": "<iframe src='https://gistools.io/m/abc123?embed=1' ...></iframe>",
"preview_url": "https://gistools.io/api/map/abc123/preview.png"
}Rate Limits
Free tier: 60 maps/hour per IP. No authentication required. Need more? Request access for higher limits and priority support.
MCP Server for Claude
Use the Model Context Protocol to give Claude direct access to GISTools.
Installation (TypeScript/npm)
npm install -g @gistools/mcp-serverClaude Desktop Config
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"gistools": {
"command": "npx",
"args": ["-y", "@gistools/mcp-server"]
}
}
}Installation (Python)
pip install gistools-mcp httpxClaude Desktop Config
{
"mcpServers": {
"gistools": {
"command": "python",
"args": ["-m", "gistools_mcp"]
}
}
}Available Tools
create_map— Create a map from data, get shareable URLgis_convert— Convert between GIS formats (shapefile, geojson, kml...)gis_analyze— Get metadata about a GIS filegis_formats— List all supported formats
Code Examples
PyPython
import requests
# Create a map from coordinates
response = requests.post(
"https://gistools-production.up.railway.app/api/map",
json={
"data": [-122.4194, 37.7749], # San Francisco
"title": "San Francisco",
"markers": [{"lat": 37.7749, "lng": -122.4194, "label": "SF"}]
}
)
result = response.json()
print(f"Map URL: {result['url']}")
# Output: Map URL: https://gistools.io/m/abc123$cURL
curl -X POST https://gistools-production.up.railway.app/api/map \
-H "Content-Type: application/json" \
-d '{
"data": {"type": "Point", "coordinates": [-122.4194, 37.7749]},
"title": "San Francisco"
}'JSJavaScript
const response = await fetch('https://gistools-production.up.railway.app/api/map', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
data: [[-122.4, 37.8], [-122.5, 37.75], [-122.45, 37.85], [-122.4, 37.8]],
title: 'SF Triangle'
})
});
const { url, embed } = await response.json();
console.log('Share this:', url);Example Prompts for Claude
With the MCP server installed, you can ask Claude things like:
"Create a map showing the 5 largest cities in California"
Claude will look up coordinates and create a map with markers for each city.
"Show me a map of the driving route from LA to San Francisco"
Claude can create a LineString showing the approximate route.
"Convert this shapefile to GeoJSON: [URL]"
Claude will use the convert tool to transform the file format.
"Analyze this GIS file and tell me what's in it"
Claude will return feature counts, geometry types, and attribute names.
"Create a map of the Golden Gate Park boundary"
Claude can create polygon maps from known geographic boundaries.
Start Building
GISTools is the easiest way for AI to make maps. Try it now.