{"openapi":"3.1.0","info":{"title":"Fastly (BYOK) API","version":"0.1.0","description":"Fastly (BYOK) lets an AI assistant read your own Fastly data through the Fastly API with a key you supply (API token (read scope is enough)). Read-only: 9 tools (list_services, search_service, get_service_details, list_versions, list_domains, list_backends, get_service_stats, get_account_usage_by_service, get_current_customer). 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-fastly.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-fastly/docs"},"termsOfService":"https://connectorbay.com/byok-fastly/terms"},"servers":[{"url":"https://byok-fastly.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-fastly/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_services":{"post":{"operationId":"list_services","summary":"List the Fastly services of the account with name, type (vcl or wasm), comment, paused flag and dates. Use for \"Which Fa","description":"List the Fastly services of the account with name, type (vcl or wasm), comment, paused flag and dates. Use for \"Which Fastly services do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sort":{"anyOf":[{"maxLength":50,"type":"string"},{"type":"null"}],"default":null,"description":"Name of the field to sort the services by.","title":"Sort"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many services per page (1 to 100).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"title":"list_servicesArguments","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_service":{"post":{"operationId":"search_service","summary":"Find one Fastly service by its exact name. Use for \"Find the Fastly service called www.example.com\".","description":"Find one Fastly service by its exact name. Use for \"Find the Fastly service called www.example.com\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"Exact name of the service.","maxLength":200,"title":"Name","type":"string"}},"required":["name"],"title":"search_serviceArguments","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_service_details":{"post":{"operationId":"get_service_details","summary":"Get one service with its active (or a chosen) version: the number, domains and backends configured on it. Use for \"What ","description":"Get one service with its active (or a chosen) version: the number, domains and backends configured on it. Use for \"What domains and backends does Fastly service SU1Z0isxPaozGVKXdv0eY use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"service_id":{"description":"Fastly service id (alphanumeric), from list_services, for example 'SU1Z0isxPaozGVKXdv0eY'.","maxLength":64,"title":"Service Id","type":"string"},"version":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Version number to show; leave out for the active version.","title":"Version"}},"required":["service_id"],"title":"get_service_detailsArguments","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_versions":{"post":{"operationId":"list_versions","summary":"List the configuration versions of a service with number, active and locked flags, comment and dates. Use for \"Which ver","description":"List the configuration versions of a service with number, active and locked flags, comment and dates. Use for \"Which version of Fastly service SU1Z0isxPaozGVKXdv0eY is active\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"service_id":{"description":"Fastly service id (alphanumeric), from list_services, for example 'SU1Z0isxPaozGVKXdv0eY'.","maxLength":64,"title":"Service Id","type":"string"}},"required":["service_id"],"title":"list_versionsArguments","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_domains":{"post":{"operationId":"list_domains","summary":"List the domains configured on one version of a service. Use for \"Which domains are on Fastly service SU1Z0isxPaozGVKXdv","description":"List the domains configured on one version of a service. Use for \"Which domains are on Fastly service SU1Z0isxPaozGVKXdv0eY\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"service_id":{"description":"Fastly service id (alphanumeric), from list_services, for example 'SU1Z0isxPaozGVKXdv0eY'.","maxLength":64,"title":"Service Id","type":"string"},"version_id":{"description":"Service version number, from list_versions or the service's active version.","maximum":100000,"minimum":1,"title":"Version Id","type":"integer"}},"required":["service_id","version_id"],"title":"list_domainsArguments","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_backends":{"post":{"operationId":"list_backends","summary":"List the origin servers (backends) of one version of a service with address, port, TLS and timeout settings. Use for \"Wh","description":"List the origin servers (backends) of one version of a service with address, port, TLS and timeout settings. Use for \"What origin servers does Fastly service SU1Z0isxPaozGVKXdv0eY use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"service_id":{"description":"Fastly service id (alphanumeric), from list_services, for example 'SU1Z0isxPaozGVKXdv0eY'.","maxLength":64,"title":"Service Id","type":"string"},"version_id":{"description":"Service version number, from list_versions or the service's active version.","maximum":100000,"minimum":1,"title":"Version Id","type":"integer"}},"required":["service_id","version_id"],"title":"list_backendsArguments","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_service_stats":{"post":{"operationId":"get_service_stats","summary":"Get historical delivery statistics of one service per hour, minute or day: requests, hits, misses, hit ratio, bandwidth ","description":"Get historical delivery statistics of one service per hour, minute or day: requests, hits, misses, hit ratio, bandwidth and status code counts. Hourly data goes back 375 days, minutely 35 days. Use for \"How many requests and what cache hit ratio did Fastly service SU1Z0isxPaozGVKXdv0eY have yesterday\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"service_id":{"description":"Fastly service id (alphanumeric), from list_services, for example 'SU1Z0isxPaozGVKXdv0eY'.","maxLength":64,"title":"Service Id","type":"string"},"by":{"anyOf":[{"enum":["hour","minute","day"],"type":"string"},{"type":"null"}],"default":"day","description":"Sample window: hour, minute or day (default day).","title":"By"},"from_time":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Unix timestamp or a phrase such as 'yesterday' or '2 days ago' (UTC). Start of the range.","title":"From Time"},"to_time":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Unix timestamp or a phrase such as 'yesterday' or '2 days ago' (UTC). End of the range.","title":"To Time"},"region":{"anyOf":[{"enum":["usa","europe","anzac","asia","asia_india","asia_southkorea","africa_std","mexico","southamerica_std"],"type":"string"},{"type":"null"}],"default":null,"description":"Limit to one region.","title":"Region"}},"required":["service_id"],"title":"get_service_statsArguments","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_account_usage_by_service":{"post":{"operationId":"get_account_usage_by_service","summary":"Get usage information aggregated by service and region for the account over a time range (the answer is returned as Fast","description":"Get usage information aggregated by service and region for the account over a time range (the answer is returned as Fastly sends it). Use for \"Which of my Fastly services used the most bandwidth recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"from_time":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Unix timestamp or a phrase such as 'yesterday' or '2 days ago' (UTC). Start of the range.","title":"From Time"},"to_time":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Unix timestamp or a phrase such as 'yesterday' or '2 days ago' (UTC). End of the range.","title":"To Time"}},"title":"get_account_usage_by_serviceArguments","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_customer":{"post":{"operationId":"get_current_customer","summary":"Show the Fastly customer account the token belongs to: name, pricing plan and whether 2FA or SSO is enforced. Use for \"W","description":"Show the Fastly customer account the token belongs to: name, pricing plan and whether 2FA or SSO is enforced. Use for \"Which Fastly account and plan am I on\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_current_customerArguments","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}}}}