{"openapi":"3.1.0","info":{"title":"Invoiced (BYOK) API","version":"0.1.0","description":"Invoiced (BYOK) lets an AI assistant read your own Invoiced data through the Invoiced API with a key you supply (Invoiced API key). Read-only: 10 tools (list_invoices, list_customers, list_payments, list_credit_notes, list_estimates, list_subscriptions, list_plans, list_items, list_tax_rates, list_coupons). The BYOK key travels with each request, is used for that one call only and is never...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-invoiced.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-invoiced/docs"},"termsOfService":"https://connectorbay.com/byok-invoiced/terms"},"servers":[{"url":"https://byok-invoiced.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-invoiced/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_invoices":{"post":{"operationId":"list_invoices","summary":"List invoices with number, customer id, status, dates, subtotal, total, balance, paid and closed flags and currency. Dat","description":"List invoices with number, customer id, status, dates, subtotal, total, balance, paid and closed flags and currency. Dates are Unix timestamps. Use for \"Which Invoiced invoices are unpaid and past due\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start_date":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only records on or after this Unix timestamp (seconds).","title":"Start Date"},"end_date":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only records on or before this Unix timestamp (seconds).","title":"End Date"},"updated_after":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only records updated after this Unix timestamp (seconds).","title":"Updated After"},"sort":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Column to sort by, for example 'date desc'.","title":"Sort"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return (1 to 100).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"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_customers":{"post":{"operationId":"list_customers","summary":"List customers with name, number, type, country, currency, payment terms, chasing and autopay flags. Email, phone, addre","description":"List customers with name, number, type, country, currency, payment terms, chasing and autopay flags. Email, phone, address and tax id are not returned. Use for \"Which Invoiced customers have an open balance\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"open_balance":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Only customers with (true) or without (false) an open balance.","title":"Open Balance"},"updated_after":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only records updated after this Unix timestamp (seconds).","title":"Updated After"},"sort":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Column to sort by, for example 'date desc'.","title":"Sort"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return (1 to 100).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"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/list_payments":{"post":{"operationId":"list_payments","summary":"List payments with amount, balance, currency, date, method, source, matched and voided flags and customer id. References","description":"List payments with amount, balance, currency, date, method, source, matched and voided flags and customer id. References and notes are not returned. Use for \"How much did I receive in Invoiced payments this month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start_date":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only records on or after this Unix timestamp (seconds).","title":"Start Date"},"end_date":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only records on or before this Unix timestamp (seconds).","title":"End Date"},"updated_after":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only records updated after this Unix timestamp (seconds).","title":"Updated After"},"sort":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Column to sort by, for example 'date desc'.","title":"Sort"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return (1 to 100).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"title":"list_paymentsArguments","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_credit_notes":{"post":{"operationId":"list_credit_notes","summary":"List credit notes with number, customer, status, dates, subtotal, total, balance and currency. Use for \"Which credit not","description":"List credit notes with number, customer, status, dates, subtotal, total, balance and currency. Use for \"Which credit notes are still open in Invoiced\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start_date":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only records on or after this Unix timestamp (seconds).","title":"Start Date"},"end_date":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only records on or before this Unix timestamp (seconds).","title":"End Date"},"updated_after":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only records updated after this Unix timestamp (seconds).","title":"Updated After"},"sort":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Column to sort by, for example 'date desc'.","title":"Sort"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return (1 to 100).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"title":"list_credit_notesArguments","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_estimates":{"post":{"operationId":"list_estimates","summary":"List estimates (quotes) with number, customer, status, date, expiration, deposit, subtotal, total and approval. Use for ","description":"List estimates (quotes) with number, customer, status, date, expiration, deposit, subtotal, total and approval. Use for \"Which Invoiced estimates have not been approved yet\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start_date":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only records on or after this Unix timestamp (seconds).","title":"Start Date"},"end_date":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only records on or before this Unix timestamp (seconds).","title":"End Date"},"updated_after":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only records updated after this Unix timestamp (seconds).","title":"Updated After"},"sort":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Column to sort by, for example 'date desc'.","title":"Sort"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return (1 to 100).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"title":"list_estimatesArguments","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 plan, customer, quantity, status, MRR, recurring total, billing period and cancellation. Only su","description":"List subscriptions with plan, customer, quantity, status, MRR, recurring total, billing period and cancellation. Only subscriptions with an upcoming renewal are returned unless a filter is set. Use for \"What is the MRR of my Invoiced subscriptions and which are cancelled\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"canceled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"When true, only canceled subscriptions.","title":"Canceled"},"finished":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"When true, only finished subscriptions.","title":"Finished"},"updated_after":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only records updated after this Unix timestamp (seconds).","title":"Updated After"},"sort":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Column to sort by, for example 'date desc'.","title":"Sort"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return (1 to 100).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"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_plans":{"post":{"operationId":"list_plans","summary":"List subscription plans with name, amount, currency, interval, pricing mode and quantity type. Use for \"What plans and p","description":"List subscription plans with name, amount, currency, interval, pricing mode and quantity type. Use for \"What plans and prices are set up in Invoiced\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"updated_after":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only records updated after this Unix timestamp (seconds).","title":"Updated After"},"sort":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Column to sort by, for example 'date desc'.","title":"Sort"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return (1 to 100).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"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}},"/v1/tools/list_items":{"post":{"operationId":"list_items","summary":"List catalog items with name, type, unit cost, currency, taxable and discountable flags and GL account. Use for \"Which i","description":"List catalog items with name, type, unit cost, currency, taxable and discountable flags and GL account. Use for \"Which items are in my Invoiced catalog\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"updated_after":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only records updated after this Unix timestamp (seconds).","title":"Updated After"},"sort":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Column to sort by, for example 'date desc'.","title":"Sort"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return (1 to 100).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"title":"list_itemsArguments","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 tax rates with name, value, whether it is a percentage and whether it is inclusive. Use for \"Which tax rates are co","description":"List tax rates with name, value, whether it is a percentage and whether it is inclusive. Use for \"Which tax rates are configured in Invoiced\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"updated_after":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only records updated after this Unix timestamp (seconds).","title":"Updated After"},"sort":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Column to sort by, for example 'date desc'.","title":"Sort"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return (1 to 100).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"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_coupons":{"post":{"operationId":"list_coupons","summary":"List coupons with name, value, percentage flag, expiry, exclusivity and maximum redemptions. Use for \"Which Invoiced cou","description":"List coupons with name, value, percentage flag, expiry, exclusivity and maximum redemptions. Use for \"Which Invoiced coupons exist and when do they expire\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"updated_after":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only records updated after this Unix timestamp (seconds).","title":"Updated After"},"sort":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Column to sort by, for example 'date desc'.","title":"Sort"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return (1 to 100).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"title":"list_couponsArguments","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}}}}