{"openapi":"3.1.0","info":{"title":"RevenueCat (BYOK) API","version":"0.1.0","description":"RevenueCat (BYOK) lets an AI assistant read your own RevenueCat data through the RevenueCat API with a key you supply (v2 secret API key (read-only permissions)). Read-only: 11 tools (list_projects, list_apps, list_products, list_entitlements, list_offerings, get_overview_metrics, get_revenue_total, get_chart_data, search_customers, list_customer_subscriptions, get_subscription). The BYOK key...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-revenuecat.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-revenuecat/docs"},"termsOfService":"https://connectorbay.com/byok-revenuecat/terms"},"servers":[{"url":"https://byok-revenuecat.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-revenuecat/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_projects":{"post":{"operationId":"list_projects","summary":"List the RevenueCat projects the key can see with id, name and creation time (epoch milliseconds). Use for \"Which Revenu","description":"List the RevenueCat projects the key can see with id, name and creation time (epoch milliseconds). Use for \"Which RevenueCat projects do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Items per page (1 to 100; larger values are clamped by RevenueCat).","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":255,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: the id of the last item of the previous page; leave empty for the first page.","title":"Starting After"}},"title":"list_projectsArguments","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_apps":{"post":{"operationId":"list_apps","summary":"List the apps of a project (iOS, Android, Amazon, web and so on) with id, name and store type. Use for \"Which apps are i","description":"List the apps of a project (iOS, Android, Amazon, web and so on) with id, name and store type. Use for \"Which apps are in my RevenueCat project\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"RevenueCat project id, for example 'proj1ab2c3d4' (from list_projects).","maxLength":200,"title":"Project Id","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Items per page (1 to 100; larger values are clamped by RevenueCat).","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":255,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: the id of the last item of the previous page; leave empty for the first page.","title":"Starting After"}},"required":["project_id"],"title":"list_appsArguments","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_products":{"post":{"operationId":"list_products","summary":"List the store products of a project with store identifier, type (subscription or one-time), state and subscription dura","description":"List the store products of a project with store identifier, type (subscription or one-time), state and subscription duration and trial length. Use for \"What products are set up in my RevenueCat project\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"RevenueCat project id, for example 'proj1ab2c3d4' (from list_projects).","maxLength":200,"title":"Project Id","type":"string"},"app_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only products of this app id.","title":"App Id"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Items per page (1 to 100; larger values are clamped by RevenueCat).","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":255,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: the id of the last item of the previous page; leave empty for the first page.","title":"Starting After"}},"required":["project_id"],"title":"list_productsArguments","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_entitlements":{"post":{"operationId":"list_entitlements","summary":"List the entitlements of a project (the access levels products unlock) with lookup key, display name and state. Use for ","description":"List the entitlements of a project (the access levels products unlock) with lookup key, display name and state. Use for \"What entitlements does my RevenueCat project define\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"RevenueCat project id, for example 'proj1ab2c3d4' (from list_projects).","maxLength":200,"title":"Project Id","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Items per page (1 to 100; larger values are clamped by RevenueCat).","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":255,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: the id of the last item of the previous page; leave empty for the first page.","title":"Starting After"}},"required":["project_id"],"title":"list_entitlementsArguments","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_offerings":{"post":{"operationId":"list_offerings","summary":"List the offerings of a project (the sets of packages shown to customers) with lookup key, display name and whether it i","description":"List the offerings of a project (the sets of packages shown to customers) with lookup key, display name and whether it is the current one. Use for \"Which offering is current in my RevenueCat project\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"RevenueCat project id, for example 'proj1ab2c3d4' (from list_projects).","maxLength":200,"title":"Project Id","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Items per page (1 to 100; larger values are clamped by RevenueCat).","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":255,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: the id of the last item of the previous page; leave empty for the first page.","title":"Starting After"}},"required":["project_id"],"title":"list_offeringsArguments","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_overview_metrics":{"post":{"operationId":"get_overview_metrics","summary":"Get the dashboard overview numbers of a project (active trials, active subscriptions, MRR, revenue and similar) with nam","description":"Get the dashboard overview numbers of a project (active trials, active subscriptions, MRR, revenue and similar) with name, unit and value. Use for \"What are my current RevenueCat overview metrics\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"RevenueCat project id, for example 'proj1ab2c3d4' (from list_projects).","maxLength":200,"title":"Project Id","type":"string"},"currency":{"anyOf":[{"maxLength":3,"type":"string"},{"type":"null"}],"default":null,"description":"ISO 4217 currency code to report money in, for example USD or EUR (default: the project's own currency).","title":"Currency"}},"required":["project_id"],"title":"get_overview_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_total":{"post":{"operationId":"get_revenue_total","summary":"Get the total revenue of a project for an inclusive date range, as gross revenue, revenue net of taxes or proceeds after","description":"Get the total revenue of a project for an inclusive date range, as gross revenue, revenue net of taxes or proceeds after store commission. Use for \"What were my RevenueCat proceeds in September 2026\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"RevenueCat project id, for example 'proj1ab2c3d4' (from list_projects).","maxLength":200,"title":"Project Id","type":"string"},"start_date":{"description":"First day, YYYY-MM-DD.","maxLength":10,"title":"Start Date","type":"string"},"end_date":{"description":"Last day (inclusive), YYYY-MM-DD.","maxLength":10,"title":"End Date","type":"string"},"revenue_type":{"anyOf":[{"enum":["revenue","revenue_net_of_taxes","proceeds"],"type":"string"},{"type":"null"}],"default":"revenue","description":"Which total: revenue (gross, default), revenue_net_of_taxes or proceeds (after taxes and store commission).","title":"Revenue Type"},"currency":{"anyOf":[{"maxLength":3,"type":"string"},{"type":"null"}],"default":null,"description":"ISO 4217 currency code to report money in, for example USD or EUR (default: the project's own currency).","title":"Currency"}},"required":["project_id","start_date","end_date"],"title":"get_revenue_totalArguments","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_chart_data":{"post":{"operationId":"get_chart_data","summary":"Get time-series data of a RevenueCat chart (revenue, mrr, arr, churn, actives, actives_new, trials_new, customers_new, r","description":"Get time-series data of a RevenueCat chart (revenue, mrr, arr, churn, actives, actives_new, trials_new, customers_new, refund_rate and others) for a date range. Limited to 25 requests per minute. Use for \"Show my monthly recurring revenue chart for 2026\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"RevenueCat project id, for example 'proj1ab2c3d4' (from list_projects).","maxLength":200,"title":"Project Id","type":"string"},"chart_name":{"description":"Chart name, for example revenue, mrr, arr, churn, actives, actives_new, trials, trials_new, customers_new, refund_rate, conversion_to_paying.","maxLength":200,"title":"Chart Name","type":"string"},"start_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"First day, YYYY-MM-DD.","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Last day, YYYY-MM-DD.","title":"End Date"},"aggregate":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated summary operations instead of raw values: average, total.","title":"Aggregate"},"currency":{"anyOf":[{"maxLength":3,"type":"string"},{"type":"null"}],"default":null,"description":"ISO 4217 currency code to report money in, for example USD or EUR (default: the project's own currency).","title":"Currency"}},"required":["project_id","chart_name"],"title":"get_chart_dataArguments","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_customers":{"post":{"operationId":"search_customers","summary":"List customers of a project, or find one by exact email attribute, app user id or store transaction id. Returns id, firs","description":"List customers of a project, or find one by exact email attribute, app user id or store transaction id. Returns id, first and last seen, country, platform and app version. Use for \"Find the RevenueCat customer with email garfield@example.com\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"RevenueCat project id, for example 'proj1ab2c3d4' (from list_projects).","maxLength":200,"title":"Project Id","type":"string"},"search":{"anyOf":[{"maxLength":255,"type":"string"},{"type":"null"}],"default":null,"description":"Exact email, app user id, store transaction id or Apple order id to look for.","title":"Search"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Items per page (1 to 100; larger values are clamped by RevenueCat).","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":255,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: the id of the last item of the previous page; leave empty for the first page.","title":"Starting After"}},"required":["project_id"],"title":"search_customersArguments","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_customer_subscriptions":{"post":{"operationId":"list_customer_subscriptions","summary":"List the subscriptions of one customer with product, status, renewal setting, store, period end and lifetime revenue in ","description":"List the subscriptions of one customer with product, status, renewal setting, store, period end and lifetime revenue in USD. Use for \"What subscriptions does customer 19b8de26 have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"RevenueCat project id, for example 'proj1ab2c3d4' (from list_projects).","maxLength":200,"title":"Project Id","type":"string"},"customer_id":{"description":"Customer id (app user id), 1 to 1500 characters.","maxLength":200,"title":"Customer Id","type":"string"},"environment":{"anyOf":[{"enum":["sandbox","production"],"type":"string"},{"type":"null"}],"default":null,"description":"Only sandbox or production subscriptions (default both).","title":"Environment"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Items per page (1 to 100; larger values are clamped by RevenueCat).","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":255,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: the id of the last item of the previous page; leave empty for the first page.","title":"Starting After"}},"required":["project_id","customer_id"],"title":"list_customer_subscriptionsArguments","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_subscription":{"post":{"operationId":"get_subscription","summary":"Get one subscription by its RevenueCat subscription id with status, renewal setting, store, periods and revenue in USD. ","description":"Get one subscription by its RevenueCat subscription id with status, renewal setting, store, periods and revenue in USD. Use for \"Show the details of subscription sub1ab2c3d4e5\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"RevenueCat project id, for example 'proj1ab2c3d4' (from list_projects).","maxLength":200,"title":"Project Id","type":"string"},"subscription_id":{"description":"RevenueCat subscription id, for example 'sub1ab2c3d4e5'.","maxLength":200,"title":"Subscription Id","type":"string"}},"required":["project_id","subscription_id"],"title":"get_subscriptionArguments","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}}}}