{"openapi":"3.1.0","info":{"title":"Geoapify (BYOK) API","version":"0.1.0","description":"Geoapify (BYOK) lets an AI assistant read your own Geoapify data through the Geoapify API with a key you supply (API key). Read-only: 5 tools (geocode_address, autocomplete_address, reverse_geocode, search_places, get_route_summary). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached; it is only ever sent to api.geoapify.com. Unofficial...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-geoapify.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-geoapify/docs"},"termsOfService":"https://connectorbay.com/byok-geoapify/terms"},"servers":[{"url":"https://byok-geoapify.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-geoapify/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/geocode_address":{"post":{"operationId":"geocode_address","summary":"Convert a free-text address or place name to coordinates, with the formatted address, address parts, result type and a m","description":"Convert a free-text address or place name to coordinates, with the formatted address, address parts, result type and a match confidence from 0 to 1. Use for \"What are the coordinates of 1600 Pennsylvania Avenue, Washington\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"text":{"description":"Free-text address or place name, for example '1600 Pennsylvania Avenue NW, Washington'.","maxLength":300,"title":"Text","type":"string"},"type":{"anyOf":[{"enum":["country","state","city","postcode","street","amenity","locality"],"type":"string"},{"type":"null"}],"default":null,"description":"Limit results to one kind of place: country, state, city, postcode, street, amenity or locality.","title":"Type"},"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum number of results, 1 to 50 (provider default 5).","title":"Limit"},"lang":{"anyOf":[{"maxLength":5,"type":"string"},{"type":"null"}],"default":null,"description":"Two-letter ISO 639-1 language code for the result text, for example 'en' or 'de'.","title":"Lang"},"filter":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Hard filter, e.g. 'countrycode:de', 'circle:lon,lat,radiusMeters' or 'rect:lon1,lat1,lon2,lat2'. Join different filter types with '|'.","title":"Filter"},"bias":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Ranking preference that does not exclude results, e.g. 'proximity:lon,lat', 'countrycode:de' or 'circle:lon,lat,radiusMeters'.","title":"Bias"}},"required":["text"],"title":"geocode_addressArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/autocomplete_address":{"post":{"operationId":"autocomplete_address","summary":"Suggest complete addresses and places from a partial text, for type-ahead style lookups. Use for \"Suggest addresses that","description":"Suggest complete addresses and places from a partial text, for type-ahead style lookups. Use for \"Suggest addresses that start with '221B Baker'\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"text":{"description":"Partial address or place name typed so far, for example '221B Baker'.","maxLength":300,"title":"Text","type":"string"},"type":{"anyOf":[{"enum":["country","state","city","postcode","street","amenity","locality"],"type":"string"},{"type":"null"}],"default":null,"description":"Limit suggestions to one kind of place: country, state, city, postcode, street, amenity or locality.","title":"Type"},"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum number of suggestions, 1 to 50.","title":"Limit"},"lang":{"anyOf":[{"maxLength":5,"type":"string"},{"type":"null"}],"default":null,"description":"Two-letter ISO 639-1 language code for the result text, for example 'en' or 'de'.","title":"Lang"},"filter":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Hard filter, e.g. 'countrycode:de', 'circle:lon,lat,radiusMeters' or 'rect:lon1,lat1,lon2,lat2'. Join different filter types with '|'.","title":"Filter"},"bias":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Ranking preference that does not exclude results, e.g. 'proximity:lon,lat', 'countrycode:de' or 'circle:lon,lat,radiusMeters'.","title":"Bias"}},"required":["text"],"title":"autocomplete_addressArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/reverse_geocode":{"post":{"operationId":"reverse_geocode","summary":"Convert a latitude and longitude to the nearest address or place, with address parts and the time zone. Use for \"What ad","description":"Convert a latitude and longitude to the nearest address or place, with address parts and the time zone. Use for \"What address is at latitude 48.8584 and longitude 2.2945\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"lat":{"description":"Latitude in decimal degrees, from -90 to 90.","maximum":90,"minimum":-90,"title":"Lat","type":"number"},"lon":{"description":"Longitude in decimal degrees, from -180 to 180.","maximum":180,"minimum":-180,"title":"Lon","type":"number"},"type":{"anyOf":[{"enum":["country","state","city","postcode","street","amenity","locality","building"],"type":"string"},{"type":"null"}],"default":null,"description":"Limit the result to one kind of place: country, state, city, postcode, street, amenity, locality or building.","title":"Type"},"limit":{"anyOf":[{"maximum":20,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum number of results, 1 to 20 (provider default 1).","title":"Limit"},"lang":{"anyOf":[{"maxLength":5,"type":"string"},{"type":"null"}],"default":null,"description":"Two-letter ISO 639-1 language code for the result text, for example 'en' or 'de'.","title":"Lang"}},"required":["lat","lon"],"title":"reverse_geocodeArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/search_places":{"post":{"operationId":"search_places","summary":"Find places of given categories (for example supermarkets, cafes, hospitals or hotels) inside a circle or box, with addr","description":"Find places of given categories (for example supermarkets, cafes, hospitals or hotels) inside a circle or box, with address and distance; a bias point sorts them by closeness. Use for \"Find pharmacies within 1 km of longitude 2.3522, latitude 48.8566\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"categories":{"description":"Comma-separated category keys, for example 'commercial.supermarket', 'catering.cafe' or 'healthcare.hospital'. A parent key such as 'accommodation' includes its subcategories.","maxLength":300,"title":"Categories","type":"string"},"filter":{"description":"Area to search, e.g. 'circle:2.3522,48.8566,1000' (lon,lat,radius in meters) or 'rect:lon1,lat1,lon2,lat2'.","maxLength":200,"title":"Filter","type":"string"},"bias":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Ranking preference such as 'proximity:2.3522,48.8566'; places are sorted by distance to it.","title":"Bias"},"conditions":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Extra conditions such as 'wheelchair.yes', comma-separated.","title":"Conditions"},"place_name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only places whose name matches this text.","title":"Place Name"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Results per page, 1 to 100.","title":"Limit"},"offset":{"anyOf":[{"maximum":10000,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Number of results to skip, for paging.","title":"Offset"},"lang":{"anyOf":[{"maxLength":5,"type":"string"},{"type":"null"}],"default":null,"description":"Two-letter ISO 639-1 language code for the result text, for example 'en' or 'de'.","title":"Lang"}},"required":["categories","filter"],"title":"search_placesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_route_summary":{"post":{"operationId":"get_route_summary","summary":"Get the driving, walking, cycling or transit distance and travel time between two or more points, including whether the ","description":"Get the driving, walking, cycling or transit distance and travel time between two or more points, including whether the route has tolls or ferries. Use for \"How long does it take to drive from 48.8566,2.3522 to 48.8584,2.2945\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"waypoints":{"description":"Ordered points as 'lat,lon' pairs separated by '|' (at least two), for example '48.8566,2.3522|48.8584,2.2945'.","maxLength":500,"title":"Waypoints","type":"string"},"mode":{"description":"Travel mode: walk, hike, scooter, motorcycle, drive, light_truck, bicycle, mountain_bike, road_bike, bus, medium_truck, truck, truck_dangerous_goods, heavy_truck, long_truck, transit or approximated_transit.","enum":["walk","hike","scooter","motorcycle","drive","light_truck","bicycle","mountain_bike","road_bike","bus","medium_truck","truck","truck_dangerous_goods","heavy_truck","long_truck","transit","approximated_transit"],"title":"Mode","type":"string"},"type":{"anyOf":[{"enum":["balanced","short","less_maneuvers"],"type":"string"},{"type":"null"}],"default":null,"description":"Route preference: balanced (default), short or less_maneuvers.","title":"Type"},"units":{"anyOf":[{"enum":["metric","imperial"],"type":"string"},{"type":"null"}],"default":null,"description":"Distance units: metric (default) or imperial.","title":"Units"},"avoid":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Things to avoid, separated by '|', for example 'tolls|ferries|highways'.","title":"Avoid"}},"required":["waypoints","mode"],"title":"get_route_summaryArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}