{"openapi":"3.1.0","info":{"title":"Quaderno Tax Settings (BYOK) API","version":"0.1.0","description":"Quaderno Tax Settings (BYOK) lets an AI assistant read your own Quaderno Tax Settings data through the Quaderno Tax Settings API with a key you supply (Quaderno API key (private key)). Read-only: 5 tools (calculate_tax_rate, list_tax_ids, list_coupons, list_report_requests, list_webhooks). The BYOK key travels with each request, is used for that one call only and is never stored, logged or...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-quaderno-tax-settings.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-quaderno-tax-settings/docs"},"termsOfService":"https://connectorbay.com/byok-quaderno-tax-settings/terms"},"servers":[{"url":"https://byok-quaderno-tax-settings.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-quaderno-tax-settings/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/calculate_tax_rate":{"post":{"operationId":"calculate_tax_rate","summary":"Calculate the tax that applies to a sale for a destination country (and optionally postal code and city), tax code, prod","description":"Calculate the tax that applies to a sale for a destination country (and optionally postal code and city), tax code, product type, amount and date. Returns rate, taxable part, tax amount, totals, status (taxable, non_taxable, not_registered, reverse_charge) and any notice. Use for \"What VAT rate applies to an eservice sold to a customer in Germany\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account":{"description":"Your Quaderno account subdomain: the part before .quadernoapp.com, for example 'mycompany' for mycompany.quadernoapp.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account","type":"string"},"to_country":{"description":"Destination country, 2-letter ISO code, for example DE.","maxLength":2,"title":"To Country","type":"string"},"to_postal_code":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Destination ZIP or postal code.","title":"To Postal Code"},"to_city":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Destination city (recommended for US sales tax).","title":"To City"},"from_country":{"anyOf":[{"maxLength":2,"type":"string"},{"type":"null"}],"default":null,"description":"Seller country, 2-letter ISO code; defaults to the account country.","title":"From Country"},"tax_code":{"anyOf":[{"enum":["consulting","eservice","ebook","saas","standard","reduced","exempt"],"type":"string"},{"type":"null"}],"default":null,"description":"Tax code: consulting, eservice, ebook, saas, standard, reduced or exempt; defaults to the account default.","title":"Tax Code"},"tax_behavior":{"anyOf":[{"enum":["inclusive","exclusive"],"type":"string"},{"type":"null"}],"default":null,"description":"Whether the price includes tax (inclusive) or not (exclusive).","title":"Tax Behavior"},"product_type":{"anyOf":[{"enum":["good","service"],"type":"string"},{"type":"null"}],"default":null,"description":"good or service; defaults to the account default.","title":"Product Type"},"amount":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Transaction amount as a number, for example 100.","title":"Amount"},"currency":{"anyOf":[{"maxLength":3,"type":"string"},{"type":"null"}],"default":null,"description":"Three-letter uppercase currency code; defaults to the account currency.","title":"Currency"},"date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Transaction date (YYYY-MM-DD); defaults to today.","title":"Date"}},"required":["account","to_country"],"title":"calculate_tax_rateArguments","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_ids":{"post":{"operationId":"list_tax_ids","summary":"List the tax IDs registered on the account with value, jurisdiction, verification state, validity dates and flags for im","description":"List the tax IDs registered on the account with value, jurisdiction, verification state, validity dates and flags for import scheme and permanent establishment. Use for \"Which tax registrations does my Quaderno account have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account":{"description":"Your Quaderno account subdomain: the part before .quadernoapp.com, for example 'mycompany' for mycompany.quadernoapp.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account","type":"string"}},"required":["account"],"title":"list_tax_idsArguments","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 checkout coupons newest first with code, name, kind (amount_off or percent_off), amount or percent, currency, redem","description":"List checkout coupons newest first with code, name, kind (amount_off or percent_off), amount or percent, currency, redemption limits and counts. Use for \"Which Quaderno checkout coupons are active\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account":{"description":"Your Quaderno account subdomain: the part before .quadernoapp.com, for example 'mycompany' for mycompany.quadernoapp.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account","type":"string"}},"required":["account"],"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}},"/v1/tools/list_report_requests":{"post":{"operationId":"list_report_requests","summary":"List tax and document report requests with type (tax_summary, invoices_list or credits_list), state, parameters and time","description":"List tax and document report requests with type (tax_summary, invoices_list or credits_list), state, parameters and times. The download link is not returned. Use for \"Which Quaderno reports have I requested\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account":{"description":"Your Quaderno account subdomain: the part before .quadernoapp.com, for example 'mycompany' for mycompany.quadernoapp.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account","type":"string"}},"required":["account"],"title":"list_report_requestsArguments","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_webhooks":{"post":{"operationId":"list_webhooks","summary":"List webhooks newest first with target URL, event types, number of events sent, and the last send and last error times. ","description":"List webhooks newest first with target URL, event types, number of events sent, and the last send and last error times. The authentication key is not returned. Use for \"Which Quaderno webhooks are set up and are they failing\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account":{"description":"Your Quaderno account subdomain: the part before .quadernoapp.com, for example 'mycompany' for mycompany.quadernoapp.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account","type":"string"}},"required":["account"],"title":"list_webhooksArguments","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}}}}