{"openapi":"3.1.0","info":{"title":"Rentvine (BYOK) API","version":"0.1.0","description":"Rentvine (BYOK) lets an AI assistant read your own Rentvine data through the Rentvine API with a key you supply (Rentvine API access key). Read-only: 10 tools (list_properties, get_property, list_units, list_leases, get_lease, list_work_orders, get_work_order, list_work_order_statuses, list_lease_statuses, list_portfolios). The BYOK key travels with each request, is used for that one call only...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-rentvine.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-rentvine/docs"},"termsOfService":"https://connectorbay.com/byok-rentvine/terms"},"servers":[{"url":"https://byok-rentvine.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-rentvine/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_properties":{"post":{"operationId":"list_properties","summary":"List properties with name, address, type flags, year built, portfolio and active status; searchable by name, address or ","description":"List properties with name, address, type flags, year built, portfolio and active status; searchable by name, address or ZIP. Use for \"Which active properties do we manage in Rentvine\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account":{"description":"Your Rentvine account subdomain, the part before .rentvine.com (letters, digits, hyphens).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account","type":"string"},"search":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Text matched against property name, address, city, state and postal code.","title":"Search"},"is_active":{"anyOf":[{"enum":[0,1],"type":"integer"},{"type":"null"}],"default":1,"description":"1 for active properties (default), 0 for inactive ones.","title":"Is Active"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Items per page (default 25).","title":"Page Size"}},"required":["account"],"title":"list_propertiesArguments","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_property":{"post":{"operationId":"get_property","summary":"Get one property by id: address, type, year built, coordinates, portfolio, insurance expiry and contract dates. Use for ","description":"Get one property by id: address, type, year built, coordinates, portfolio, insurance expiry and contract dates. Use for \"Show Rentvine property 1203\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account":{"description":"Your Rentvine account subdomain, the part before .rentvine.com (letters, digits, hyphens).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account","type":"string"},"property_id":{"description":"Numeric Rentvine property id.","title":"Property Id","type":"integer"}},"required":["account","property_id"],"title":"get_propertyArguments","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_units":{"post":{"operationId":"list_units","summary":"List the units of one property with rent, deposit, size, bedrooms, bathrooms and the current lease id. Use for \"What uni","description":"List the units of one property with rent, deposit, size, bedrooms, bathrooms and the current lease id. Use for \"What units does Rentvine property 1203 have and what is the rent\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account":{"description":"Your Rentvine account subdomain, the part before .rentvine.com (letters, digits, hyphens).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account","type":"string"},"property_id":{"description":"Numeric Rentvine property id.","title":"Property Id","type":"integer"}},"required":["account","property_id"],"title":"list_unitsArguments","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_leases":{"post":{"operationId":"list_leases","summary":"List leases with property, unit, status, start, end and move-in dates and the monthly rent total. Use for \"Which Rentvin","description":"List leases with property, unit, status, start, end and move-in dates and the monthly rent total. Use for \"Which Rentvine leases are active right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account":{"description":"Your Rentvine account subdomain, the part before .rentvine.com (letters, digits, hyphens).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account","type":"string"}},"required":["account"],"title":"list_leasesArguments","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_lease":{"post":{"operationId":"get_lease","summary":"Get one lease by id with status, dates, notice and expected move-out information and the monthly rent total. Use for \"Sh","description":"Get one lease by id with status, dates, notice and expected move-out information and the monthly rent total. Use for \"Show Rentvine lease 2213\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account":{"description":"Your Rentvine account subdomain, the part before .rentvine.com (letters, digits, hyphens).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account","type":"string"},"lease_id":{"description":"Numeric Rentvine lease id.","title":"Lease Id","type":"integer"}},"required":["account","lease_id"],"title":"get_leaseArguments","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_work_orders":{"post":{"operationId":"list_work_orders","summary":"List maintenance work orders with number, status, priority, property, unit, description and scheduled date; filter by pr","description":"List maintenance work orders with number, status, priority, property, unit, description and scheduled date; filter by property, status or creation dates. Use for \"Which Rentvine work orders are open for property 1203\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account":{"description":"Your Rentvine account subdomain, the part before .rentvine.com (letters, digits, hyphens).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account","type":"string"},"search":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Text matched against work order description and number.","title":"Search"},"property_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only work orders of this property id.","title":"Property Id"},"work_order_status_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only work orders with this status id (see list_work_order_statuses).","title":"Work Order Status Id"},"start_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only work orders created on or after this date, YYYY-MM-DD.","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only work orders created on or before this date, YYYY-MM-DD.","title":"End Date"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":15,"description":"Items per page (default 15).","title":"Page Size"}},"required":["account"],"title":"list_work_ordersArguments","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_work_order":{"post":{"operationId":"get_work_order","summary":"Get one maintenance work order by id with status, priority, schedule, estimate and description. Use for \"Show Rentvine w","description":"Get one maintenance work order by id with status, priority, schedule, estimate and description. Use for \"Show Rentvine work order 2314\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account":{"description":"Your Rentvine account subdomain, the part before .rentvine.com (letters, digits, hyphens).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account","type":"string"},"work_order_id":{"description":"Numeric Rentvine work order id.","title":"Work Order Id","type":"integer"}},"required":["account","work_order_id"],"title":"get_work_orderArguments","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_work_order_statuses":{"post":{"operationId":"list_work_order_statuses","summary":"List the work order statuses (system and custom) with their ids and primary group, to use as a status filter. Use for \"W","description":"List the work order statuses (system and custom) with their ids and primary group, to use as a status filter. Use for \"What work order statuses exist in Rentvine\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account":{"description":"Your Rentvine account subdomain, the part before .rentvine.com (letters, digits, hyphens).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account","type":"string"},"search":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Text matched against the status name.","title":"Search"}},"required":["account"],"title":"list_work_order_statusesArguments","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_lease_statuses":{"post":{"operationId":"list_lease_statuses","summary":"List the lease statuses (system and custom) with ids, names and move-in or move-out flags. Use for \"What lease statuses ","description":"List the lease statuses (system and custom) with ids, names and move-in or move-out flags. Use for \"What lease statuses exist in Rentvine\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account":{"description":"Your Rentvine account subdomain, the part before .rentvine.com (letters, digits, hyphens).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account","type":"string"}},"required":["account"],"title":"list_lease_statusesArguments","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_portfolios":{"post":{"operationId":"list_portfolios","summary":"List owner portfolios with code, name, active flag and whether statements are sent or distributions are on hold. Use for","description":"List owner portfolios with code, name, active flag and whether statements are sent or distributions are on hold. Use for \"Which portfolios have distributions on hold in Rentvine\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account":{"description":"Your Rentvine account subdomain, the part before .rentvine.com (letters, digits, hyphens).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account","type":"string"},"search":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Text matched against portfolio name and owner names.","title":"Search"},"send_statements":{"anyOf":[{"enum":[0,1],"type":"integer"},{"type":"null"}],"default":null,"description":"1 for portfolios that send statements, 0 for those that do not.","title":"Send Statements"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Items per page (default 25).","title":"Page Size"}},"required":["account"],"title":"list_portfoliosArguments","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}}}}