{"openapi":"3.1.0","info":{"title":"Scaleway VPC (BYOK) API","version":"0.1.0","description":"Scaleway VPC (BYOK) lets an AI assistant read your own Scaleway VPC data through the Scaleway VPC API with a key you supply (API secret key (give it read-only IAM permissions)). Read-only: 8 tools (list_vpcs, get_vpc, list_private_networks, get_private_network, list_subnets, list_vpc_connectors, list_ingress_rules, get_vpc_acl). The BYOK key travels with each request, is used for that one call...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-scaleway-vpc.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-scaleway-vpc/docs"},"termsOfService":"https://connectorbay.com/byok-scaleway-vpc/terms"},"servers":[{"url":"https://byok-scaleway-vpc.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-scaleway-vpc/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_vpcs":{"post":{"operationId":"list_vpcs","summary":"List VPCs in one region with default flag, routing settings, number of Private Networks and tags. Use for \"Which VPCs do","description":"List VPCs in one region with default flag, routing settings, number of Private Networks and tags. Use for \"Which VPCs do I have on Scaleway in fr-par\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"Scaleway region, for example 'fr-par'. VPCs exist per region.","enum":["fr-par","nl-ams","pl-waw","it-mil"],"title":"Region","type":"string"},"name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only VPCs whose name contains this text.","title":"Name"},"tags":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only VPCs with this tag.","title":"Tags"},"is_default":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list only the default VPC, false only the others.","title":"Is Default"},"routing_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list only VPCs with routing enabled.","title":"Routing Enabled"},"project_id":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Only VPCs of this Project id (UUID).","title":"Project Id"},"order_by":{"anyOf":[{"enum":["created_at_asc","created_at_desc","name_asc","name_desc"],"type":"string"},{"type":"null"}],"default":"created_at_asc","description":"Order of the list.","title":"Order By"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Page Size"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["region"],"title":"list_vpcsArguments","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_vpc":{"post":{"operationId":"get_vpc","summary":"Get one VPC by id with routing settings, Private Network count and tags. Use for \"Is routing enabled on my Scaleway VPC\"","description":"Get one VPC by id with routing settings, Private Network count and tags. Use for \"Is routing enabled on my Scaleway VPC\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"Scaleway region, for example 'fr-par'. VPCs exist per region.","enum":["fr-par","nl-ams","pl-waw","it-mil"],"title":"Region","type":"string"},"vpc_id":{"description":"Id (UUID) of the VPC, as shown by list_vpcs.","maxLength":64,"title":"Vpc Id","type":"string"}},"required":["region","vpc_id"],"title":"get_vpcArguments","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_private_networks":{"post":{"operationId":"list_private_networks","summary":"List Private Networks in one region with VPC, DHCP flag, subnets and tags. Use for \"Which Private Networks exist in my S","description":"List Private Networks in one region with VPC, DHCP flag, subnets and tags. Use for \"Which Private Networks exist in my Scaleway VPC and what subnets do they use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"Scaleway region, for example 'fr-par'. VPCs exist per region.","enum":["fr-par","nl-ams","pl-waw","it-mil"],"title":"Region","type":"string"},"name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only Private Networks whose name contains this text.","title":"Name"},"vpc_id":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Only Private Networks of this VPC id (UUID).","title":"Vpc Id"},"tags":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only Private Networks with this tag.","title":"Tags"},"dhcp_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list only networks with DHCP enabled.","title":"Dhcp Enabled"},"order_by":{"anyOf":[{"enum":["created_at_asc","created_at_desc","name_asc","name_desc"],"type":"string"},{"type":"null"}],"default":"created_at_asc","description":"Order of the list.","title":"Order By"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Page Size"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["region"],"title":"list_private_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_private_network":{"post":{"operationId":"get_private_network","summary":"Get one Private Network by id with its VPC, DHCP flag, subnets and tags. Use for \"What subnets does my Scaleway Private ","description":"Get one Private Network by id with its VPC, DHCP flag, subnets and tags. Use for \"What subnets does my Scaleway Private Network use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"Scaleway region, for example 'fr-par'. VPCs exist per region.","enum":["fr-par","nl-ams","pl-waw","it-mil"],"title":"Region","type":"string"},"private_network_id":{"description":"Id (UUID) of the Private Network, as shown by list_private_networks.","maxLength":64,"title":"Private Network Id","type":"string"}},"required":["region","private_network_id"],"title":"get_private_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_subnets":{"post":{"operationId":"list_subnets","summary":"List the IP ranges (subnets) of Private Networks in a region, optionally for one VPC. Use for \"Which IP ranges are alloc","description":"List the IP ranges (subnets) of Private Networks in a region, optionally for one VPC. Use for \"Which IP ranges are allocated in my Scaleway VPC\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"Scaleway region, for example 'fr-par'. VPCs exist per region.","enum":["fr-par","nl-ams","pl-waw","it-mil"],"title":"Region","type":"string"},"vpc_id":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Only subnets of this VPC id (UUID).","title":"Vpc Id"},"project_id":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Only subnets of this Project id (UUID).","title":"Project Id"},"order_by":{"anyOf":[{"enum":["created_at_asc","created_at_desc"],"type":"string"},{"type":"null"}],"default":"created_at_asc","description":"Order of the list.","title":"Order By"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Page Size"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["region"],"title":"list_subnetsArguments","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_vpc_connectors":{"post":{"operationId":"list_vpc_connectors","summary":"List VPC connectors that peer two VPCs, with status (peered, orphan or conflict), source and target VPC. Use for \"Which ","description":"List VPC connectors that peer two VPCs, with status (peered, orphan or conflict), source and target VPC. Use for \"Which of my Scaleway VPCs are peered together\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"Scaleway region, for example 'fr-par'. VPCs exist per region.","enum":["fr-par","nl-ams","pl-waw","it-mil"],"title":"Region","type":"string"},"name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only connectors whose name contains this text.","title":"Name"},"vpc_id":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Only connectors of this source VPC id (UUID).","title":"Vpc Id"},"status":{"anyOf":[{"enum":["orphan","peered","conflict"],"type":"string"},{"type":"null"}],"default":null,"description":"Only connectors with this status.","title":"Status"},"order_by":{"anyOf":[{"enum":["created_at_asc","created_at_desc","name_asc","name_desc"],"type":"string"},{"type":"null"}],"default":"created_at_asc","description":"Order of the list.","title":"Order By"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Page Size"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["region"],"title":"list_vpc_connectorsArguments","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_ingress_rules":{"post":{"operationId":"list_ingress_rules","summary":"List routing ingress rules of VPCs with source range, next-hop Private Network and resource IP. Use for \"Which ingress r","description":"List routing ingress rules of VPCs with source range, next-hop Private Network and resource IP. Use for \"Which ingress routing rules are set on my Scaleway VPC\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"Scaleway region, for example 'fr-par'. VPCs exist per region.","enum":["fr-par","nl-ams","pl-waw","it-mil"],"title":"Region","type":"string"},"vpc_id":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Only rules of this VPC id (UUID).","title":"Vpc Id"},"is_ipv6":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list only IPv6 rules.","title":"Is Ipv6"},"order_by":{"anyOf":[{"enum":["created_at_asc","created_at_desc","source_asc","source_desc","prefix_len_asc","prefix_len_desc"],"type":"string"},{"type":"null"}],"default":"created_at_asc","description":"Order of the list.","title":"Order By"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Page Size"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["region"],"title":"list_ingress_rulesArguments","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_vpc_acl":{"post":{"operationId":"get_vpc_acl","summary":"Get the access control rules of one VPC and the default policy (accept or drop), for IPv4 or IPv6. Use for \"What is the ","description":"Get the access control rules of one VPC and the default policy (accept or drop), for IPv4 or IPv6. Use for \"What is the default network ACL policy of my Scaleway VPC\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"Scaleway region, for example 'fr-par'. VPCs exist per region.","enum":["fr-par","nl-ams","pl-waw","it-mil"],"title":"Region","type":"string"},"vpc_id":{"description":"Id (UUID) of the VPC, as shown by list_vpcs.","maxLength":64,"title":"Vpc Id","type":"string"},"is_ipv6":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to read the IPv6 rules, false for IPv4.","title":"Is Ipv6"}},"required":["region","vpc_id"],"title":"get_vpc_aclArguments","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}}}}