Geocoding, static maps and privacy-safe area maps from OpenStreetMap data. Hard caps, no overage.
Maintained bypinsharing.com(verified)Also a maintainer?
Call this server's tools from your browser. Nothing to install.
Bearer followed by your PinSharing API key (ps_…). Free keys: https://pinsharing.com/dashboard
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Look up an address, place name or point of interest and get coordinates (lat, lon), a readable label and address parts, from OpenStreetMap data. Use it before static_map or privacy_area_map when you only have an address. Counts 1 address lookup against the account's monthly cap. Results may be stored: up to 30 days on the Free plan, indefinitely on paid plans. Show "© OpenStreetMap contributors" with results.
Address, place or point of interest, e.g. "233 S Wacker Dr, Chicago" or "Oswego, Illinois"
[min_lon, min_lat, max_lon, max_lat]
Preferred language for names, e.g. en, de, fr
Prefer matches near this point
Maximum number of matches
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http maps https://api.pinsharing.com/v1/mcp \ --header 'Authorization: Bearer YOUR_TOKEN'
Headers
Authorization (required): Bearer followed by your PinSharing API key (ps_…). Free keys: https://pinsharing.com/dashboardTool list last changed Nov 5, 2026.
Look up an address, place name or point of interest and get coordinates (lat, lon), a readable label and address parts, from OpenStreetMap data. Use it before static_map or privacy_area_map when you only have an address. Counts 1 address lookup against the account's monthly cap. Results may be stored: up to 30 days on the Free plan, indefinitely on paid plans. Show "© OpenStreetMap contributors" with results.
| Argument | Type | Description |
|---|---|---|
| bbox | array | [min_lon, min_lat, max_lon, max_lat] |
| lang | string | Preferred language for names, e.g. en, de, fr |
| near | object | Prefer matches near this point |
| limit | integer | Maximum number of matches |
| query* | string | Address, place or point of interest, e.g. "233 S Wacker Dr, Chicago" or "Oswego, Illinois" |
{
"type": "object",
"required": [
"query"
],
"properties": {
"bbox": {
"type": "array",
"items": {
"type": "number"
},
"maxItems": 4,
"minItems": 4,
"description": "[min_lon, min_lat, max_lon, max_lat]"
},
"lang": {
"type": "string",
"maxLength": 8,
"minLength": 2,
"description": "Preferred language for names, e.g. en, de, fr"
},
"near": {
"type": "object",
"required": [
"lat",
"lon"
],
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in decimal degrees (WGS84)"
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in decimal degrees (WGS84)"
}
},
"description": "Prefer matches near this point",
"additionalProperties": false
},
"limit": {
"type": "integer",
"default": 5,
"maximum": 10,
"minimum": 1,
"description": "Maximum number of matches"
},
"query": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "Address, place or point of interest, e.g. \"233 S Wacker Dr, Chicago\" or \"Oswego, Illinois\""
}
},
"additionalProperties": false
}Get ready-to-paste HTML/JavaScript for an interactive, zoomable PinSharing map in a web page (MapLibre GL JS vector map, Leaflet or OpenLayers raster map), or the raster tile URL template for any other library. Replace YOUR_KEY with a key restricted to the website. Needs no key and uses no quota; the map itself counts map tiles when viewed.
| Argument | Type | Description |
|---|---|---|
| style | string | Map style: light (default), dark, white or grayscale |
| library* | string | maplibre = vector map (sharpest); leaflet or openlayers = raster tiles; tile_url = just the XYZ URL template |
{
"type": "object",
"required": [
"library"
],
"properties": {
"style": {
"enum": [
"light",
"dark",
"white",
"grayscale"
],
"type": "string",
"default": "light",
"description": "Map style: light (default), dark, white or grayscale"
},
"library": {
"enum": [
"maplibre",
"leaflet",
"openlayers",
"tile_url"
],
"type": "string",
"description": "maplibre = vector map (sharpest); leaflet or openlayers = raster tiles; tile_url = just the XYZ URL template"
}
},
"additionalProperties": false
}Show roughly where a place is without revealing the exact point. The point is snapped to a grid and drawn as a shaded circle that always contains the true point, with no pin; every address in the same grid cell gets the identical image, so the exact location cannot be recovered or averaged out across listings. Use it for real-estate, rental and marketplace listings, people's homes, or any location that should stay private. The image is returned inline, with a reusable URL that contains only the snapped point. Counts 1 static image against the account's monthly cap.
| Argument | Type | Description |
|---|---|---|
| lat* | number | Latitude of the exact place to hide. It is snapped to the grid before use and never returned |
| lon* | number | Longitude of the exact place to hide. It is snapped to the grid before use and never returned |
| color | string | Circle colour as hex, e.g. 0f766e |
| scale | integer | Pixel density: 2 renders a sharper image for high-density screens at double the pixel size |
| style | string | Map style: light (default), dark, white or grayscale |
| width | integer | Image width in CSS pixels |
| format |
Find the nearest address or place to a latitude/longitude, from OpenStreetMap data. Counts 1 address lookup against the account's monthly cap. Same storage terms and attribution as geocode.
| Argument | Type | Description |
|---|---|---|
| lat* | number | Latitude of the point to look up, in decimal degrees (WGS84) |
| lon* | number | Longitude of the point to look up, in decimal degrees (WGS84) |
| lang | string | Preferred language for names, e.g. en, de, fr |
| limit | integer | Maximum number of nearby addresses or places to return |
{
"type": "object",
"required": [
"lat",
"lon"
],
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude of the point to look up, in decimal degrees (WGS84)"
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude of the point to look up, in decimal degrees (WGS84)"
},
"lang": {
"type": "string",
"maxLength": 8,
"minLength": 2,
"description": "Preferred language for names, e.g. en, de, fr"
},
"limit": {
"type": "integer",
"default": 1,
"maximum": 5,
"minimum": 1,
"description": "Maximum number of nearby addresses or places to return"
}
},
"additionalProperties": false
}Render a map as an image (returned inline) with optional pins (markers) and a line (path, e.g. a route). Give center and zoom, or just markers and/or path and the view is fitted automatically. Also returns a reusable image URL for web pages (add your key). Counts 1 static image against the account's monthly cap. Do not use this to show a private address such as someone's home; use privacy_area_map instead.
| Argument | Type | Description |
|---|---|---|
| path | array | A line through these points, in order |
| zoom | number | 0 = world, 10 = city, 15 = streets, 18 = buildings |
| scale | integer | Pixel density: 2 renders a sharper image for high-density screens at double the pixel size |
| style | string | Map style: light (default), dark, white or grayscale |
| width | integer | Image width in CSS pixels |
| center | object | Map centre; use with zoom |
| format | string | Image format. jpg and webp are smaller than png |
| height | integer | Image height in CSS pixels |
We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 5, 2026.
What changed in this server's tools since we started watching, newest first. Each change is scanned again.
{
"type": "object",
"required": [
"library"
],
"properties": {
"style": {
"enum": [
"light",
"dark",
"white",
"grayscale"
],
"type": "string",
"default": "light"
},
"library": {
"enum": [
"maplibre",
"leaflet",
"openlayers",
"tile_url"
],
"type": "string",
"description": "maplibre = vector map (sharpest); leaflet or openlayers = raster tiles; tile_url = just the XYZ URL template"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"library"
],
"properties": {
"style": {
"enum": [
"light",
"dark",
"white",
"grayscale"
],
"type": "string",
"default": "light",
"description": "Map style: light (default), dark, white or grayscale"
},
"library": {
"enum": [
"maplibre",
"leaflet",
"openlayers",
"tile_url"
],
"type": "string",
"description": "maplibre = vector map (sharpest); leaflet or openlayers = raster tiles; tile_url = just the XYZ URL template"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"lat",
"lon"
],
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180
},
"color": {
"type": "string",
"pattern": "^#?[0-9a-fA-F]{6}$",
"description": "Circle colour as hex, e.g. 0f766e"
},
"scale": {
"enum": [
1,
2
],
"type": "integer",
"default": 1
},
"style": {
"enum": [
"light",
"dark",
"white",
"grayscale"
],
"type": "string",
"default": "light"
},
"width": {
"type": "integer",
"default": 600,
"maximum": 1280,
"minimum": 16
},
"format": {
"enum": [
"png",
"jpg",
"webp"
],
"type": "string",
"default": "png"
},
"height": {
"type": "integer",
"default": 400,
"maximum": 1280,
"minimum": 16
},
"radius_m": {
"type": "number",
"default": 1000,
"maximum": 25000,
"minimum": 100,
"description": "Minimum circle radius in metres; it is raised if needed so the circle always contains the true point"
},
"snap_deg": {
"type": "number",
"default": 0.01,
"maximum": 0.1,
"minimum": 0,
"description": "Grid size in degrees (0.01 is about 1 km). 0 turns snapping off and is not recommended"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"lat",
"lon"
],
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude of the exact place to hide. It is snapped to the grid before use and never returned"
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude of the exact place to hide. It is snapped to the grid before use and never returned"
},
"color": {
"type": "string",
"pattern": "^#?[0-9a-fA-F]{6}$",
"description": "Circle colour as hex, e.g. 0f766e"
},
"scale": {
"enum": [
1,
2
],
"type": "integer",
"default": 1,
"description": "Pixel density: 2 renders a sharper image for high-density screens at double the pixel size"
},
"style": {
"enum": [
"light",
"dark",
"white",
"grayscale"
],
"type": "string",
"default": "light",
"description": "Map style: light (default), dark, white or grayscale"
},
"width": {
"type": "integer",
"default": 600,
"maximum": 1280,
"minimum": 16,
"description": "Image width in CSS pixels"
},
"format": {
"enum": [
"png",
"jpg",
"webp"
],
"type": "string",
"default": "png",
"description": "Image format. jpg and webp are smaller than png"
},
"height": {
"type": "integer",
"default": 400,
"maximum": 1280,
"minimum": 16,
"description": "Image height in CSS pixels"
},
"radius_m": {
"type": "number",
"default": 1000,
"maximum": 25000,
"minimum": 100,
"description": "Minimum circle radius in metres; it is raised if needed so the circle always contains the true point"
},
"snap_deg": {
"type": "number",
"default": 0.01,
"maximum": 0.1,
"minimum": 0,
"description": "Grid size in degrees (0.01 is about 1 km). 0 turns snapping off and is not recommended"
}
},
"additionalProperties": false
}{
"type": "object",
"properties": {
"path": {
"type": "array",
"items": {
"type": "object",
"required": [
"lat",
"lon"
],
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180
}
},
"additionalProperties": false
},
"maxItems": 200,
"minItems": 2,
"description": "A line through these points, in order"
},
"zoom": {
"type": "number",
"maximum": 20,
"minimum": 0,
"description": "0 = world, 10 = city, 15 = streets, 18 = buildings"
},
"scale": {
"enum": [
1,
2
],
"type": "integer",
"default": 1
},
"style": {
"enum": [
"light",
"dark",
"white",
"grayscale"
],
"type": "string",
"default": "light"
},
"width": {
"type": "integer",
"default": 600,
"maximum": 1280,
"minimum": 16
},
"center": {
"type": "object",
"required": [
"lat",
"lon"
],
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180
}
},
"description": "Map centre; use with zoom",
"additionalProperties": false
},
"format": {
"enum": [
"png",
"jpg",
"webp"
],
"type": "string",
"default": "png"
},
"height": {
"type": "integer",
"default": 400,
"maximum": 1280,
"minimum": 16
},
"markers": {
"type": "array",
"items": {
"type": "object",
"required": [
"lat",
"lon"
],
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180
}
},
"additionalProperties": false
},
"maxItems": 25,
"description": "Pins to draw"
},
"padding": {
"type": "integer",
"maximum": 200,
"minimum": 0
}
},
"additionalProperties": false
}{
"type": "object",
"properties": {
"path": {
"type": "array",
"items": {
"type": "object",
"required": [
"lat",
"lon"
],
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in decimal degrees (WGS84)"
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in decimal degrees (WGS84)"
}
},
"additionalProperties": false
},
"maxItems": 200,
"minItems": 2,
"description": "A line through these points, in order"
},
"zoom": {
"type": "number",
"maximum": 20,
"minimum": 0,
"description": "0 = world, 10 = city, 15 = streets, 18 = buildings"
},
"scale": {
"enum": [
1,
2
],
"type": "integer",
"default": 1,
"description": "Pixel density: 2 renders a sharper image for high-density screens at double the pixel size"
},
"style": {
"enum": [
"light",
"dark",
"white",
"grayscale"
],
"type": "string",
"default": "light",
"description": "Map style: light (default), dark, white or grayscale"
},
"width": {
"type": "integer",
"default": 600,
"maximum": 1280,
"minimum": 16,
"description": "Image width in CSS pixels"
},
"center": {
"type": "object",
"required": [
"lat",
"lon"
],
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in decimal degrees (WGS84)"
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in decimal degrees (WGS84)"
}
},
"description": "Map centre; use with zoom",
"additionalProperties": false
},
"format": {
"enum": [
"png",
"jpg",
"webp"
],
"type": "string",
"default": "png",
"description": "Image format. jpg and webp are smaller than png"
},
"height": {
"type": "integer",
"default": 400,
"maximum": 1280,
"minimum": 16,
"description": "Image height in CSS pixels"
},
"markers": {
"type": "array",
"items": {
"type": "object",
"required": [
"lat",
"lon"
],
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in decimal degrees (WGS84)"
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in decimal degrees (WGS84)"
}
},
"additionalProperties": false
},
"maxItems": 25,
"description": "Pins to draw"
},
"padding": {
"type": "integer",
"maximum": 200,
"minimum": 0,
"description": "Space in pixels kept around markers and paths when the view is fitted automatically"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"lat",
"lon"
],
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180
},
"lang": {
"type": "string",
"maxLength": 8,
"minLength": 2,
"description": "Preferred language for names, e.g. en, de, fr"
},
"limit": {
"type": "integer",
"default": 1,
"maximum": 5,
"minimum": 1
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"lat",
"lon"
],
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude of the point to look up, in decimal degrees (WGS84)"
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude of the point to look up, in decimal degrees (WGS84)"
},
"lang": {
"type": "string",
"maxLength": 8,
"minLength": 2,
"description": "Preferred language for names, e.g. en, de, fr"
},
"limit": {
"type": "integer",
"default": 1,
"maximum": 5,
"minimum": 1,
"description": "Maximum number of nearby addresses or places to return"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"query"
],
"properties": {
"bbox": {
"type": "array",
"items": {
"type": "number"
},
"maxItems": 4,
"minItems": 4,
"description": "[min_lon, min_lat, max_lon, max_lat]"
},
"lang": {
"type": "string",
"maxLength": 8,
"minLength": 2,
"description": "Preferred language for names, e.g. en, de, fr"
},
"near": {
"type": "object",
"required": [
"lat",
"lon"
],
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180
}
},
"description": "Prefer matches near this point",
"additionalProperties": false
},
"limit": {
"type": "integer",
"default": 5,
"maximum": 10,
"minimum": 1,
"description": "Maximum number of matches"
},
"query": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "Address, place or point of interest, e.g. \"233 S Wacker Dr, Chicago\" or \"Oswego, Illinois\""
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"query"
],
"properties": {
"bbox": {
"type": "array",
"items": {
"type": "number"
},
"maxItems": 4,
"minItems": 4,
"description": "[min_lon, min_lat, max_lon, max_lat]"
},
"lang": {
"type": "string",
"maxLength": 8,
"minLength": 2,
"description": "Preferred language for names, e.g. en, de, fr"
},
"near": {
"type": "object",
"required": [
"lat",
"lon"
],
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in decimal degrees (WGS84)"
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in decimal degrees (WGS84)"
}
},
"description": "Prefer matches near this point",
"additionalProperties": false
},
"limit": {
"type": "integer",
"default": 5,
"maximum": 10,
"minimum": 1,
"description": "Maximum number of matches"
},
"query": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "Address, place or point of interest, e.g. \"233 S Wacker Dr, Chicago\" or \"Oswego, Illinois\""
}
},
"additionalProperties": false
}| string |
| Image format. jpg and webp are smaller than png |
| height | integer | Image height in CSS pixels |
| radius_m | number | Minimum circle radius in metres; it is raised if needed so the circle always contains the true point |
| snap_deg | number | Grid size in degrees (0.01 is about 1 km). 0 turns snapping off and is not recommended |
{
"type": "object",
"required": [
"lat",
"lon"
],
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude of the exact place to hide. It is snapped to the grid before use and never returned"
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude of the exact place to hide. It is snapped to the grid before use and never returned"
},
"color": {
"type": "string",
"pattern": "^#?[0-9a-fA-F]{6}$",
"description": "Circle colour as hex, e.g. 0f766e"
},
"scale": {
"enum": [
1,
2
],
"type": "integer",
"default": 1,
"description": "Pixel density: 2 renders a sharper image for high-density screens at double the pixel size"
},
"style": {
"enum": [
"light",
"dark",
"white",
"grayscale"
],
"type": "string",
"default": "light",
"description": "Map style: light (default), dark, white or grayscale"
},
"width": {
"type": "integer",
"default": 600,
"maximum": 1280,
"minimum": 16,
"description": "Image width in CSS pixels"
},
"format": {
"enum": [
"png",
"jpg",
"webp"
],
"type": "string",
"default": "png",
"description": "Image format. jpg and webp are smaller than png"
},
"height": {
"type": "integer",
"default": 400,
"maximum": 1280,
"minimum": 16,
"description": "Image height in CSS pixels"
},
"radius_m": {
"type": "number",
"default": 1000,
"maximum": 25000,
"minimum": 100,
"description": "Minimum circle radius in metres; it is raised if needed so the circle always contains the true point"
},
"snap_deg": {
"type": "number",
"default": 0.01,
"maximum": 0.1,
"minimum": 0,
"description": "Grid size in degrees (0.01 is about 1 km). 0 turns snapping off and is not recommended"
}
},
"additionalProperties": false
}| markers |
| array |
| Pins to draw |
| padding | integer | Space in pixels kept around markers and paths when the view is fitted automatically |
{
"type": "object",
"properties": {
"path": {
"type": "array",
"items": {
"type": "object",
"required": [
"lat",
"lon"
],
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in decimal degrees (WGS84)"
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in decimal degrees (WGS84)"
}
},
"additionalProperties": false
},
"maxItems": 200,
"minItems": 2,
"description": "A line through these points, in order"
},
"zoom": {
"type": "number",
"maximum": 20,
"minimum": 0,
"description": "0 = world, 10 = city, 15 = streets, 18 = buildings"
},
"scale": {
"enum": [
1,
2
],
"type": "integer",
"default": 1,
"description": "Pixel density: 2 renders a sharper image for high-density screens at double the pixel size"
},
"style": {
"enum": [
"light",
"dark",
"white",
"grayscale"
],
"type": "string",
"default": "light",
"description": "Map style: light (default), dark, white or grayscale"
},
"width": {
"type": "integer",
"default": 600,
"maximum": 1280,
"minimum": 16,
"description": "Image width in CSS pixels"
},
"center": {
"type": "object",
"required": [
"lat",
"lon"
],
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in decimal degrees (WGS84)"
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in decimal degrees (WGS84)"
}
},
"description": "Map centre; use with zoom",
"additionalProperties": false
},
"format": {
"enum": [
"png",
"jpg",
"webp"
],
"type": "string",
"default": "png",
"description": "Image format. jpg and webp are smaller than png"
},
"height": {
"type": "integer",
"default": 400,
"maximum": 1280,
"minimum": 16,
"description": "Image height in CSS pixels"
},
"markers": {
"type": "array",
"items": {
"type": "object",
"required": [
"lat",
"lon"
],
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in decimal degrees (WGS84)"
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in decimal degrees (WGS84)"
}
},
"additionalProperties": false
},
"maxItems": 25,
"description": "Pins to draw"
},
"padding": {
"type": "integer",
"maximum": 200,
"minimum": 0,
"description": "Space in pixels kept around markers and paths when the view is fitted automatically"
}
},
"additionalProperties": false
}