{"openapi":"3.1.0","info":{"title":"Qwilr (BYOK) API","version":"0.1.0","description":"Qwilr (BYOK) lets an AI assistant read your own Qwilr data through the Qwilr API with a key you supply (Qwilr API access token (Starter, Growth or Scale plan)). Read-only: 7 tools (list_pages, get_page, list_saved_blocks, list_taxes, list_payment_gateways, list_webhook_subscriptions, list_users). 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-qwilr.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-qwilr/docs"},"termsOfService":"https://connectorbay.com/byok-qwilr/terms"},"servers":[{"url":"https://byok-qwilr.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-qwilr/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_pages":{"post":{"operationId":"list_pages","summary":"List Qwilr pages (proposals, quotes, documents), newest first, with name, status, tags, folder, owner and links. Filter ","description":"List Qwilr pages (proposals, quotes, documents), newest first, with name, status, tags, folder, owner and links. Filter by status, tags, folder or owner; cursor-paged. Summaries only, without blocks or acceptance data. Use for \"Which Qwilr proposals are live or accepted\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many pages per set (default 25).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":512,"type":"string"},{"type":"null"}],"default":null,"description":"The nextCursor value of the previous answer; leave empty for the first set.","title":"Cursor"},"status":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated statuses to keep: draft, live, accepting, accepted, disabled, declined.","title":"Status"},"tags":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated tags; only pages with all of them are returned (case-sensitive). 'archived' returns archived pages.","title":"Tags"},"folder_id":{"anyOf":[{"maxLength":24,"type":"string"},{"type":"null"}],"default":null,"description":"Only pages directly inside this folder id (24 characters).","title":"Folder Id"},"owner_id":{"anyOf":[{"maxLength":24,"type":"string"},{"type":"null"}],"default":null,"description":"Only pages owned by this user id (24 characters).","title":"Owner Id"},"sort_direction":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"desc","description":"Order by creation time: desc (newest first, default) or asc.","title":"Sort Direction"}},"title":"list_pagesArguments","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_page":{"post":{"operationId":"get_page","summary":"Get one Qwilr page with status, tags, folder, owner, links, payment settings and link expiry. Set expand to 'acceptance'","description":"Get one Qwilr page with status, tags, folder, owner, links, payment settings and link expiry. Set expand to 'acceptance' to include who accepted and the accepted quote totals. Use for \"Has Qwilr page 6ee0f841f3cc8900090d82dc been accepted, and for how much\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_id":{"description":"The page id (24 lowercase letters and digits) from list_pages.","maxLength":200,"title":"Page Id","type":"string"},"expand":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated extra fields: metadata, acceptance, previewAcceptance.","title":"Expand"}},"required":["page_id"],"title":"get_pageArguments","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_saved_blocks":{"post":{"operationId":"list_saved_blocks","summary":"List the saved blocks (reusable page sections) in the account with id, name and type. Use for \"What saved blocks do we h","description":"List the saved blocks (reusable page sections) in the account with id, name and type. Use for \"What saved blocks do we have in Qwilr\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_saved_blocksArguments","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_taxes":{"post":{"operationId":"list_taxes","summary":"List the tax rates configured in the account (id, name, rate) that quotes can use. Use for \"Which tax rates are set up i","description":"List the tax rates configured in the account (id, name, rate) that quotes can use. Use for \"Which tax rates are set up in Qwilr\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_taxesArguments","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_payment_gateways":{"post":{"operationId":"list_payment_gateways","summary":"List the payment gateways connected to the account (id and name) that Qwilr Pay pages can use. Use for \"Which payment ga","description":"List the payment gateways connected to the account (id and name) that Qwilr Pay pages can use. Use for \"Which payment gateways are connected to Qwilr\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_payment_gatewaysArguments","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_webhook_subscriptions":{"post":{"operationId":"list_webhook_subscriptions","summary":"List the webhook subscriptions in the account: id and event type (for example pageAccepted or pageViewed). Target URLs a","description":"List the webhook subscriptions in the account: id and event type (for example pageAccepted or pageViewed). Target URLs are not returned. Use for \"Which Qwilr webhook events are subscribed\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_webhook_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_users":{"post":{"operationId":"list_users","summary":"List the users of the Qwilr account with name, email, roles and teams. Use for \"Who are the users in our Qwilr account\".","description":"List the users of the Qwilr account with name, email, roles and teams. Use for \"Who are the users in our Qwilr account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_usersArguments","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}}}}