{"openapi":"3.1.0","info":{"title":"Hyperline (BYOK) API","version":"0.1.0","description":"Hyperline (BYOK) lets an AI assistant read your own Hyperline data through the Hyperline API with a key you supply (Hyperline API key (production)). Read-only: 10 tools (get_analytics, list_customers, get_customer, list_subscriptions, list_invoices, list_products, list_transactions, list_ledger_accounts, list_tax_rates, list_quotes). The BYOK key travels with each request, is used for that one...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-hyperline.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-hyperline/docs"},"termsOfService":"https://connectorbay.com/byok-hyperline/terms"},"servers":[{"url":"https://byok-hyperline.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-hyperline/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_analytics":{"post":{"operationId":"get_analytics","summary":"Headline billing numbers: ARR, MRR, active and pending ARR, revenue and churn over the last 30 days. Can be limited to o","description":"Headline billing numbers: ARR, MRR, active and pending ARR, revenue and churn over the last 30 days. Can be limited to one invoicing entity. Use for \"What are our ARR, MRR and 30-day churn in Hyperline\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"invoicing_entity_id":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Only this invoicing entity (id).","title":"Invoicing Entity Id"}},"title":"get_analyticsArguments","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_customers":{"post":{"operationId":"list_customers","summary":"List customers with name, type, status, currency, country, billing email, external id and payment terms. Cursor-paged. U","description":"List customers with name, type, status, currency, country, billing email, external id and payment terms. Cursor-paged. Use for \"Which active customers do we have in Hyperline\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results per page (1 to 100).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor: the next_cursor value of the previous answer.","title":"Cursor"},"status":{"anyOf":[{"enum":["all","active","inactive","imported","archived"],"type":"string"},{"type":"null"}],"default":null,"description":"Only customers in this state.","title":"Status"},"type":{"anyOf":[{"enum":["corporate","person"],"type":"string"},{"type":"null"}],"default":null,"description":"Only corporate customers or persons.","title":"Type"},"search":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Search text matched against customer fields.","title":"Search"},"currency":{"anyOf":[{"maxLength":3,"type":"string"},{"type":"null"}],"default":null,"description":"Only customers billed in this currency (ISO 4217).","title":"Currency"},"country":{"anyOf":[{"maxLength":2,"type":"string"},{"type":"null"}],"default":null,"description":"Only customers in this country (ISO 3166-1 alpha-2).","title":"Country"},"external_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only the customer with this external id.","title":"External Id"},"include_total":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to include the total count in the answer.","title":"Include Total"}},"title":"list_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/get_customer":{"post":{"operationId":"get_customer","summary":"Get one customer by id: contact, currency, country, status and payment terms. Use for \"Show Hyperline customer cus_1\".","description":"Get one customer by id: contact, currency, country, status and payment terms. Use for \"Show Hyperline customer cus_1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Hyperline customer id, for example 'cus_abc123'.","maxLength":200,"title":"Id","type":"string"}},"required":["id"],"title":"get_customerArguments","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 subscriptions with status, currency, customer, plan, contract dates, estimated ARR, contract value and next payment","description":"List subscriptions with status, currency, customer, plan, contract dates, estimated ARR, contract value and next payment. Paged with take and skip. Use for \"Which Hyperline subscriptions are active and what ARR do they carry\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"take":{"anyOf":[{"maximum":100,"minimum":0,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (0 to 100).","title":"Take"},"skip":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging.","title":"Skip"},"status":{"anyOf":[{"enum":["all","any","inactive","active","errored","cancelled","paused","pending","draft","voided","archived"],"type":"string"},{"type":"null"}],"default":null,"description":"Only subscriptions in this state.","title":"Status"},"customer_id":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Only subscriptions of this customer id.","title":"Customer Id"},"plan_id":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Only subscriptions on this plan id.","title":"Plan Id"},"currency":{"anyOf":[{"maxLength":3,"type":"string"},{"type":"null"}],"default":null,"description":"Only subscriptions in this currency (ISO 4217).","title":"Currency"}},"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/list_invoices":{"post":{"operationId":"list_invoices","summary":"List invoices with number, type, status, amounts (total, due, paid, tax), currency, dates and a public link. Cursor-page","description":"List invoices with number, type, status, amounts (total, due, paid, tax), currency, dates and a public link. Cursor-paged, newest first by default. Use for \"Which Hyperline invoices are late or outstanding\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results per page (1 to 100).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor: the next_cursor value of the previous answer.","title":"Cursor"},"status":{"anyOf":[{"enum":["all","open","grace_period","to_pay","to_reconcile","error","paid","settleable","finalized","partially_paid","outstanding","refunded","late","draft","pending_approval","changes_requested","voided","closed","uncollectible","pending_consolidation","consolidated"],"type":"string"},{"type":"null"}],"default":null,"description":"Only invoices in this state.","title":"Status"},"type":{"anyOf":[{"enum":["invoice","refund","document","child_invoice_ref","child_creditnote_ref"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this document type.","title":"Type"},"customer_id":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Only invoices of this customer id.","title":"Customer Id"},"subscription_id":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Only invoices of this subscription id.","title":"Subscription Id"},"invoice_number":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only the invoice with this number.","title":"Invoice Number"},"sort":{"anyOf":[{"enum":["created_at","emitted_at"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort field.","title":"Sort"},"order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort direction.","title":"Order"},"include_total":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to include the total count in the answer.","title":"Include Total"}},"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/list_products":{"post":{"operationId":"list_products","summary":"List catalog products with name, type, status and description. Use for \"What products are in our Hyperline catalog\".","description":"List catalog products with name, type, status and description. Use for \"What products are in our Hyperline catalog\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"take":{"anyOf":[{"maximum":100,"minimum":0,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (0 to 100).","title":"Take"},"skip":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging.","title":"Skip"},"status":{"anyOf":[{"enum":["all","active","archived"],"type":"string"},{"type":"null"}],"default":null,"description":"Only products in this state.","title":"Status"},"name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only products with this name.","title":"Name"}},"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_transactions":{"post":{"operationId":"list_transactions","summary":"List payment transactions with type, amount, currency, customer, status, payment method type and process and settlement ","description":"List payment transactions with type, amount, currency, customer, status, payment method type and process and settlement dates. Use for \"What payments did Hyperline process recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"take":{"anyOf":[{"maximum":100,"minimum":0,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (0 to 100).","title":"Take"},"skip":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging.","title":"Skip"}},"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_ledger_accounts":{"post":{"operationId":"list_ledger_accounts","summary":"List general-ledger accounts: code, name, type, currency and current balance. Filter by ledger or type. Use for \"What ar","description":"List general-ledger accounts: code, name, type, currency and current balance. Filter by ledger or type. Use for \"What are our ledger account balances in Hyperline\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"take":{"anyOf":[{"maximum":100,"minimum":0,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (0 to 100).","title":"Take"},"skip":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging.","title":"Skip"},"ledger_id":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Only accounts of this ledger id.","title":"Ledger Id"},"type":{"anyOf":[{"enum":["asset","contra_asset","liability","contra_liability","equity","revenue","contra_revenue","expense"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this account type.","title":"Type"},"search":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Search account name or code.","title":"Search"}},"title":"list_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_tax_rates":{"post":{"operationId":"list_tax_rates","summary":"List configured tax rates with code, name, type, country and rate. Use for \"Which tax rates are configured in Hyperline\"","description":"List configured tax rates with code, name, type, country and rate. Use for \"Which tax rates are configured in Hyperline\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"take":{"anyOf":[{"maximum":100,"minimum":0,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (0 to 100).","title":"Take"},"skip":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging.","title":"Skip"}},"title":"list_tax_ratesArguments","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_quotes":{"post":{"operationId":"list_quotes","summary":"List quotes with number, status, customer, amount, type and expiry. Use for \"Which quotes are pending in Hyperline\".","description":"List quotes with number, status, customer, amount, type and expiry. Use for \"Which quotes are pending in Hyperline\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"take":{"anyOf":[{"maximum":100,"minimum":0,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (0 to 100).","title":"Take"},"skip":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging.","title":"Skip"},"customer_id":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Only quotes of this customer id.","title":"Customer Id"},"number":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only the quote with this number.","title":"Number"}},"title":"list_quotesArguments","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}}}}