{"openapi":"3.1.0","info":{"title":"LINZ Data Service (BYOK) API","version":"0.1.0","description":"LINZ Data Service (BYOK) lets an AI assistant read your own LINZ Data Service data through the LINZ Data Service API with a key you supply (LINZ Data Service API key). Read-only: 7 tools (search_catalog, list_layers, get_layer, list_categories, list_licenses, list_coordinate_systems, query_vector_layers). The BYOK key travels with each request, is used for that one call only and is never stored,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-linzdataservice.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-linzdataservice/docs"},"termsOfService":"https://connectorbay.com/byok-linzdataservice/terms"},"servers":[{"url":"https://byok-linzdataservice.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-linzdataservice/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_catalog":{"post":{"operationId":"search_catalog","summary":"Search the whole LINZ Data Service catalogue (layers, tables, sets, documents and more) by text, kind, category or tag. ","description":"Search the whole LINZ Data Service catalogue (layers, tables, sets, documents and more) by text, kind, category or tag. Use for \"Search LINZ Data Service for datasets about parcel boundaries\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Free-text search over title, description, tags, category and place names of each item.","title":"Query"},"kind":{"anyOf":[{"enum":["layer","table","set","document","vector","raster","grid","mapviewer"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this item type or data type: layer, table, set, document, vector, raster, grid or mapviewer.","title":"Kind"},"sort":{"anyOf":[{"enum":["name","-name","popularity","created_at","-created_at","updated_at","-updated_at"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order; prefix with '-' to reverse. Default is relevance.","title":"Sort"},"category":{"anyOf":[{"maxLength":120,"type":"string"},{"type":"null"}],"default":null,"description":"Category URL such as 'cadastral/parcels' (descendant categories are included); see list_categories.","title":"Category"},"tag":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Only items carrying this tag.","title":"Tag"},"page":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Page number, 1-based.","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Items per page (1 to 100).","title":"Page Size"}},"title":"search_catalogArguments","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/list_layers":{"post":{"operationId":"list_layers","summary":"List published layers and tables with id, title, type, publication dates and thumbnail, filtered by text, category, tag ","description":"List published layers and tables with id, title, type, publication dates and thumbnail, filtered by text, category, tag or geometry type. Use for \"List LINZ polygon layers tagged with topographic\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Free-text search over title, description, tags, category and place names of each item.","title":"Query"},"geometry_type":{"anyOf":[{"enum":["point","linestring","polygon"],"type":"string"},{"type":"null"}],"default":null,"description":"Only vector data of this geometry type.","title":"Geometry Type"},"category":{"anyOf":[{"maxLength":120,"type":"string"},{"type":"null"}],"default":null,"description":"Category URL such as 'cadastral/parcels' (descendant categories are included); see list_categories.","title":"Category"},"tag":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Only items carrying this tag.","title":"Tag"},"sort":{"anyOf":[{"enum":["name","-name","popularity","created_at","-created_at","updated_at","-updated_at"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order; prefix with '-' to reverse. Default is relevance.","title":"Sort"},"page":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Page number, 1-based.","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Items per page (1 to 100).","title":"Page Size"}},"title":"list_layersArguments","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_layer":{"post":{"operationId":"get_layer","summary":"Get the full details of one layer or table: description, category, tags, licence, data summary, versions and download co","description":"Get the full details of one layer or table: description, category, tags, licence, data summary, versions and download counts. Use for \"Show details of LINZ layer 50772\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"layer_id":{"description":"Numeric layer id, for example 50772 (from list_layers or search_catalog).","minimum":1,"title":"Layer Id","type":"integer"}},"required":["layer_id"],"title":"get_layerArguments","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/list_categories":{"post":{"operationId":"list_categories","summary":"List the catalogue categories with their slug, URL key and sub-categories, for use as the category filter. Use for \"Whic","description":"List the catalogue categories with their slug, URL key and sub-categories, for use as the category filter. Use for \"Which categories exist in the LINZ Data Service\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_categoriesArguments","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/list_licenses":{"post":{"operationId":"list_licenses","summary":"List the licences used by catalogue items with id, title, type, jurisdiction, version and link. Use for \"Which licences ","description":"List the licences used by catalogue items with id, title, type, jurisdiction, version and link. Use for \"Which licences are used on LINZ data\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_licensesArguments","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/list_coordinate_systems":{"post":{"operationId":"list_coordinate_systems","summary":"List coordinate systems known to the service (id, name, kind, units and SRID), optionally filtered by name text or kind.","description":"List coordinate systems known to the service (id, name, kind, units and SRID), optionally filtered by name text or kind. Use for \"What is the SRID of NZGD2000 New Zealand Transverse Mercator in LINZ Data Service\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Free-text filter on the coordinate system name.","title":"Query"},"kind":{"anyOf":[{"enum":["geographic 2D","geocentric","geographic 3D","projected","vertical","compound"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this kind of coordinate system.","title":"Kind"}},"title":"list_coordinate_systemsArguments","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/query_vector_layers":{"post":{"operationId":"query_vector_layers","summary":"Find features of one or more vector layers near a WGS84 point, nearest first, within a radius in metres. Use for \"Which ","description":"Find features of one or more vector layers near a WGS84 point, nearest first, within a radius in metres. Use for \"Which parcels of LINZ layer 50772 are within 50 metres of longitude 174.77694 latitude -41.27831\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"layer_ids":{"description":"One layer id or up to 20 comma-separated ids, for example '50772,743'.","maxLength":120,"title":"Layer Ids","type":"string"},"longitude":{"description":"Longitude of the query point (WGS84).","maximum":180,"minimum":-180,"title":"Longitude","type":"number"},"latitude":{"description":"Latitude of the query point (WGS84).","maximum":90,"minimum":-90,"title":"Latitude","type":"number"},"max_results":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"Maximum features per layer (1 to 100).","title":"Max Results"},"radius_m":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":1000,"description":"Search radius in metres (0 to 100000).","title":"Radius M"},"with_field_names":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to key attribute values by field name.","title":"With Field Names"},"include_geometry":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include each feature's GeoJSON geometry (answers become large).","title":"Include Geometry"}},"required":["layer_ids","longitude","latitude"],"title":"query_vector_layersArguments","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}}}}