{"openapi":"3.1.0","info":{"title":"Recurly Finance Config (BYOK) API","version":"0.1.0","description":"Recurly Finance Config (BYOK) lets an AI assistant read your own Recurly Finance Config data through the Recurly Finance Config API with a key you supply (Recurly private API key (US data center sites)). Read-only: 8 tools (list_general_ledger_accounts, list_performance_obligations, list_business_entities, list_dunning_campaigns, list_invoice_templates, list_custom_field_definitions,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-recurly-finance-config.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-recurly-finance-config/docs"},"termsOfService":"https://connectorbay.com/byok-recurly-finance-config/terms"},"servers":[{"url":"https://byok-recurly-finance-config.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-recurly-finance-config/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_general_ledger_accounts":{"post":{"operationId":"list_general_ledger_accounts","summary":"List general ledger accounts (liability and revenue) with code, description and type, used for revenue recognition. Use ","description":"List general ledger accounts (liability and revenue) with code, description and type, used for revenue recognition. Use for \"Which general ledger accounts does my Recurly site use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_type":{"anyOf":[{"enum":["liability","revenue"],"type":"string"},{"type":"null"}],"default":null,"description":"Only accounts of this type.","title":"Account 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"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Records per page (1 to 200; provider default 20). Page forward by sorting and moving begin_time past the last record.","title":"Limit"}},"title":"list_general_ledger_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/list_performance_obligations":{"post":{"operationId":"list_performance_obligations","summary":"List performance obligations (revenue recognition groupings) with id, name and dates. Use for \"Which performance obligat","description":"List performance obligations (revenue recognition groupings) with id, name and dates. Use for \"Which performance obligations are defined in Recurly\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_performance_obligationsArguments","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_business_entities":{"post":{"operationId":"list_business_entities","summary":"List business entities (the legal sellers on the site) with code, name, VAT and registration numbers, tax address source","description":"List business entities (the legal sellers on the site) with code, name, VAT and registration numbers, tax address sources, subscriber countries and default ledger accounts. Use for \"Which business entities does my Recurly site invoice from\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_business_entitiesArguments","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_dunning_campaigns":{"post":{"operationId":"list_dunning_campaigns","summary":"List dunning campaigns (the retry and reminder schedules for failed payments) with code, name, whether it is the default","description":"List dunning campaigns (the retry and reminder schedules for failed payments) with code, name, whether it is the default, and its cycles. Use for \"How does Recurly retry failed payments on my site\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"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"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Records per page (1 to 200; provider default 20). Page forward by sorting and moving begin_time past the last record.","title":"Limit"}},"title":"list_dunning_campaignsArguments","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_invoice_templates":{"post":{"operationId":"list_invoice_templates","summary":"List invoice templates (layouts used when invoicing) with code, name and description. Use for \"Which invoice templates a","description":"List invoice templates (layouts used when invoicing) with code, name and description. Use for \"Which invoice templates are configured in Recurly\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"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"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Records per page (1 to 200; provider default 20). Page forward by sorting and moving begin_time past the last record.","title":"Limit"}},"title":"list_invoice_templatesArguments","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_custom_field_definitions":{"post":{"operationId":"list_custom_field_definitions","summary":"List custom field definitions (extra fields on accounts, items, plans, subscriptions or charges) with name, related type","description":"List custom field definitions (extra fields on accounts, items, plans, subscriptions or charges) with name, related type and access level. Field values are not returned. Use for \"Which custom fields have I defined in Recurly\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"related_type":{"anyOf":[{"enum":["account","item","plan","subscription","charge"],"type":"string"},{"type":"null"}],"default":null,"description":"Only definitions for this object type.","title":"Related 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). Page forward by sorting and moving begin_time past the last record.","title":"Limit"}},"title":"list_custom_field_definitionsArguments","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_export_dates":{"post":{"operationId":"list_export_dates","summary":"List the dates for which a Recurly data export is available to download. File contents are not fetched. Use for \"For whi","description":"List the dates for which a Recurly data export is available to download. File contents are not fetched. Use for \"For which dates does Recurly have data exports ready\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_export_datesArguments","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_sites":{"post":{"operationId":"list_sites","summary":"List the Recurly sites the key can see with subdomain, mode (development, production or sandbox), enabled features and c","description":"List the Recurly sites the key can see with subdomain, mode (development, production or sandbox), enabled features and creation time. Use for \"Which Recurly sites do I have and in what mode\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"state":{"anyOf":[{"enum":["active","inactive"],"type":"string"},{"type":"null"}],"default":null,"description":"Only sites 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"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Records per page (1 to 200; provider default 20). Page forward by sorting and moving begin_time past the last record.","title":"Limit"}},"title":"list_sitesArguments","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}}}}