{"openapi":"3.1.0","info":{"title":"PeeringDB (BYOK) API","version":"0.1.0","description":"PeeringDB (BYOK) lets an AI assistant read your own PeeringDB data through the PeeringDB API with a key you supply (PeeringDB API key (read-only key is enough)). Read-only: 9 tools (search_networks, get_network, list_organizations, search_facilities, search_exchanges, list_network_exchange_ports, list_network_facilities, list_exchange_prefixes, list_carriers). The BYOK key travels with each...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-peeringdb.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-peeringdb/docs"},"termsOfService":"https://connectorbay.com/byok-peeringdb/terms"},"servers":[{"url":"https://byok-peeringdb.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-peeringdb/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_networks":{"post":{"operationId":"search_networks","summary":"Search networks (autonomous systems) by ASN or name: policy, traffic level, scope, announced prefix limits, looking glas","description":"Search networks (autonomous systems) by ASN or name: policy, traffic level, scope, announced prefix limits, looking glass and counts of exchanges and facilities. Use for \"Which network has ASN 15169 and what is its peering policy\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"asn":{"anyOf":[{"maximum":4294967295,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Autonomous system number, for example 15169.","title":"Asn"},"name":{"anyOf":[{"maxLength":255,"type":"string"},{"type":"null"}],"default":null,"description":"Exact name to match.","title":"Name"},"name_contains":{"anyOf":[{"maxLength":255,"type":"string"},{"type":"null"}],"default":null,"description":"Records whose name contains this text.","title":"Name Contains"},"info_scope":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Geographic scope, for example Global or Europe.","title":"Info Scope"},"limit":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many records to return (1 to 250).","title":"Limit"},"skip":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of records to skip, for paging.","title":"Skip"}},"title":"search_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/get_network":{"post":{"operationId":"get_network","summary":"Get one network by its PeeringDB ID, with policy, traffic and prefix information. Contacts are not included. Use for \"Sh","description":"Get one network by its PeeringDB ID, with policy, traffic and prefix information. Contacts are not included. Use for \"Show the PeeringDB record for network 694\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"PeeringDB network ID from search_networks.","maximum":100000000,"minimum":1,"title":"Id","type":"integer"},"depth":{"anyOf":[{"maximum":2,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How much related data to expand: 0 none, 1 IDs, 2 objects (large).","title":"Depth"}},"required":["id"],"title":"get_networkArguments","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_organizations":{"post":{"operationId":"list_organizations","summary":"Search organizations that own networks, facilities and exchanges: name, website, location and counts. Use for \"Which org","description":"Search organizations that own networks, facilities and exchanges: name, website, location and counts. Use for \"Which organizations in PeeringDB have Cloudflare in their name\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"anyOf":[{"maxLength":255,"type":"string"},{"type":"null"}],"default":null,"description":"Exact name to match.","title":"Name"},"name_contains":{"anyOf":[{"maxLength":255,"type":"string"},{"type":"null"}],"default":null,"description":"Records whose name contains this text.","title":"Name Contains"},"country":{"anyOf":[{"maxLength":2,"type":"string"},{"type":"null"}],"default":null,"description":"Two-letter ISO country code, for example NL.","title":"Country"},"limit":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many records to return (1 to 250).","title":"Limit"},"skip":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of records to skip, for paging.","title":"Skip"}},"title":"list_organizationsArguments","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_facilities":{"post":{"operationId":"search_facilities","summary":"Search data center facilities by name, city, country or owner organization: address, coordinates, CLLI code and counts o","description":"Search data center facilities by name, city, country or owner organization: address, coordinates, CLLI code and counts of networks and exchanges. Use for \"Which data centers does PeeringDB list in Frankfurt\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"anyOf":[{"maxLength":255,"type":"string"},{"type":"null"}],"default":null,"description":"Exact name to match.","title":"Name"},"name_contains":{"anyOf":[{"maxLength":255,"type":"string"},{"type":"null"}],"default":null,"description":"Records whose name contains this text.","title":"Name Contains"},"city":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"City name.","title":"City"},"country":{"anyOf":[{"maxLength":2,"type":"string"},{"type":"null"}],"default":null,"description":"Two-letter ISO country code, for example NL.","title":"Country"},"org_id":{"anyOf":[{"maximum":100000000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only facilities owned by this organization ID.","title":"Org Id"},"limit":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many records to return (1 to 250).","title":"Limit"},"skip":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of records to skip, for paging.","title":"Skip"}},"title":"search_facilitiesArguments","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_exchanges":{"post":{"operationId":"search_exchanges","summary":"Search internet exchanges (IXPs) by name, city, country or region: media type, supported protocols, website and member c","description":"Search internet exchanges (IXPs) by name, city, country or region: media type, supported protocols, website and member counts. Use for \"Which internet exchanges are in Amsterdam\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"anyOf":[{"maxLength":255,"type":"string"},{"type":"null"}],"default":null,"description":"Exact name to match.","title":"Name"},"name_contains":{"anyOf":[{"maxLength":255,"type":"string"},{"type":"null"}],"default":null,"description":"Records whose name contains this text.","title":"Name Contains"},"city":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"City name.","title":"City"},"country":{"anyOf":[{"maxLength":2,"type":"string"},{"type":"null"}],"default":null,"description":"Two-letter ISO country code, for example NL.","title":"Country"},"region_continent":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Continent, for example Europe, North America or Asia Pacific.","title":"Region Continent"},"limit":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many records to return (1 to 250).","title":"Limit"},"skip":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of records to skip, for paging.","title":"Skip"}},"title":"search_exchangesArguments","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_network_exchange_ports":{"post":{"operationId":"list_network_exchange_ports","summary":"List the public peering ports a network has at internet exchanges: exchange, speed in Mbps, IP addresses and route-serve","description":"List the public peering ports a network has at internet exchanges: exchange, speed in Mbps, IP addresses and route-server peering. Use for \"At which exchanges does AS15169 peer and at what port speeds\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"asn":{"anyOf":[{"maximum":4294967295,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Autonomous system number of the network.","title":"Asn"},"net_id":{"anyOf":[{"maximum":100000000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"PeeringDB network ID.","title":"Net Id"},"ix_id":{"anyOf":[{"maximum":100000000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"PeeringDB exchange ID.","title":"Ix Id"},"limit":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many records to return (1 to 250).","title":"Limit"},"skip":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of records to skip, for paging.","title":"Skip"}},"title":"list_network_exchange_portsArguments","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_network_facilities":{"post":{"operationId":"list_network_facilities","summary":"List the data center facilities where a network is present. Use for \"In which data centers is network 694 present\".","description":"List the data center facilities where a network is present. Use for \"In which data centers is network 694 present\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"net_id":{"anyOf":[{"maximum":100000000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"PeeringDB network ID.","title":"Net Id"},"fac_id":{"anyOf":[{"maximum":100000000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"PeeringDB facility ID.","title":"Fac Id"},"local_asn":{"anyOf":[{"maximum":4294967295,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Autonomous system number the network uses at the facility.","title":"Local Asn"},"limit":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many records to return (1 to 250).","title":"Limit"},"skip":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of records to skip, for paging.","title":"Skip"}},"title":"list_network_facilitiesArguments","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_exchange_prefixes":{"post":{"operationId":"list_exchange_prefixes","summary":"List the IP prefixes used on an exchange peering LAN, by protocol. Use for \"Which IP prefixes does PeeringDB list for ex","description":"List the IP prefixes used on an exchange peering LAN, by protocol. Use for \"Which IP prefixes does PeeringDB list for exchange LAN 18\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"ixlan_id":{"anyOf":[{"maximum":100000000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"PeeringDB exchange LAN ID.","title":"Ixlan Id"},"protocol":{"anyOf":[{"maxLength":4,"type":"string"},{"type":"null"}],"default":null,"description":"IPv4 or IPv6.","title":"Protocol"},"limit":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many records to return (1 to 250).","title":"Limit"},"skip":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of records to skip, for paging.","title":"Skip"}},"title":"list_exchange_prefixesArguments","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_carriers":{"post":{"operationId":"list_carriers","summary":"Search carriers (network providers that serve facilities) by name. Use for \"Which carriers does PeeringDB list with Zayo","description":"Search carriers (network providers that serve facilities) by name. Use for \"Which carriers does PeeringDB list with Zayo in the name\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"anyOf":[{"maxLength":255,"type":"string"},{"type":"null"}],"default":null,"description":"Exact name to match.","title":"Name"},"name_contains":{"anyOf":[{"maxLength":255,"type":"string"},{"type":"null"}],"default":null,"description":"Records whose name contains this text.","title":"Name Contains"},"limit":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many records to return (1 to 250).","title":"Limit"},"skip":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of records to skip, for paging.","title":"Skip"}},"title":"list_carriersArguments","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}}}}