{"serverId":"mcp-registry/io.github.robit-man/mapsource","tools":[{"name":"find_features","fixed":{"name":"find_features","description":"Find cafes, restaurants, buildings, parks, schools, hospitals, transit stops, drinking water, or trails within a bounding box up to 0.5 degrees per axis. Returns OSM geometry and tags, subject to the output limit. Requires a subscription key or authorized x402 payment.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["category","south","west","north","east"],"properties":{"east":{"type":"number","maximum":180,"minimum":-180},"west":{"type":"number","maximum":180,"minimum":-180},"limit":{"type":"integer","default":100,"maximum":500,"minimum":1,"description":"Maximum returned OSM objects, not a pagination guarantee."},"north":{"type":"number","maximum":85,"minimum":-85},"south":{"type":"number","maximum":85,"minimum":-85},"category":{"enum":["cafes","restaurants","buildings","parks","schools","hospitals","transit_stops","drinking_water","trails"],"type":"string","description":"Mapped feature category; use overpass_query for arbitrary OSM tags."},"responseMode":{"enum":["compact","handle","raw"],"type":"string","default":"compact","description":"compact: inline when small, a result handle when large. handle: always a handle. raw: always the full body, however large."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":354,"tokensAfter":354},{"name":"geo_analyze","fixed":{"name":"geo_analyze","description":"Measure or transform geometry using buffer, centroid, bbox, area, length, distance, intersect, union, difference, contains, intersects, nearest, simplify, or convex. Inputs accept GeoJSON, coordinate pairs, Overpass results, and result handles. Polygon overlay operations require areas. Use operation pipeline for up to 12 ordered steps and estimateOnly for cost estimation. Requires a subscription key.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["operation"],"properties":{"a":{"description":"GeoJSON, a [lon, lat] pair, an Overpass result, a places result, or a result handle such as rh_ followed by 32 hex characters. Required for every operation except pipeline.","type":"string"},"b":{"description":"The second operand, in the same forms as a.","type":"string"},"units":{"enum":["meters","kilometers","miles"],"type":"string","default":"meters"},"returns":{"type":"string","description":"pipeline only: which step to return, as $stepId. Defaults to the last."},"distance":{"type":"number","maximum":500000,"minimum":0,"description":"Buffer radius or simplify tolerance."},"pipeline":{"type":"array","items":{"type":"object","required":["id","op"],"properties":{"id":{"type":"string","description":"Referenced by later steps as $id."},"op":{"enum":["search","nearby","route","isochrone","matrix","analyze","filter","sort","limit"],"type":"string"},"args":{"type":"object","default":{},"propertyNames":{"type":"string"},"additionalProperties":{}}}},"maxItems":12,"description":"pipeline only: ordered steps. Any argument may be $anEarlierStepId."},"operation":{"enum":["buffer","centroid","bbox","area","length","distance","intersect","union","difference","contains","intersects","nearest","simplify","convex","pipeline"],"type":"string","description":"buffer and simplify take distance. distance, intersect, union, difference, contains, intersects and nearest take a second geometry in b. pipeline runs several steps server-side and takes pipeline instead of a."},"estimateOnly":{"type":"boolean","default":false,"description":"pipeline: calculate estimated cost without execution."}}},"annotations":{"readOnlyHint":true,"destructiveHint":false}},"changes":[{"kind":"schema","detail":"Added \"type\":\"string\" to untyped parameters: a, b. Change to number/boolean/array where that's what you accept.","verify":true}],"tokensBefore":597,"tokensAfter":606},{"name":"geo_render","fixed":{"name":"geo_render","description":"Render a static PNG map from a center and zoom or bounding box. Supports GeoJSON overlays, result handles, and up to 50 labeled markers. Dark and light styles use raster rendering; other preset or profile names use vector rendering. Requires a subscription key.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"lat":{"type":"number","maximum":85.05112878,"minimum":-85.05112878},"lon":{"type":"number","maximum":180,"minimum":-180},"bbox":{"type":"array","items":{"type":"number"},"maxItems":4,"minItems":4,"description":"[west, south, east, north]. Fits the viewport to this instead of using lat/lon/zoom."},"zoom":{"type":"number","maximum":19,"minimum":0},"pitch":{"type":"number","default":0,"maximum":60,"minimum":0,"description":"Vector renders only."},"style":{"type":"string","default":"dark","maxLength":64,"minLength":1,"description":"dark or light composites the raster basemaps. Any other value names a style preset or one of your saved basemap profiles and is rendered as vector against that compiled style."},"width":{"type":"integer","default":800,"maximum":2048,"minimum":64},"height":{"type":"integer","default":600,"maximum":2048,"minimum":64},"bearing":{"type":"number","default":0,"maximum":180,"minimum":-180,"description":"Vector renders only."},"geojson":{"description":"GeoJSON to draw, or a result handle such as rh_ followed by 32 hex characters.","type":"string"},"markers":{"type":"array","items":{"type":"object","required":["lat","lon"],"properties":{"lat":{"type":"number","maximum":85.05112878,"minimum":-85.05112878},"lon":{"type":"number","maximum":180,"minimum":-180},"label":{"type":"string","maxLength":24}}},"maxItems":50},"styleRevision":{"type":"integer","maximum":9007199254740991,"minimum":1,"description":"Saved profile revision to use for rendering."}}},"annotations":{"readOnlyHint":true,"destructiveHint":false}},"changes":[{"kind":"schema","detail":"Added \"type\":\"string\" to untyped parameters: geojson. Change to number/boolean/array where that's what you accept.","verify":true}],"tokensBefore":519,"tokensAfter":524},{"name":"overpass_query","fixed":{"name":"overpass_query","description":"Execute bounded Overpass QL over OSM nodes, ways, relations, tags, geometry, areas, metadata, and spatial selectors. Historical attic queries are unsupported. Requires a subscription key or authorized x402 payment. Use service_status to retrieve the dataset timestamp.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["query"],"properties":{"query":{"type":"string","maxLength":131072,"minLength":1,"description":"A complete bounded Overpass QL query, with explicit timeout and output limit."},"responseMode":{"enum":["compact","handle","raw"],"type":"string","default":"compact","description":"compact: inline when small, a result handle when large. handle: always a handle. raw: always the full body, however large."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":225,"tokensAfter":225},{"name":"service_status","fixed":{"name":"service_status","description":"Read Overpass engine readiness, dataset timestamp, billing state, and x402 payment mode. Public. Use geo_data with operation status for the full subsystem report.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":85,"tokensAfter":85}],"toolsChanged":5,"tokensSaved":0,"todo":[{"tool":"find_features","params":["east","west","north","south"]},{"tool":"geo_analyze","params":["units"]},{"tool":"geo_render","params":["lat","lon","zoom","width","height","markers"]},{"tool":"geo_search","params":["lat","lon","limit","costing"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}