{"openapi":"3.1.0","info":{"title":"Recurly (BYOK) API","version":"0.1.0","description":"Recurly (BYOK) lets an AI assistant read your own Recurly data through the Recurly API with a key you supply (Recurly private API key (US data center sites)). Read-only: 8 tools (list_accounts, get_account, list_subscriptions, get_subscription, list_invoices, get_invoice, list_transactions, list_plans). The BYOK key travels with each request, is used for that one call only and is never stored,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-recurly.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-recurly/docs"},"termsOfService":"https://connectorbay.com/byok-recurly/terms"},"servers":[{"url":"https://byok-recurly.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-recurly/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_accounts":{"post":{"operationId":"list_accounts","summary":"List Recurly accounts (customers) with code, email, name, company, state and whether they have live, active, canceled or","description":"List Recurly accounts (customers) with code, email, name, company, state and whether they have live, active, canceled or past-due subscriptions or invoices. When has_more is true, request the next page by raising begin_time to the last record's time with sort and order set accordingly. Use for \"Find the Recurly account with email jo@example.com\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"email":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only accounts with exactly this email address.","title":"Email"},"subscriber":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for accounts with a subscription in the active, canceled or future state, false for those without.","title":"Subscriber"},"past_due":{"anyOf":[{"const":"true","type":"string"},{"type":"null"}],"default":null,"description":"Pass 'true' to list only accounts with a past-due invoice.","title":"Past Due"},"sort":{"anyOf":[{"enum":["created_at","updated_at"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort field: created_at or updated_at (default created_at).","title":"Sort"},"order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"desc","description":"Sort order: asc (oldest first) or desc (newest first).","title":"Order"},"begin_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only records at or after this ISO 8601 time (applies to the sort field), for example 2026-09-01T00:00:00Z.","title":"Begin Time"},"end_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only records at or before this ISO 8601 time (applies to the sort field).","title":"End Time"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Records per page (1 to 200; provider default 20).","title":"Limit"}},"title":"list_accountsArguments","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":{"post":{"operationId":"get_account","summary":"Get one Recurly account with contact details, state, subscription flags and dates. Use for \"Show the details of Recurly ","description":"Get one Recurly account with contact details, state, subscription flags and dates. Use for \"Show the details of Recurly account code-jo\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Recurly account ID, or 'code-' followed by the account code (for example 'code-jo').","maxLength":200,"title":"Account Id","type":"string"}},"required":["account_id"],"title":"get_accountArguments","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_subscriptions":{"post":{"operationId":"list_subscriptions","summary":"List Recurly subscriptions with account, plan, state, amounts, current period, trial and cancel dates. Amounts are decim","description":"List Recurly subscriptions with account, plan, state, amounts, current period, trial and cancel dates. Amounts are decimal values in the subscription's currency. When has_more is true, request the next page by raising begin_time to the last record's time with sort and order set accordingly. Use for \"Which Recurly subscriptions are active and when do their periods end\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"state":{"anyOf":[{"enum":["active","canceled","expired","future","in_trial","live"],"type":"string"},{"type":"null"}],"default":null,"description":"Only subscriptions in this state: active, canceled, expired, future, in_trial or live (active plus in_trial and similar).","title":"State"},"sort":{"anyOf":[{"enum":["created_at","updated_at"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort field: created_at or updated_at (default created_at).","title":"Sort"},"order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"desc","description":"Sort order: asc (oldest first) or desc (newest first).","title":"Order"},"begin_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only records at or after this ISO 8601 time (applies to the sort field), for example 2026-09-01T00:00:00Z.","title":"Begin Time"},"end_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only records at or before this ISO 8601 time (applies to the sort field).","title":"End Time"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Records per page (1 to 200; provider default 20).","title":"Limit"}},"title":"list_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 Recurly subscription with account, plan, state, price, period dates, renewal settings and add-on total. Use for ","description":"Get one Recurly subscription with account, plan, state, price, period dates, renewal settings and add-on total. Use for \"Show the details of Recurly subscription sub123\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subscription_id":{"description":"Recurly subscription ID, or 'uuid-' followed by its UUID.","maxLength":200,"title":"Subscription Id","type":"string"}},"required":["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}},"/v1/tools/list_invoices":{"post":{"operationId":"list_invoices","summary":"List Recurly invoices with number, state, account, totals, amount paid, balance and due date. Amounts are decimal values","description":"List Recurly invoices with number, state, account, totals, amount paid, balance and due date. Amounts are decimal values in the invoice currency. When has_more is true, request the next page by raising begin_time to the last record's time with sort and order set accordingly. Use for \"Which Recurly invoices are past due\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"state":{"anyOf":[{"enum":["pending","processing","past_due","paid","failed","open","closed","voided"],"type":"string"},{"type":"null"}],"default":null,"description":"Only invoices in this state.","title":"State"},"type":{"anyOf":[{"enum":["charge","credit","legacy","non-legacy"],"type":"string"},{"type":"null"}],"default":null,"description":"Only invoices of this type.","title":"Type"},"sort":{"anyOf":[{"enum":["created_at","updated_at"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort field: created_at or updated_at (default created_at).","title":"Sort"},"order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"desc","description":"Sort order: asc (oldest first) or desc (newest first).","title":"Order"},"begin_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only records at or after this ISO 8601 time (applies to the sort field), for example 2026-09-01T00:00:00Z.","title":"Begin Time"},"end_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only records at or before this ISO 8601 time (applies to the sort field).","title":"End Time"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Records per page (1 to 200; provider default 20).","title":"Limit"}},"title":"list_invoicesArguments","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":{"post":{"operationId":"get_invoice","summary":"Get one Recurly invoice with state, totals, tax, balance and dates. Use for \"Show Recurly invoice 1001\".","description":"Get one Recurly invoice with state, totals, tax, balance and dates. Use for \"Show Recurly invoice 1001\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"invoice_id":{"description":"Recurly invoice ID, or 'number-' followed by the invoice number (for example 'number-1001').","maxLength":200,"title":"Invoice Id","type":"string"}},"required":["invoice_id"],"title":"get_invoiceArguments","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_transactions":{"post":{"operationId":"list_transactions","summary":"List Recurly payment transactions (purchases, refunds, authorizations) with type, status, amount, account and gateway me","description":"List Recurly payment transactions (purchases, refunds, authorizations) with type, status, amount, account and gateway message. When has_more is true, request the next page by raising begin_time to the last record's time with sort and order set accordingly. Use for \"What payments did Recurly process recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"type":{"anyOf":[{"enum":["authorization","capture","payment","purchase","refund","verify"],"type":"string"},{"type":"null"}],"default":null,"description":"Only transactions of this type.","title":"Type"},"success":{"anyOf":[{"const":"true","type":"string"},{"type":"null"}],"default":null,"description":"Pass 'true' to list only successful transactions.","title":"Success"},"sort":{"anyOf":[{"enum":["created_at","updated_at"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort field: created_at or updated_at (default created_at).","title":"Sort"},"order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"desc","description":"Sort order: asc (oldest first) or desc (newest first).","title":"Order"},"begin_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only records at or after this ISO 8601 time (applies to the sort field), for example 2026-09-01T00:00:00Z.","title":"Begin Time"},"end_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only records at or before this ISO 8601 time (applies to the sort field).","title":"End Time"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Records per page (1 to 200; provider default 20).","title":"Limit"}},"title":"list_transactionsArguments","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_plans":{"post":{"operationId":"list_plans","summary":"List Recurly plans with code, name, state, billing interval, trial and prices per currency. Use for \"What plans do I hav","description":"List Recurly plans with code, name, state, billing interval, trial and prices per currency. Use for \"What plans do I have in Recurly\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"state":{"anyOf":[{"enum":["active","inactive"],"type":"string"},{"type":"null"}],"default":null,"description":"Only plans in this state.","title":"State"},"sort":{"anyOf":[{"enum":["created_at","updated_at"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort field: created_at or updated_at (default created_at).","title":"Sort"},"order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"desc","description":"Sort order: asc (oldest first) or desc (newest first).","title":"Order"},"begin_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only records at or after this ISO 8601 time (applies to the sort field), for example 2026-09-01T00:00:00Z.","title":"Begin Time"},"end_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only records at or before this ISO 8601 time (applies to the sort field).","title":"End Time"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Records per page (1 to 200; provider default 20).","title":"Limit"}},"title":"list_plansArguments","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}}}}