{"openapi":"3.1.0","info":{"title":"CloudZero (BYOK) API","version":"0.1.0","description":"CloudZero (BYOK) lets an AI assistant read your own CloudZero data through the CloudZero API with a key you supply (CloudZero API key (sent as the plain Authorization header, no Bearer prefix)). Read-only: 8 tools (get_billing_costs, list_billing_dimensions, list_billing_connections, list_budgets, list_insights, list_views, list_recommendation_types, list_recommendations). The BYOK key travels...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-cloudzero.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-cloudzero/docs"},"termsOfService":"https://connectorbay.com/byok-cloudzero/terms"},"servers":[{"url":"https://byok-cloudzero.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-cloudzero/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_billing_costs":{"post":{"operationId":"get_billing_costs","summary":"Query CloudZero cost data over a date range at hourly to yearly granularity, by cost type. The API allows 60 requests a ","description":"Query CloudZero cost data over a date range at hourly to yearly granularity, by cost type. The API allows 60 requests a day. Use for \"What did we spend per day in CloudZero since the start of October\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start_date":{"description":"Start of the period as an ISO 8601 datetime, for example 2026-10-01T00:00:00Z.","maxLength":200,"title":"Start Date","type":"string"},"end_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"End of the period as an ISO 8601 datetime (default: now).","title":"End Date"},"granularity":{"anyOf":[{"enum":["hourly","daily","weekly","monthly","yearly"],"type":"string"},{"type":"null"}],"default":"daily","description":"Time bucket size.","title":"Granularity"},"cost_type":{"anyOf":[{"enum":["billed_cost","discounted_cost","amortized_cost","discounted_amortized_cost","real_cost","on_demand_cost","invoiced_amortized_cost","usage_amount"],"type":"string"},{"type":"null"}],"default":"real_cost","description":"Which cost measure to return.","title":"Cost Type"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from pagination.cursor.next_cursor of the previous page.","title":"Cursor"}},"required":["start_date"],"title":"get_billing_costsArguments","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_billing_dimensions":{"post":{"operationId":"list_billing_dimensions","summary":"List the cost dimensions (such as provider, service, account, region, tags) available for grouping and CostFormation. Us","description":"List the cost dimensions (such as provider, service, account, region, tags) available for grouping and CostFormation. Use for \"Which cost dimensions can I group CloudZero spend by\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"include_hidden":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Also include dimensions hidden in the CloudZero Explorer.","title":"Include Hidden"}},"title":"list_billing_dimensionsArguments","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_billing_connections":{"post":{"operationId":"list_billing_connections","summary":"List billing connections (AWS, Azure, GCP, AnyCost and others) with type, provider, enabled flag and last update. Use fo","description":"List billing connections (AWS, Azure, GCP, AnyCost and others) with type, provider, enabled flag and last update. Use for \"Which cloud billing connections does CloudZero have and are they enabled\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Number of items per page.","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from pagination.cursor.next_cursor of the previous page.","title":"Cursor"},"sort_key":{"anyOf":[{"enum":["connection_name","creation_date","name","cloud_provider","created","last_updated","is_enabled"],"type":"string"},{"type":"null"}],"default":null,"description":"Field to sort by.","title":"Sort Key"},"sort_order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order.","title":"Sort Order"}},"title":"list_billing_connectionsArguments","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_budgets":{"post":{"operationId":"list_budgets","summary":"List budgets with their view, planned limits, alert settings and current actual versus planned spend. Use for \"How are m","description":"List budgets with their view, planned limits, alert settings and current actual versus planned spend. Use for \"How are my CloudZero budgets tracking against plan\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Number of items per page.","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from pagination.cursor.next_cursor of the previous page.","title":"Cursor"},"sort_key":{"anyOf":[{"enum":["last_updated","name"],"type":"string"},{"type":"null"}],"default":null,"description":"Field to sort by.","title":"Sort Key"},"sort_order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order.","title":"Sort Order"}},"title":"list_budgetsArguments","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_insights":{"post":{"operationId":"list_insights","summary":"List cost insights with title, category, status, effort, cost impact and a link to the details. Use for \"What open cost ","description":"List cost insights with title, category, status, effort, cost impact and a link to the details. Use for \"What open cost insights does CloudZero have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Number of items per page.","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from pagination.cursor.next_cursor of the previous page.","title":"Cursor"},"sort_key":{"anyOf":[{"enum":["category","cost_impact","effort","last_updated","status","title"],"type":"string"},{"type":"null"}],"default":null,"description":"Field to sort by.","title":"Sort Key"},"sort_order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order.","title":"Sort Order"}},"title":"list_insightsArguments","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_views":{"post":{"operationId":"list_views","summary":"List saved views (cost groupings) with filter, principal dimension, anomaly detection settings and notification schedule","description":"List saved views (cost groupings) with filter, principal dimension, anomaly detection settings and notification schedule. Recipient addresses are not included. Use for \"Which CloudZero views have anomaly alerts enabled\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Number of items per page.","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from pagination.cursor.next_cursor of the previous page.","title":"Cursor"},"sort_key":{"anyOf":[{"const":"last_updated","type":"string"},{"type":"null"}],"default":null,"description":"Field to sort by.","title":"Sort Key"},"sort_order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order.","title":"Sort Order"}},"title":"list_viewsArguments","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_recommendation_types":{"post":{"operationId":"list_recommendation_types","summary":"List the savings recommendation types CloudZero checks, with cloud provider, category, effort, status and stage. Use for","description":"List the savings recommendation types CloudZero checks, with cloud provider, category, effort, status and stage. Use for \"Which cost optimization checks does CloudZero run for AWS\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_recommendation_typesArguments","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_recommendations":{"post":{"operationId":"list_recommendations","summary":"List savings recommendations with title, category, effort, status and 30-day cost impact, largest first. Use for \"Which ","description":"List savings recommendations with title, category, effort, status and 30-day cost impact, largest first. Use for \"Which CloudZero recommendations would save the most this month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Free-text search over recommendations.","title":"Search"},"limit":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Number of recommendations to return.","title":"Limit"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Number of recommendations to skip.","title":"Offset"}},"title":"list_recommendationsArguments","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}}}}