{"openapi":"3.1.0","info":{"title":"Vindi (BYOK) API","version":"0.1.0","description":"Vindi (BYOK) lets an AI assistant read your own Vindi data through the Vindi API with a key you supply (Vindi API key (Settings > Access keys)). Read-only: 7 tools (list_products, get_product, list_plans, get_plan, list_plan_items, list_payment_methods, get_payment_method). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached; it is only...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-vindi.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-vindi/docs"},"termsOfService":"https://connectorbay.com/byok-vindi/terms"},"servers":[{"url":"https://byok-vindi.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-vindi/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_products":{"post":{"operationId":"list_products","summary":"List the products of your Vindi account with code, status, unit, invoice rule and pricing schema, filtered and sorted as","description":"List the products of your Vindi account with code, status, unit, invoice rule and pricing schema, filtered and sorted as requested. Use for \"Which products are in my Vindi catalog and what do they cost\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"per_page":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Records per page (1 to 50; the server default is 25).","title":"Per Page"},"query":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Optional Vindi search filter, for example status:active. Operators : (contains), =, >, >=, <, <=, AND, OR, NOT.","title":"Query"},"sort_by":{"anyOf":[{"enum":["id","name","code","status","invoice","unit","pricing_schema_id","created_at","updated_at","schema_type","price"],"type":"string"},{"type":"null"}],"default":"created_at","description":"Attribute to sort by.","title":"Sort By"},"sort_order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"asc","description":"Sort direction: asc or desc.","title":"Sort Order"}},"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/get_product":{"post":{"operationId":"get_product","summary":"Get one Vindi product by id with code, unit, status, invoice rule, pricing schema and metadata. Use for \"Show Vindi prod","description":"Get one Vindi product by id with code, unit, status, invoice rule, pricing schema and metadata. Use for \"Show Vindi product 1 with its pricing\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Numeric id of the product.","minimum":1,"title":"Id","type":"integer"}},"required":["id"],"title":"get_productArguments","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 the recurring plans of your Vindi account with interval, billing cycles, installments, billing trigger and status. ","description":"List the recurring plans of your Vindi account with interval, billing cycles, installments, billing trigger and status. Use for \"Which subscription plans do I offer in Vindi\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"per_page":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Records per page (1 to 50; the server default is 25).","title":"Per Page"},"query":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Optional Vindi search filter, for example status:active. Operators : (contains), =, >, >=, <, <=, AND, OR, NOT.","title":"Query"},"sort_by":{"anyOf":[{"enum":["id","installments","name","interval_count","interval","billing_cycles","code","status","billing_trigger_day","billing_trigger_type","created_at","updated_at"],"type":"string"},{"type":"null"}],"default":"created_at","description":"Attribute to sort by.","title":"Sort By"},"sort_order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"asc","description":"Sort direction: asc or desc.","title":"Sort Order"}},"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/get_plan":{"post":{"operationId":"get_plan","summary":"Get one Vindi plan by id including its plan items (products and cycles) and metadata. Use for \"What products does Vindi ","description":"Get one Vindi plan by id including its plan items (products and cycles) and metadata. Use for \"What products does Vindi plan 1 include\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Numeric id of the plan.","minimum":1,"title":"Id","type":"integer"}},"required":["id"],"title":"get_planArguments","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_plan_items":{"post":{"operationId":"list_plan_items","summary":"List the items (product, pricing schema and number of cycles) that belong to one Vindi plan. Use for \"List the line item","description":"List the items (product, pricing schema and number of cycles) that belong to one Vindi plan. Use for \"List the line items of Vindi plan 1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Numeric id of the plan.","minimum":1,"title":"Id","type":"integer"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"per_page":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Records per page (1 to 50; the server default is 25).","title":"Per Page"}},"required":["id"],"title":"list_plan_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_payment_methods":{"post":{"operationId":"list_payment_methods","summary":"List the payment methods available on the Vindi account (card, boleto, PIX and others) with type, status, accepted card ","description":"List the payment methods available on the Vindi account (card, boleto, PIX and others) with type, status, accepted card brands or banks and maximum charge attempts. Use for \"Which payment methods are enabled in my Vindi account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"per_page":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Records per page (1 to 50; the server default is 25).","title":"Per Page"},"query":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Optional Vindi search filter, for example code=credit_card. Operators : (contains), =, >, >=, <, <=, AND, OR, NOT.","title":"Query"},"sort_by":{"anyOf":[{"enum":["id","name","code"],"type":"string"},{"type":"null"}],"default":"id","description":"Attribute to sort by.","title":"Sort By"},"sort_order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"asc","description":"Sort direction: asc or desc.","title":"Sort Order"}},"title":"list_payment_methodsArguments","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_payment_method":{"post":{"operationId":"get_payment_method","summary":"Get one Vindi payment method by id with its type, status, settings and enabled card brands or banks. Use for \"Show the d","description":"Get one Vindi payment method by id with its type, status, settings and enabled card brands or banks. Use for \"Show the details of Vindi payment method 1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Numeric id of the payment method.","minimum":1,"title":"Id","type":"integer"}},"required":["id"],"title":"get_payment_methodArguments","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}}}}