{"openapi":"3.1.0","info":{"title":"LocationIQ (BYOK) API","version":"0.1.0","description":"LocationIQ (BYOK) lets an AI assistant read your own LocationIQ data through the LocationIQ API with a key you supply (access token). Read-only: 6 tools (search_place, search_structured, reverse_geocode, autocomplete_place, get_timezone, 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...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-locationiq.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-locationiq/docs"},"termsOfService":"https://connectorbay.com/byok-locationiq/terms"},"servers":[{"url":"https://byok-locationiq.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-locationiq/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/search_place":{"post":{"operationId":"search_place","summary":"Turn a free-form address or place name into coordinates: up to 50 matches with display name, latitude, longitude, class,","description":"Turn a free-form address or place name into coordinates: up to 50 matches with display name, latitude, longitude, class, type, importance, bounding box and address parts. Use for \"What are the coordinates of the White House in Washington\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"q":{"description":"Address or place name, for example '1600 Pennsylvania Ave NW, Washington DC' or 'Eiffel Tower'.","maxLength":300,"title":"Q","type":"string"},"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many matches to return (1 to 50, default 10).","title":"Limit"},"countrycodes":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Limit to countries by ISO 3166-1 alpha-2 codes separated by commas, for example 'us,ca'.","title":"Countrycodes"},"addressdetails":{"anyOf":[{"enum":[0,1],"type":"integer"},{"type":"null"}],"default":1,"description":"1 to include the address broken into parts (road, city, state, postcode, country), 0 for the display name only.","title":"Addressdetails"},"accept_language":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Language of place names: a language code such as en, de, fr, es or native for local names.","title":"Accept Language"},"format":{"anyOf":[{"const":"json","type":"string"},{"type":"null"}],"default":"json","description":"Response format; keep json.","title":"Format"}},"required":["q"],"title":"search_placeArguments","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_structured":{"post":{"operationId":"search_structured","summary":"Geocode an address given as separate parts (street, city, county, state, country, postal code) for more exact matches th","description":"Geocode an address given as separate parts (street, city, county, state, country, postal code) for more exact matches than free text; returns up to 50 matches. Use for \"Find the coordinates of 221B Baker Street, London\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"street":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"House number and street name, for example '221B Baker Street'.","title":"Street"},"city":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"City name.","title":"City"},"county":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"County name.","title":"County"},"state":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"State or region name.","title":"State"},"country":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Country name.","title":"Country"},"postalcode":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Postal or zip code.","title":"Postalcode"},"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many matches to return (1 to 50, default 10).","title":"Limit"},"countrycodes":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Limit to countries by ISO 3166-1 alpha-2 codes separated by commas, for example 'us,ca'.","title":"Countrycodes"},"addressdetails":{"anyOf":[{"enum":[0,1],"type":"integer"},{"type":"null"}],"default":1,"description":"1 to include the address broken into parts (road, city, state, postcode, country), 0 for the display name only.","title":"Addressdetails"},"accept_language":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Language of place names: a language code such as en, de, fr, es or native for local names.","title":"Accept Language"},"format":{"anyOf":[{"const":"json","type":"string"},{"type":"null"}],"default":"json","description":"Response format; keep json.","title":"Format"}},"title":"search_structuredArguments","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":"Find the address or place at a latitude and longitude: display name and address parts, at a chosen level of detail from ","description":"Find the address or place at a latitude and longitude: display name and address parts, at a chosen level of detail from country to building. Use for \"What address is at latitude 51.5233879, longitude -0.1582367\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"lat":{"description":"Latitude in decimal degrees.","maximum":90,"minimum":-90,"title":"Lat","type":"number"},"lon":{"description":"Longitude in decimal degrees.","maximum":180,"minimum":-180,"title":"Lon","type":"number"},"zoom":{"anyOf":[{"maximum":18,"minimum":0,"type":"integer"},{"type":"null"}],"default":18,"description":"Level of detail from 0 (country) to 18 (building, default).","title":"Zoom"},"addressdetails":{"anyOf":[{"enum":[0,1],"type":"integer"},{"type":"null"}],"default":1,"description":"1 to include the address broken into parts (road, city, state, postcode, country), 0 for the display name only.","title":"Addressdetails"},"accept_language":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Language of place names: a language code such as en, de, fr, es or native for local names.","title":"Accept Language"},"format":{"anyOf":[{"const":"json","type":"string"},{"type":"null"}],"default":"json","description":"Response format; keep json.","title":"Format"}},"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/autocomplete_place":{"post":{"operationId":"autocomplete_place","summary":"Suggest places and addresses while a user types: up to 20 matches with display name, display place, display address, coo","description":"Suggest places and addresses while a user types: up to 20 matches with display name, display place, display address, coordinates and address parts. Use for \"Suggest places that start with 'Empire State'\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"q":{"description":"The text typed so far, for example 'Empire State'.","maxLength":200,"title":"Q","type":"string"},"limit":{"anyOf":[{"maximum":20,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many suggestions to return (1 to 20, default 10).","title":"Limit"},"countrycodes":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Limit to countries by ISO 3166-1 alpha-2 codes separated by commas, for example 'us,ca'.","title":"Countrycodes"},"layers":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Limit to place types, comma separated: road, neighbourhood, suburb, city, county, state, country, postcode.","title":"Layers"},"dedupe":{"anyOf":[{"enum":[0,1],"type":"integer"},{"type":"null"}],"default":0,"description":"1 to remove duplicate places (may return fewer than limit).","title":"Dedupe"},"accept_language":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Language of place names: a language code such as en, de, fr, es or native for local names.","title":"Accept Language"}},"required":["q"],"title":"autocomplete_placeArguments","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_timezone":{"post":{"operationId":"get_timezone","summary":"Get the time zone at a latitude and longitude: IANA name, short and full name, UTC offset in seconds and whether dayligh","description":"Get the time zone at a latitude and longitude: IANA name, short and full name, UTC offset in seconds and whether daylight saving applies, optionally at a given time. Use for \"What time zone is latitude 18.52, longitude 73.86 in\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"lat":{"description":"Latitude in decimal degrees.","maximum":90,"minimum":-90,"title":"Lat","type":"number"},"lon":{"description":"Longitude in decimal degrees.","maximum":180,"minimum":-180,"title":"Lon","type":"number"},"timestamp":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Unix time in seconds to get the zone data for (default: now).","title":"Timestamp"}},"required":["lat","lon"],"title":"get_timezoneArguments","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 or walking route between two points: distance in metres and duration in seconds (no turn-by-turn steps o","description":"Get the driving or walking route between two points: distance in metres and duration in seconds (no turn-by-turn steps or map geometry). Use for \"How far is it to drive from Paris to Lyon\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"profile":{"description":"Mode of travel: driving or walking.","enum":["driving","walking"],"title":"Profile","type":"string"},"from_lon":{"description":"Start longitude in decimal degrees.","maximum":180,"minimum":-180,"title":"From Lon","type":"number"},"from_lat":{"description":"Start latitude in decimal degrees.","maximum":90,"minimum":-90,"title":"From Lat","type":"number"},"to_lon":{"description":"End longitude in decimal degrees.","maximum":180,"minimum":-180,"title":"To Lon","type":"number"},"to_lat":{"description":"End latitude in decimal degrees.","maximum":90,"minimum":-90,"title":"To Lat","type":"number"},"alternatives":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to also return alternative routes.","title":"Alternatives"},"overview":{"anyOf":[{"enum":["false","simplified","full"],"type":"string"},{"type":"null"}],"default":"false","description":"Route geometry detail: false for none (keeps the answer short), simplified or full.","title":"Overview"}},"required":["profile","from_lon","from_lat","to_lon","to_lat"],"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}}}}