{"openapi":"3.1.0","info":{"title":"Digital Ocean Billing (BYOK) API","version":"0.1.0","description":"Digital Ocean Billing (BYOK) lets an AI assistant read your own Digital Ocean Billing data through the Digital Ocean Billing API with a key you supply (personal access token with billing read scope). Read-only: 5 tools (get_invoice_summary, get_invoice_items, get_prepayment_status, get_prepayment_config, get_billing_insights). The BYOK key travels with each request, is used for that one call only...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-digitalocean-billing.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-digitalocean-billing/docs"},"termsOfService":"https://connectorbay.com/byok-digitalocean-billing/terms"},"servers":[{"url":"https://byok-digitalocean-billing.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-digitalocean-billing/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_invoice_summary":{"post":{"operationId":"get_invoice_summary","summary":"Get the summary of one invoice: billing period, total, and charge groups (products, overages, taxes, credits). Billing a","description":"Get the summary of one invoice: billing period, total, and charge groups (products, overages, taxes, credits). Billing address and contact details are left out. Use for \"What did I pay for on my last DigitalOcean invoice\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"invoice_uuid":{"description":"Invoice UUID, as returned by the invoices list of the main DigitalOcean connector.","maxLength":64,"title":"Invoice Uuid","type":"string"}},"required":["invoice_uuid"],"title":"get_invoice_summaryArguments","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_invoice_items":{"post":{"operationId":"get_invoice_items","summary":"List the line items of one invoice: product, resource, description, amount, duration and project. Use for \"Which resourc","description":"List the line items of one invoice: product, resource, description, amount, duration and project. Use for \"Which resources cost the most on invoice 22737513\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"invoice_uuid":{"description":"Invoice UUID, as returned by the invoices list of the main DigitalOcean connector.","maxLength":64,"title":"Invoice Uuid","type":"string"},"per_page":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 200).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1; meta.total says how many items exist.","title":"Page"}},"required":["invoice_uuid"],"title":"get_invoice_itemsArguments","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_prepayment_status":{"post":{"operationId":"get_prepayment_status","summary":"Get the prepayment status: balance, month-to-date balance, auto-prepay flag, blocked flag and eligibility. Use for \"Is a","description":"Get the prepayment status: balance, month-to-date balance, auto-prepay flag, blocked flag and eligibility. Use for \"Is auto prepay enabled on my DigitalOcean account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_prepayment_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/get_prepayment_config":{"post":{"operationId":"get_prepayment_config","summary":"Get the prepayment configuration: spend limit, auto-prepay flag, prepay amount and threshold. Use for \"What is my Digita","description":"Get the prepayment configuration: spend limit, auto-prepay flag, prepay amount and threshold. Use for \"What is my DigitalOcean spend limit\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_prepayment_configArguments","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_billing_insights":{"post":{"operationId":"get_billing_insights","summary":"Get billing insights for a date range: cost data points by SKU, region and team with description and amount. Paged by pe","description":"Get billing insights for a date range: cost data points by SKU, region and team with description and amount. Paged by per_page and page. Use for \"How much did each DigitalOcean product cost in September\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_urn":{"description":"Team URN of the billing account, for example do:team:5a4981aa-9653-4bd1-bef5-d6bff52042e4.","maxLength":100,"title":"Account Urn","type":"string"},"start_date":{"description":"First day of the range, YYYY-MM-DD.","maxLength":10,"title":"Start Date","type":"string"},"end_date":{"description":"Last day of the range, YYYY-MM-DD.","maxLength":10,"title":"End Date","type":"string"},"per_page":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 200).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1; meta.total says how many items exist.","title":"Page"}},"required":["account_urn","start_date","end_date"],"title":"get_billing_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}}}}