{"openapi":"3.1.0","info":{"title":"Victron VRM (BYOK) API","version":"0.1.0","description":"Victron VRM (BYOK) lets an AI assistant read your own Victron VRM data through the Victron VRM API with a key you supply (VRM access token). Read-only: 6 tools (get_me, list_installations, get_installation_diagnostics, get_installation_stats, get_installation_overall_stats, get_installation_alarm_log). The BYOK key travels with each request, is used for that one call only and is never stored,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-victron-vrm.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-victron-vrm/docs"},"termsOfService":"https://connectorbay.com/byok-victron-vrm/terms"},"servers":[{"url":"https://byok-victron-vrm.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-victron-vrm/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/get_me":{"post":{"operationId":"get_me","summary":"Show the VRM user the access token belongs to: numeric user id (needed by list_installations), name, country and access ","description":"Show the VRM user the access token belongs to: numeric user id (needed by list_installations), name, country and access level. Use for \"Which VRM user is my token connected to and what is my user id\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_meArguments","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_installations":{"post":{"operationId":"list_installations","summary":"List the VRM installations (sites) the user can see with name, timezone, PV maximum, mains and generator flags and, with","description":"List the VRM installations (sites) the user can see with name, timezone, PV maximum, mains and generator flags and, with extended on, alarm state, last data time, grid status, minimum state of charge and tags. Use for \"Which Victron installations do I have and does any have an active alarm\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id_user":{"description":"VRM user id as returned by get_me.","maxLength":12,"title":"Id User","type":"string"},"extended":{"anyOf":[{"maximum":1,"minimum":0,"type":"integer"},{"type":"null"}],"default":1,"description":"Set to 1 to include alarm state, last data time, grid status, minimum SOC and tags.","title":"Extended"},"id_site":{"anyOf":[{"maximum":2147483647,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only return this installation id.","title":"Id Site"}},"required":["id_user"],"title":"list_installationsArguments","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_installation_diagnostics":{"post":{"operationId":"get_installation_diagnostics","summary":"Get the latest values of every logged data attribute of an installation (device, instance, description, formatted value ","description":"Get the latest values of every logged data attribute of an installation (device, instance, description, formatted value and raw value), 100 per page by default. Use for \"What are the current battery voltage and state of charge readings of my installation\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id_site":{"description":"VRM installation (site) id, a number returned by list_installations as idSite.","maxLength":12,"title":"Id Site","type":"string"},"count":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Records per page (the documentation default is 100).","title":"Count"},"page":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["id_site"],"title":"get_installation_diagnosticsArguments","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_installation_stats":{"post":{"operationId":"get_installation_stats","summary":"Get time series statistics of an installation over a period: each series is a list of [timestamp, mean, min, max] points","description":"Get time series statistics of an installation over a period: each series is a list of [timestamp, mean, min, max] points, plus totals. Longest span per call: 31 days for 15mins or hours, 180 days for days, 140 days for weeks, 24 months for months, 5 years for years. Use for \"How much solar did my installation yield each day over the last two weeks\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id_site":{"description":"VRM installation (site) id, a number returned by list_installations as idSite.","maxLength":12,"title":"Id Site","type":"string"},"start":{"anyOf":[{"maximum":4102444800,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Start as a Unix timestamp in seconds (default: one day ago).","title":"Start"},"end":{"anyOf":[{"maximum":4102444800,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"End as a Unix timestamp in seconds (default: now).","title":"End"},"type":{"anyOf":[{"enum":["venus","dc_inputs","live_feed","consumption","solar_yield","kwh","generator","generator-runtime","forecast"],"type":"string"},{"type":"null"}],"default":"live_feed","description":"Kind of series: venus (full VRM dashboard set), live_feed (default: consumption, solar, battery, grid), consumption, solar_yield, kwh (energy counters), generator, generator-runtime, dc_inputs or forecast (solar and consumption forecast).","title":"Type"},"interval":{"anyOf":[{"enum":["15mins","hours","2hours","days","weeks","months","years"],"type":"string"},{"type":"null"}],"default":"hours","description":"Spacing of the points: 15mins, hours (default), 2hours, days, weeks, months or years.","title":"Interval"}},"required":["id_site"],"title":"get_installation_statsArguments","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_installation_overall_stats":{"post":{"operationId":"get_installation_overall_stats","summary":"Get totals and percentages of an installation grouped by the last year, month, week and today, for one kind of series. U","description":"Get totals and percentages of an installation grouped by the last year, month, week and today, for one kind of series. Use for \"How much energy did my installation consume and produce this month compared with this year\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id_site":{"description":"VRM installation (site) id, a number returned by list_installations as idSite.","maxLength":12,"title":"Id Site","type":"string"},"type":{"anyOf":[{"enum":["venus","live_feed","consumption","solar_yield","kwh","generator","generator-runtime"],"type":"string"},{"type":"null"}],"default":"live_feed","description":"Kind of series: live_feed (default), venus, consumption, solar_yield, kwh, generator or generator-runtime.","title":"Type"}},"required":["id_site"],"title":"get_installation_overall_statsArguments","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_installation_alarm_log":{"post":{"operationId":"get_installation_alarm_log","summary":"Read the history of alarms and faults of an installation (grid lost, voltage faults, overload, low state of charge, inve","description":"Read the history of alarms and faults of an installation (grid lost, voltage faults, overload, low state of charge, inverter errors) with start and clear times; active alarms come first. Use for \"Did my installation lose grid power last week and for how long\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id_site":{"description":"VRM installation (site) id, a number returned by list_installations as idSite.","maxLength":12,"title":"Id Site","type":"string"},"start":{"anyOf":[{"maximum":4102444800,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Lower bound of the alarm window as a Unix timestamp in seconds; needs end too.","title":"Start"},"end":{"anyOf":[{"maximum":4102444800,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Upper bound of the alarm window as a Unix timestamp in seconds; needs start too.","title":"End"},"page":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"count":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Records per page (the documentation default is 3000; kept small here).","title":"Count"}},"required":["id_site"],"title":"get_installation_alarm_logArguments","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}}}}