{"openapi":"3.1.0","info":{"title":"CDN77 (BYOK) API","version":"0.1.0","description":"CDN77 (BYOK) lets an AI assistant read your own CDN77 data through the CDN77 API with a key you supply (CDN77 API token). Read-only: 12 tools (get_credit_balance, list_cdn_resources, get_cdn_resource, list_cdn_resource_cnames, list_cdn_resource_data_centers, list_data_center_status, list_purge_jobs, get_purge_job, list_origins, list_ssl_certificates, list_object_storage_clusters,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-cdn77.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-cdn77/docs"},"termsOfService":"https://connectorbay.com/byok-cdn77/terms"},"servers":[{"url":"https://byok-cdn77.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-cdn77/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/get_credit_balance":{"post":{"operationId":"get_credit_balance","summary":"Get the pay-as-you-go credit balance, its expiry time and the credit spent in the last 30 days. Use for \"How much CDN77 ","description":"Get the pay-as-you-go credit balance, its expiry time and the credit spent in the last 30 days. Use for \"How much CDN77 credit do I have left\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_credit_balanceArguments","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_cdn_resources":{"post":{"operationId":"list_cdn_resources","summary":"List CDN Resources with label, note, CDN URL, creation time and attached origin. Use for \"Which CDN Resources do I have ","description":"List CDN Resources with label, note, CDN URL, creation time and attached origin. Use for \"Which CDN Resources do I have on CDN77\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_cdn_resourcesArguments","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_cdn_resource":{"post":{"operationId":"get_cdn_resource","summary":"Get one CDN Resource: label, note, URL, creation time, origin and cache and query string settings. Secure token and secr","description":"Get one CDN Resource: label, note, URL, creation time, origin and cache and query string settings. Secure token and secrets are not returned. Use for \"How is CDN77 CDN Resource 1234567890 cached\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cdn_id":{"description":"Id of the CDN Resource, from list_cdn_resources.","title":"Cdn Id","type":"integer"}},"required":["cdn_id"],"title":"get_cdn_resourceArguments","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_cdn_resource_cnames":{"post":{"operationId":"list_cdn_resource_cnames","summary":"List the CNAMEs assigned to a CDN Resource. Use for \"Which domains point at my CDN77 CDN Resource\".","description":"List the CNAMEs assigned to a CDN Resource. Use for \"Which domains point at my CDN77 CDN Resource\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cdn_id":{"description":"Id of the CDN Resource, from list_cdn_resources.","title":"Cdn Id","type":"integer"}},"required":["cdn_id"],"title":"list_cdn_resource_cnamesArguments","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_cdn_resource_data_centers":{"post":{"operationId":"list_cdn_resource_data_centers","summary":"List the data centers a CDN Resource can use, with city, country, coordinates, type (full or cache) and whether each is ","description":"List the data centers a CDN Resource can use, with city, country, coordinates, type (full or cache) and whether each is enabled. Use for \"Which CDN77 data centers serve my CDN Resource\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cdn_id":{"description":"Id of the CDN Resource, from list_cdn_resources.","title":"Cdn Id","type":"integer"}},"required":["cdn_id"],"title":"list_cdn_resource_data_centersArguments","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_data_center_status":{"post":{"operationId":"list_data_center_status","summary":"List the operational status of every CDN77 data center with continent and last update time. Use for \"Are all CDN77 data ","description":"List the operational status of every CDN77 data center with continent and last update time. Use for \"Are all CDN77 data centers operational\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_data_center_statusArguments","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_purge_jobs":{"post":{"operationId":"list_purge_jobs","summary":"List purge jobs of a CDN Resource by type (purge or purge-all) with state, path count and queue and completion times. Us","description":"List purge jobs of a CDN Resource by type (purge or purge-all) with state, path count and queue and completion times. Use for \"Did my last CDN77 purge finish\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cdn_id":{"description":"Id of the CDN Resource, from list_cdn_resources.","title":"Cdn Id","type":"integer"},"type":{"description":"Job type: purge or purge-all.","maxLength":200,"title":"Type","type":"string"}},"required":["cdn_id","type"],"title":"list_purge_jobsArguments","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_purge_job":{"post":{"operationId":"get_purge_job","summary":"Get one purge job: type, state, number of paths and queue and completion times. Use for \"What is the state of CDN77 purg","description":"Get one purge job: type, state, number of paths and queue and completion times. Use for \"What is the state of CDN77 purge job 9880280c\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cdn_id":{"description":"Id of the CDN Resource, from list_cdn_resources.","title":"Cdn Id","type":"integer"},"job_id":{"description":"Id of the job, from list_purge_jobs.","maxLength":200,"title":"Job Id","type":"string"}},"required":["cdn_id","job_id"],"title":"get_purge_jobArguments","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_origins":{"post":{"operationId":"list_origins","summary":"List origins with type (url, aws or object-storage), host, bucket, creation time and stored size and file count. Use for","description":"List origins with type (url, aws or object-storage), host, bucket, creation time and stored size and file count. Use for \"Which origins feed my CDN77 resources\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_originsArguments","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_ssl_certificates":{"post":{"operationId":"list_ssl_certificates","summary":"List SNI SSL certificates with the domains they cover and expiry time. Certificate bodies are not returned. Use for \"Whe","description":"List SNI SSL certificates with the domains they cover and expiry time. Certificate bodies are not returned. Use for \"When do my CDN77 SSL certificates expire\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_ssl_certificatesArguments","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_object_storage_clusters":{"post":{"operationId":"list_object_storage_clusters","summary":"List CDN77 Object Storage clusters with host, label, port, scheme and disk type. Use for \"Which CDN77 object storage clu","description":"List CDN77 Object Storage clusters with host, label, port, scheme and disk type. Use for \"Which CDN77 object storage clusters exist\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_object_storage_clustersArguments","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_raw_log_status":{"post":{"operationId":"list_raw_log_status","summary":"List CDN Resources with their raw log status (active or not) and origin. Use for \"Are raw logs switched on for my CDN77 ","description":"List CDN Resources with their raw log status (active or not) and origin. Use for \"Are raw logs switched on for my CDN77 resources\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_raw_log_statusArguments","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}}}}