{"openapi":"3.1.0","info":{"title":"Paddle Metrics (BYOK) API","version":"0.1.0","description":"Paddle Metrics (BYOK) lets an AI assistant read your own Paddle Metrics data through the Paddle Metrics API with a key you supply (Paddle Billing API key (live environment; sandbox keys use a different host and do not work here)). Read-only: 7 tools (get_mrr_metrics, get_mrr_change_metrics, get_revenue_metrics, get_active_subscribers_metrics, get_refund_metrics, get_chargeback_metrics,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-paddle-metrics.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-paddle-metrics/docs"},"termsOfService":"https://connectorbay.com/byok-paddle-metrics/terms"},"servers":[{"url":"https://byok-paddle-metrics.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-paddle-metrics/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_mrr_metrics":{"post":{"operationId":"get_mrr_metrics","summary":"Get monthly recurring revenue (MRR) over a date range as a daily time series in the account's currency. Amounts are stri","description":"Get monthly recurring revenue (MRR) over a date range as a daily time series in the account's currency. Amounts are strings in the smallest unit. Use for \"What was my Paddle MRR in September\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"from_date":{"description":"First date, YYYY-MM-DD (UTC). Must not be after to_date.","maxLength":10,"title":"From Date","type":"string"},"to_date":{"description":"Last date, YYYY-MM-DD (UTC).","maxLength":10,"title":"To Date","type":"string"}},"required":["from_date","to_date"],"title":"get_mrr_metricsArguments","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_mrr_change_metrics":{"post":{"operationId":"get_mrr_change_metrics","summary":"Get the change in monthly recurring revenue over a date range as a time series, to see growth or churn effects. Use for ","description":"Get the change in monthly recurring revenue over a date range as a time series, to see growth or churn effects. Use for \"How did my Paddle MRR change in September\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"from_date":{"description":"First date, YYYY-MM-DD (UTC). Must not be after to_date.","maxLength":10,"title":"From Date","type":"string"},"to_date":{"description":"Last date, YYYY-MM-DD (UTC).","maxLength":10,"title":"To Date","type":"string"}},"required":["from_date","to_date"],"title":"get_mrr_change_metricsArguments","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_revenue_metrics":{"post":{"operationId":"get_revenue_metrics","summary":"Get net revenue over a date range as a time series in the account's currency. Amounts are strings in the smallest unit. ","description":"Get net revenue over a date range as a time series in the account's currency. Amounts are strings in the smallest unit. Use for \"How much net revenue did Paddle record in September\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"from_date":{"description":"First date, YYYY-MM-DD (UTC). Must not be after to_date.","maxLength":10,"title":"From Date","type":"string"},"to_date":{"description":"Last date, YYYY-MM-DD (UTC).","maxLength":10,"title":"To Date","type":"string"}},"required":["from_date","to_date"],"title":"get_revenue_metricsArguments","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_active_subscribers_metrics":{"post":{"operationId":"get_active_subscribers_metrics","summary":"Get the number of paying active subscribers over a date range as a daily time series (trialing users are not counted). U","description":"Get the number of paying active subscribers over a date range as a daily time series (trialing users are not counted). Use for \"How many active Paddle subscribers did I have in September\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"from_date":{"description":"First date, YYYY-MM-DD (UTC). Must not be after to_date.","maxLength":10,"title":"From Date","type":"string"},"to_date":{"description":"Last date, YYYY-MM-DD (UTC).","maxLength":10,"title":"To Date","type":"string"}},"required":["from_date","to_date"],"title":"get_active_subscribers_metricsArguments","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_refund_metrics":{"post":{"operationId":"get_refund_metrics","summary":"Get the value of refunds over a date range as a time series in the account's currency. Amounts are strings in the smalle","description":"Get the value of refunds over a date range as a time series in the account's currency. Amounts are strings in the smallest unit. Use for \"How much did I refund through Paddle in September\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"from_date":{"description":"First date, YYYY-MM-DD (UTC). Must not be after to_date.","maxLength":10,"title":"From Date","type":"string"},"to_date":{"description":"Last date, YYYY-MM-DD (UTC).","maxLength":10,"title":"To Date","type":"string"}},"required":["from_date","to_date"],"title":"get_refund_metricsArguments","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_chargeback_metrics":{"post":{"operationId":"get_chargeback_metrics","summary":"Get chargebacks over a date range as a time series. Use for \"How many Paddle chargebacks did I get in September\".","description":"Get chargebacks over a date range as a time series. Use for \"How many Paddle chargebacks did I get in September\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"from_date":{"description":"First date, YYYY-MM-DD (UTC). Must not be after to_date.","maxLength":10,"title":"From Date","type":"string"},"to_date":{"description":"Last date, YYYY-MM-DD (UTC).","maxLength":10,"title":"To Date","type":"string"}},"required":["from_date","to_date"],"title":"get_chargeback_metricsArguments","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_checkout_conversion_metrics":{"post":{"operationId":"get_checkout_conversion_metrics","summary":"Get checkout conversion over a date range as a time series. Use for \"What was my Paddle checkout conversion in September","description":"Get checkout conversion over a date range as a time series. Use for \"What was my Paddle checkout conversion in September\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"from_date":{"description":"First date, YYYY-MM-DD (UTC). Must not be after to_date.","maxLength":10,"title":"From Date","type":"string"},"to_date":{"description":"Last date, YYYY-MM-DD (UTC).","maxLength":10,"title":"To Date","type":"string"}},"required":["from_date","to_date"],"title":"get_checkout_conversion_metricsArguments","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}}}}