{"openapi":"3.1.0","info":{"title":"Defined Networking (BYOK) API","version":"0.1.0","description":"Defined Networking (BYOK) lets an AI assistant read your own Defined Networking data through the Defined Networking API with a key you supply (Defined Networking API key (dnkey)). Read-only: 9 tools (list_hosts, get_host, list_roles, list_tags, list_networks, list_routes, list_audit_logs, list_endpoint_oidc_providers, get_current_api_key). The BYOK key travels with each request, is used for that...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-defined.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-defined/docs"},"termsOfService":"https://connectorbay.com/byok-defined/terms"},"servers":[{"url":"https://byok-defined.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-defined/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/list_hosts":{"post":{"operationId":"list_hosts","summary":"List overlay network hosts with name, overlay IP addresses, role, tags, blocked and lighthouse flags, client version and","description":"List overlay network hosts with name, overlay IP addresses, role, tags, blocked and lighthouse flags, client version and last seen time. Needs the hosts:list scope. Use for \"Which hosts in my Nebula network are blocked or have not been seen recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Text matched against host name, IP address, role name and tags.","title":"Search"},"is_blocked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for only blocked hosts, false for unblocked ones.","title":"Is Blocked"},"is_lighthouse":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for only lighthouses.","title":"Is Lighthouse"},"is_relay":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for only relays.","title":"Is Relay"},"update_available":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for hosts whose client has an update available.","title":"Update Available"},"platform":{"anyOf":[{"enum":["mobile","dnclient","dnclient-desktop"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this client platform.","title":"Platform"},"role_id":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Only hosts with this role id.","title":"Role Id"},"network_id":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Only hosts in this network id.","title":"Network Id"},"sort_direction":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order, asc or desc.","title":"Sort Direction"},"include_counts":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include the total record count in metadata.totalCount.","title":"Include Counts"},"page_size":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many records per page (1 to 500).","title":"Page Size"},"cursor":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor taken from metadata.nextCursor of the previous answer.","title":"Cursor"}},"title":"list_hostsArguments","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_host":{"post":{"operationId":"get_host","summary":"Get one host by id: name, overlay IP addresses, role, tags, flags, client version, platform and last seen time. Needs th","description":"Get one host by id: name, overlay IP addresses, role, tags, flags, client version, platform and last seen time. Needs the hosts:read scope. Use for \"Show details of Nebula host host-abc123\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"host_id":{"description":"Host id from list_hosts.","maxLength":100,"title":"Host Id","type":"string"}},"required":["host_id"],"title":"get_hostArguments","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_roles":{"post":{"operationId":"list_roles","summary":"List host roles with description, number of firewall rules and number of hosts. Needs the roles:list scope. Use for \"Whi","description":"List host roles with description, number of firewall rules and number of hosts. Needs the roles:list scope. Use for \"Which roles exist and how many hosts use each\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_size":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many records per page (1 to 500).","title":"Page Size"},"cursor":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor taken from metadata.nextCursor of the previous answer.","title":"Cursor"}},"title":"list_rolesArguments","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_tags":{"post":{"operationId":"list_tags","summary":"List host tags (key:value) with priority, number of hosts, firewall rule count and subscribed routes. Needs the tags:lis","description":"List host tags (key:value) with priority, number of hosts, firewall rule count and subscribed routes. Needs the tags:list scope. Use for \"Which tags are in use and how many hosts carry each\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_size":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many records per page (1 to 500).","title":"Page Size"},"cursor":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor taken from metadata.nextCursor of the previous answer.","title":"Cursor"}},"title":"list_tagsArguments","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_networks":{"post":{"operationId":"list_networks","summary":"List overlay networks with CIDR ranges, host count, certificate version and curve. Needs the networks:list scope. Use fo","description":"List overlay networks with CIDR ranges, host count, certificate version and curve. Needs the networks:list scope. Use for \"What networks and address ranges do I have in Defined Networking\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_size":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many records per page (1 to 500).","title":"Page Size"},"cursor":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor taken from metadata.nextCursor of the previous answer.","title":"Cursor"}},"title":"list_networksArguments","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_routes":{"post":{"operationId":"list_routes","summary":"List routes that expose external CIDR ranges through a router host, with firewall rule counts. Needs the routes:list sco","description":"List routes that expose external CIDR ranges through a router host, with firewall rule counts. Needs the routes:list scope. Use for \"Which external networks are routed through my Nebula overlay\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sort_direction":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order, asc or desc.","title":"Sort Direction"},"include_counts":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include the total record count in metadata.totalCount.","title":"Include Counts"},"page_size":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many records per page (1 to 500).","title":"Page Size"},"cursor":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor taken from metadata.nextCursor of the previous answer.","title":"Cursor"}},"title":"list_routesArguments","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_audit_logs":{"post":{"operationId":"list_audit_logs","summary":"List audit log events (what changed, on which target type and id, and when) without the acting user details. Needs the a","description":"List audit log events (what changed, on which target type and id, and when) without the acting user details. Needs the audit-logs:list scope. Use for \"What changes were made to my Nebula network recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"target_type":{"anyOf":[{"enum":["apiKey","host","network","role","user","ca","oidcProvider","tag","organization","route","endpointOIDC","domain"],"type":"string"},{"type":"null"}],"default":null,"description":"Only events on this kind of target.","title":"Target Type"},"target_id":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Only events on this target id.","title":"Target Id"},"sort_direction":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order, asc or desc.","title":"Sort Direction"},"page_size":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many records per page (1 to 500).","title":"Page Size"},"cursor":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor taken from metadata.nextCursor of the previous answer.","title":"Cursor"}},"title":"list_audit_logsArguments","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_endpoint_oidc_providers":{"post":{"operationId":"list_endpoint_oidc_providers","summary":"List OIDC identity providers used to enroll endpoints, with issuer, enabled flag, network, role and authentication valid","description":"List OIDC identity providers used to enroll endpoints, with issuer, enabled flag, network, role and authentication validity. Needs the endpoint-oidc-providers:list scope. Use for \"Which identity providers can enroll endpoints into my Nebula network\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sort_direction":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order, asc or desc.","title":"Sort Direction"},"include_counts":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include the total record count in metadata.totalCount.","title":"Include Counts"},"page_size":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many records per page (1 to 500).","title":"Page Size"},"cursor":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor taken from metadata.nextCursor of the previous answer.","title":"Cursor"}},"title":"list_endpoint_oidc_providersArguments","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_current_api_key":{"post":{"operationId":"get_current_api_key","summary":"Show which organization and API key the request is using: key name, key type, organization name and plan. Use for \"Which","description":"Show which organization and API key the request is using: key name, key type, organization name and plan. Use for \"Which Defined Networking organization is this key for\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_current_api_keyArguments","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}}}}