Tern EV-Charging Analytics
EV-charging site analytics: utilization, demand, peak saturation and corridor benchmarks.
사용해야 할까요
품질 및 안전성
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"usetern": {
"url": "https://tern-mcp-537572042041.europe-west4.run.app/mcp"
}
}
}원격 엔드포인트
https://tern-mcp-537572042041.europe-west4.run.app/mcpstreamable-http할 수 있는 일
도구 목록
도구 (26)
🟢search_charging_stations(country_iso3, id, title, address, operator, ...)
Find charging stations in one country by structured filter — id, title, address, operator. The reply is the API payload inline: station ids, titles, addresses and operators, which is what the claim tools take as site_id and station_id.
입력 스키마
{
"type": "object",
"properties": {
"country_iso3": {
"description": "ISO-3166 alpha-3 scope, e.g. NOR.",
"maxLength": 3,
"minLength": 3,
"title": "Country Iso3",
"type": "string"
},
"id": {
"anyOf": [
{
"pattern": "^[0-9a-fA-F]{32}$",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "One 32-char hex station id.",
"title": "Id"
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Title"
},
"address": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Address"
},
"operator": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Operator"
},
"limit": {
"anyOf": [
{
"maximum": 50,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Limit"
}
},
"required": [
"country_iso3"
],
"title": "search_charging_stationsArguments"
}출력 스키마
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "search_charging_stationsOutput"
}🟢nearby_charging_stations(country_iso3, lat, lng, radius_km, limit)
List the charging stations within a radius of a point, nearest first. The radius is in kilometres and at most 10; the reply is the API payload inline. This is how a site's competitors are found before any claim is read.
입력 스키마
{
"type": "object",
"properties": {
"country_iso3": {
"description": "ISO-3166 alpha-3 scope, e.g. NOR.",
"maxLength": 3,
"minLength": 3,
"title": "Country Iso3",
"type": "string"
},
"lat": {
"title": "Lat",
"type": "number"
},
"lng": {
"title": "Lng",
"type": "number"
},
"radius_km": {
"description": "km, > 0 and <= 10.",
"exclusiveMinimum": 0,
"maximum": 10,
"title": "Radius Km",
"type": "number"
},
"limit": {
"anyOf": [
{
"maximum": 50,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Limit"
}
},
"required": [
"country_iso3",
"lat",
"lng",
"radius_km"
],
"title": "nearby_charging_stationsArguments"
}출력 스키마
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "nearby_charging_stationsOutput"
}🟢list_evses(country_iso3, station_ids)
List the individual EVSEs (connectors) of up to 20 stations, with their capacity in kW. Stall counts and capacity bands come from here rather than from a station record.
입력 스키마
{
"type": "object",
"properties": {
"country_iso3": {
"description": "ISO-3166 alpha-3 scope, e.g. NOR.",
"maxLength": 3,
"minLength": 3,
"title": "Country Iso3",
"type": "string"
},
"station_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "string"
}
],
"description": "1-20 station ids (array or comma-separated).",
"title": "Station Ids"
}
},
"required": [
"country_iso3",
"station_ids"
],
"title": "list_evsesArguments"
}출력 스키마
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "list_evsesOutput"
}⚪aggregate_charging_utilization(country_iso3, geometry, date_from, date_to, min_capacity_kw, ...)
Station-level utilization aggregated over a GeoJSON area and a date window of at most 92 days, optionally filtered to a capacity band (default 150 kW = HPC; pass 100 for fast charging). The reply is one row per station, so it reads an area without pulling any station's daily rows.
입력 스키마
{
"type": "object",
"properties": {
"country_iso3": {
"description": "ISO-3166 alpha-3 scope, e.g. NOR.",
"maxLength": 3,
"minLength": 3,
"title": "Country Iso3",
"type": "string"
},
"geometry": {
"description": "GeoJSON Polygon/MultiPolygon as a JSON string.",
"title": "Geometry",
"type": "string"
},
"date_from": {
"description": "YYYY-MM-DD (required).",
"title": "Date From",
"type": "string"
},
"date_to": {
"description": "YYYY-MM-DD (required; window <= 92 days, >= date_from).",
"title": "Date To",
"type": "string"
},
"min_capacity_kw": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "kW floor (default 150 = HPC; pass 100 for fast-charging).",
"title": "Min Capacity Kw"
},
"max_capacity_kw": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Max Capacity Kw"
}
},
"required": [
"country_iso3",
"geometry",
"date_from",
"date_to"
],
"title": "aggregate_charging_utilizationArguments"
}출력 스키마
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "aggregate_charging_utilizationOutput"
}⚪aggregate_evse_utilization(country_iso3, geometry, date_from, date_to, min_capacity_kw, ...)
EVSE-level utilization aggregated over a GeoJSON area and a date window of at most 92 days, optionally filtered to a capacity band. The per-connector counterpart of aggregate_charging_utilization.
입력 스키마
{
"type": "object",
"properties": {
"country_iso3": {
"description": "ISO-3166 alpha-3 scope, e.g. NOR.",
"maxLength": 3,
"minLength": 3,
"title": "Country Iso3",
"type": "string"
},
"geometry": {
"description": "GeoJSON Polygon/MultiPolygon as a JSON string.",
"title": "Geometry",
"type": "string"
},
"date_from": {
"description": "YYYY-MM-DD (required).",
"title": "Date From",
"type": "string"
},
"date_to": {
"description": "YYYY-MM-DD (required; window <= 92 days, >= date_from).",
"title": "Date To",
"type": "string"
},
"min_capacity_kw": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "kW floor (default 150 = HPC; pass 100 for fast-charging).",
"title": "Min Capacity Kw"
},
"max_capacity_kw": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Max Capacity Kw"
}
},
"required": [
"country_iso3",
"geometry",
"date_from",
"date_to"
],
"title": "aggregate_evse_utilizationArguments"
}출력 스키마
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "aggregate_evse_utilizationOutput"
}🟢area_benchmark(params)
How hard is each EVSE at this site working compared with the area around it? Reads the area_benchmark claim for one site and returns only its result: the status the claim decided from its own observations (computed or insufficient), the typed result, and the display a deliverable would print. The observations behind it are pulled into a scratch directory that is deleted before the call returns, so the rows never enter the conversation and nothing is left on the server to read back later — this call is the whole reading.
입력 스키마
{
"type": "object",
"properties": {
"params": {
"$ref": "#/$defs/AreaBenchmarkParams"
}
},
"required": [
"params"
],
"$defs": {
"AreaBenchmarkParams": {
"additionalProperties": false,
"properties": {
"site_id": {
"minLength": 1,
"title": "Site Id",
"type": "string"
},
"observation_params": {
"$ref": "#/$defs/StationUtilizationParams"
},
"aggregate_params": {
"$ref": "#/$defs/EvseAggregateParams"
}
},
"required": [
"site_id",
"observation_params",
"aggregate_params"
],
"title": "AreaBenchmarkParams",
"type": "object"
},
"CapacityBand": {
"additionalProperties": false,
"properties": {
"min_capacity_kw": {
"anyOf": [
{
"exclusiveMinimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Min Capacity Kw"
},
"max_capacity_kw": {
"anyOf": [
{
"exclusiveMinimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Max Capacity Kw"
}
},
"title": "CapacityBand",
"type": "object"
},
"CapacityRange": {
"additionalProperties": false,
"properties": {
"min_capacity_kw": {
"default": 150,
"title": "Min Capacity Kw",
"type": "number"
},
"max_capacity_kw": {
"default": 1000,
"title": "Max Capacity Kw",
"type": "number"
}
},
"title": "CapacityRange",
"type": "object"
},
"DateRange": {
"additionalProperties": false,
"properties": {
"date_from": {
"title": "Date From",
"type": "string"
},
"date_to": {
"title": "Date To",
"type": "string"
}
},
"required": [
"date_from",
"date_to"
],
"title": "DateRange",
"type": "object"
},
"EvseAggregateParams": {
"additionalProperties": false,
"properties": {
"country_iso3": {
"maxLength": 3,
"minLength": 3,
"pattern": "^[A-Za-z]{3}$",
"title": "Country Iso3",
"type": "string"
},
"geometry": {
"minLength": 1,
"title": "Geometry",
"type": "string"
},
"date_range": {
"$ref": "#/$defs/DateRange"
},
"capacity": {
"$ref": "#/$defs/CapacityBand",
"default": {
"min_capacity_kw": null,
"max_capacity_kw": null
}
}
},
"required": [
"country_iso3",
"geometry",
"date_range"
],
"title": "EvseAggregateParams",
"type": "object"
},
"StationUtilizationParams": {
"additionalProperties": false,
"properties": {
"country_iso3": {
"maxLength": 3,
"minLength": 3,
"pattern": "^[A-Za-z]{3}$",
"title": "Country Iso3",
"type": "string"
},
"station_ids": {
"items": {
"type": "string"
},
"maxLength": 20,
"minLength": 1,
"title": "Station Ids",
"type": "array"
},
"date_range": {
"$ref": "#/$defs/DateRange"
},
"capacity": {
"$ref": "#/$defs/CapacityRange",
"default": {
"min_capacity_kw": "150.0",
"max_capacity_kw": "1000.0"
}
}
},
"required": [
"country_iso3",
"station_ids",
"date_range"
],
"title": "StationUtilizationParams",
"type": "object"
}
},
"title": "area_benchmarkArguments"
}출력 스키마
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "area_benchmarkOutput"
}🟢avg_session_minutes(params)
How long does a session at this site actually last? Reads the avg_session_minutes claim for one site and returns only its result: the status the claim decided from its own observations (computed or insufficient), the typed result, and the display a deliverable would print. The observations behind it are pulled into a scratch directory that is deleted before the call returns, so the rows never enter the conversation and nothing is left on the server to read back later — this call is the whole reading.
입력 스키마
{
"type": "object",
"properties": {
"params": {
"$ref": "#/$defs/AvgSessionMinutesParams"
}
},
"required": [
"params"
],
"$defs": {
"AvgSessionMinutesParams": {
"additionalProperties": false,
"properties": {
"site_id": {
"minLength": 1,
"title": "Site Id",
"type": "string"
},
"observation_params": {
"$ref": "#/$defs/StationUtilizationParams"
},
"station_id": {
"anyOf": [
{
"minLength": 1,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Station Id"
}
},
"required": [
"site_id",
"observation_params"
],
"title": "AvgSessionMinutesParams",
"type": "object"
},
"CapacityRange": {
"additionalProperties": false,
"properties": {
"min_capacity_kw": {
"default": 150,
"title": "Min Capacity Kw",
"type": "number"
},
"max_capacity_kw": {
"default": 1000,
"title": "Max Capacity Kw",
"type": "number"
}
},
"title": "CapacityRange",
"type": "object"
},
"DateRange": {
"additionalProperties": false,
"properties": {
"date_from": {
"title": "Date From",
"type": "string"
},
"date_to": {
"title": "Date To",
"type": "string"
}
},
"required": [
"date_from",
"date_to"
],
"title": "DateRange",
"type": "object"
},
"StationUtilizationParams": {
"additionalProperties": false,
"properties": {
"country_iso3": {
"maxLength": 3,
"minLength": 3,
"pattern": "^[A-Za-z]{3}$",
"title": "Country Iso3",
"type": "string"
},
"station_ids": {
"items": {
"type": "string"
},
"maxLength": 20,
"minLength": 1,
"title": "Station Ids",
"type": "array"
},
"date_range": {
"$ref": "#/$defs/DateRange"
},
"capacity": {
"$ref": "#/$defs/CapacityRange",
"default": {
"min_capacity_kw": "150.0",
"max_capacity_kw": "1000.0"
}
}
},
"required": [
"country_iso3",
"station_ids",
"date_range"
],
"title": "StationUtilizationParams",
"type": "object"
}
},
"title": "avg_session_minutesArguments"
}출력 스키마
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "avg_session_minutesOutput"
}🟢busy_evse_hours(params)
How many EVSE-hours at this station carried charging on the drilled day, and how many of its EVSEs were charging at once in the busiest hour? Reads the busy_evse_hours claim for one site and returns only its result: the status the claim decided from its own observations (computed or insufficient), the typed result, and the display a deliverable would print. The observations behind it are pulled into a scratch directory that is deleted before the call returns, so the rows never enter the conversation and nothing is left on the server to read back later — this call is the whole reading.
입력 스키마
{
"type": "object",
"properties": {
"params": {
"$ref": "#/$defs/BusyEvseHoursParams"
}
},
"required": [
"params"
],
"$defs": {
"BusyEvseHoursParams": {
"additionalProperties": false,
"properties": {
"observation_params": {
"$ref": "#/$defs/EvseHourlyParams"
},
"date_range": {
"$ref": "#/$defs/DateRange"
},
"site_id": {
"minLength": 1,
"title": "Site Id",
"type": "string"
},
"station_id": {
"minLength": 1,
"title": "Station Id",
"type": "string"
},
"peak_window": {
"$ref": "#/$defs/PeakWindow",
"default": {
"from_hour": 6,
"until_hour": 23
}
}
},
"required": [
"observation_params",
"date_range",
"site_id",
"station_id"
],
"title": "BusyEvseHoursParams",
"type": "object"
},
"CapacityRange": {
"additionalProperties": false,
"properties": {
"min_capacity_kw": {
"default": 150,
"title": "Min Capacity Kw",
"type": "number"
},
"max_capacity_kw": {
"default": 1000,
"title": "Max Capacity Kw",
"type": "number"
}
},
"title": "CapacityRange",
"type": "object"
},
"DateList": {
"additionalProperties": false,
"properties": {
"dates": {
"items": {
"type": "string"
},
"minLength": 1,
"title": "Dates",
"type": "array"
}
},
"required": [
"dates"
],
"title": "DateList",
"type": "object"
},
"DateRange": {
"additionalProperties": false,
"properties": {
"date_from": {
"title": "Date From",
"type": "string"
},
"date_to": {
"title": "Date To",
"type": "string"
}
},
"required": [
"date_from",
"date_to"
],
"title": "DateRange",
"type": "object"
},
"EvseHourlyParams": {
"additionalProperties": false,
"properties": {
"country_iso3": {
"maxLength": 3,
"minLength": 3,
"pattern": "^[A-Za-z]{3}$",
"title": "Country Iso3",
"type": "string"
},
"station_ids": {
"items": {
"type": "string"
},
"maxLength": 20,
"minLength": 1,
"title": "Station Ids",
"type": "array"
},
"date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Date"
},
"dates": {
"anyOf": [
{
"$ref": "#/$defs/DateList"
},
{
"type": "null"
}
],
"default": null
},
"capacity": {
"$ref": "#/$defs/CapacityRange",
"default": {
"min_capacity_kw": "150.0",
"max_capacity_kw": "1000.0"
}
}
},
"required": [
"country_iso3",
"station_ids"
],
"title": "EvseHourlyParams",
"type": "object"
},
"PeakWindow": {
"additionalProperties": false,
"properties": {
"from_hour": {
"default": 6,
"maximum": 23,
"minimum": 0,
"title": "From Hour",
"type": "integer"
},
"until_hour": {
"default": 23,
"maximum": 24,
"minimum": 1,
"title": "Until Hour",
"type": "integer"
}
},
"title": "PeakWindow",
"type": "object"
}
},
"title": "busy_evse_hoursArguments"
}출력 스키마
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "busy_evse_hoursOutput"
}🟢corridor_benchmark(params)
How does this site's demand per EVSE-day compare with the corridor drawn around it? Reads the corridor_benchmark claim for one site and returns only its result: the status the claim decided from its own observations (computed or insufficient), the typed result, and the display a deliverable would print. The observations behind it are pulled into a scratch directory that is deleted before the call returns, so the rows never enter the conversation and nothing is left on the server to read back later — this call is the whole reading.
입력 스키마
{
"type": "object",
"properties": {
"params": {
"$ref": "#/$defs/CorridorBenchmarkParams"
}
},
"required": [
"params"
],
"$defs": {
"CapacityBand": {
"additionalProperties": false,
"properties": {
"min_capacity_kw": {
"anyOf": [
{
"exclusiveMinimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Min Capacity Kw"
},
"max_capacity_kw": {
"anyOf": [
{
"exclusiveMinimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Max Capacity Kw"
}
},
"title": "CapacityBand",
"type": "object"
},
"CapacityRange": {
"additionalProperties": false,
"properties": {
"min_capacity_kw": {
"default": 150,
"title": "Min Capacity Kw",
"type": "number"
},
"max_capacity_kw": {
"default": 1000,
"title": "Max Capacity Kw",
"type": "number"
}
},
"title": "CapacityRange",
"type": "object"
},
"CorridorBenchmarkParams": {
"additionalProperties": false,
"properties": {
"site_id": {
"minLength": 1,
"title": "Site Id",
"type": "string"
},
"observation_params": {
"$ref": "#/$defs/StationUtilizationParams"
},
"station_id": {
"minLength": 1,
"title": "Station Id",
"type": "string"
},
"aggregate_params": {
"$ref": "#/$defs/EvseAggregateParams"
}
},
"required": [
"site_id",
"observation_params",
"station_id",
"aggregate_params"
],
"title": "CorridorBenchmarkParams",
"type": "object"
},
"DateRange": {
"additionalProperties": false,
"properties": {
"date_from": {
"title": "Date From",
"type": "string"
},
"date_to": {
"title": "Date To",
"type": "string"
}
},
"required": [
"date_from",
"date_to"
],
"title": "DateRange",
"type": "object"
},
"EvseAggregateParams": {
"additionalProperties": false,
"properties": {
"country_iso3": {
"maxLength": 3,
"minLength": 3,
"pattern": "^[A-Za-z]{3}$",
"title": "Country Iso3",
"type": "string"
},
"geometry": {
"minLength": 1,
"title": "Geometry",
"type": "string"
},
"date_range": {
"$ref": "#/$defs/DateRange"
},
"capacity": {
"$ref": "#/$defs/CapacityBand",
"default": {
"min_capacity_kw": null,
"max_capacity_kw": null
}
}
},
"required": [
"country_iso3",
"geometry",
"date_range"
],
"title": "EvseAggregateParams",
"type": "object"
},
"StationUtilizationParams": {
"additionalProperties": false,
"properties": {
"country_iso3": {
"maxLength": 3,
"minLength": 3,
"pattern": "^[A-Za-z]{3}$",
"title": "Country Iso3",
"type": "string"
},
"station_ids": {
"items": {
"type": "string"
},
"maxLength": 20,
"minLength": 1,
"title": "Station Ids",
"type": "array"
},
"date_range": {
"$ref": "#/$defs/DateRange"
},
"capacity": {
"$ref": "#/$defs/CapacityRange",
"default": {
"min_capacity_kw": "150.0",
"max_capacity_kw": "1000.0"
}
}
},
"required": [
"country_iso3",
"station_ids",
"date_range"
],
"title": "StationUtilizationParams",
"type": "object"
}
},
"title": "corridor_benchmarkArguments"
}출력 스키마
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "corridor_benchmarkOutput"
}🟢corridor_comparison(params)
How does this site compare with the named stations around it — distance, EVSE count, max kW, and sessions per EVSE-day each? Reads the corridor_comparison claim for one site and returns only its result: the status the claim decided from its own observations (computed or insufficient), the typed result, and the display a deliverable would print. The observations behind it are pulled into a scratch directory that is deleted before the call returns, so the rows never enter the conversation and nothing is left on the server to read back later — this call is the whole reading.
입력 스키마
{
"type": "object",
"properties": {
"params": {
"$ref": "#/$defs/CorridorComparisonParams"
}
},
"required": [
"params"
],
"$defs": {
"CapacityRange": {
"additionalProperties": false,
"properties": {
"min_capacity_kw": {
"default": 150,
"title": "Min Capacity Kw",
"type": "number"
},
"max_capacity_kw": {
"default": 1000,
"title": "Max Capacity Kw",
"type": "number"
}
},
"title": "CapacityRange",
"type": "object"
},
"CorridorComparisonParams": {
"additionalProperties": false,
"properties": {
"site_id": {
"pattern": "^[0-9a-fA-F]{32}$",
"title": "Site Id",
"type": "string"
},
"location": {
"$ref": "#/$defs/NearbyStationParams"
},
"observation_params": {
"$ref": "#/$defs/StationUtilizationParams"
}
},
"required": [
"site_id",
"location",
"observation_params"
],
"title": "CorridorComparisonParams",
"type": "object"
},
"DateRange": {
"additionalProperties": false,
"properties": {
"date_from": {
"title": "Date From",
"type": "string"
},
"date_to": {
"title": "Date To",
"type": "string"
}
},
"required": [
"date_from",
"date_to"
],
"title": "DateRange",
"type": "object"
},
"NearbyStationParams": {
"additionalProperties": false,
"properties": {
"country_iso3": {
"maxLength": 3,
"minLength": 3,
"pattern": "^[A-Za-z]{3}$",
"title": "Country Iso3",
"type": "string"
},
"lat": {
"maximum": 90,
"minimum": -90,
"title": "Lat",
"type": "number"
},
"lng": {
"maximum": 180,
"minimum": -180,
"title": "Lng",
"type": "number"
},
"radius_km": {
"exclusiveMinimum": 0,
"maximum": 10,
"title": "Radius Km",
"type": "number"
},
"limit": {
"anyOf": [
{
"maximum": 50,
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Limit"
}
},
"required": [
"country_iso3",
"lat",
"lng",
"radius_km"
],
"title": "NearbyStationParams",
"type": "object"
},
"StationUtilizationParams": {
"additionalProperties": false,
"properties": {
"country_iso3": {
"maxLength": 3,
"minLength": 3,
"pattern": "^[A-Za-z]{3}$",
"title": "Country Iso3",
"type": "string"
},
"station_ids": {
"items": {
"type": "string"
},
"maxLength": 20,
"minLength": 1,
"title": "Station Ids",
"type": "array"
},
"date_range": {
"$ref": "#/$defs/DateRange"
},
"capacity": {
"$ref": "#/$defs/CapacityRange",
"default": {
"min_capacity_kw": "150.0",
"max_capacity_kw": "1000.0"
}
}
},
"required": [
"country_iso3",
"station_ids",
"date_range"
],
"title": "StationUtilizationParams",
"type": "object"
}
},
"title": "corridor_comparisonArguments"
}출력 스키마
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "corridor_comparisonOutput"
}🟢daily_spike(params)
Which days ran far above this site's normal, and by how much? Reads the daily_spike claim for one site and returns only its result: the status the claim decided from its own observations (computed or insufficient), the typed result, and the display a deliverable would print. The observations behind it are pulled into a scratch directory that is deleted before the call returns, so the rows never enter the conversation and nothing is left on the server to read back later — this call is the whole reading.
입력 스키마
{
"type": "object",
"properties": {
"params": {
"$ref": "#/$defs/DailySpikeParams"
}
},
"required": [
"params"
],
"$defs": {
"CapacityRange": {
"additionalProperties": false,
"properties": {
"min_capacity_kw": {
"default": 150,
"title": "Min Capacity Kw",
"type": "number"
},
"max_capacity_kw": {
"default": 1000,
"title": "Max Capacity Kw",
"type": "number"
}
},
"title": "CapacityRange",
"type": "object"
},
"DailySpikeParams": {
"additionalProperties": false,
"properties": {
"site_id": {
"minLength": 1,
"title": "Site Id",
"type": "string"
},
"observation_params": {
"$ref": "#/$defs/StationUtilizationParams"
},
"factor": {
"default": 1.5,
"exclusiveMinimum": 0,
"title": "Factor",
"type": "number"
}
},
"required": [
"site_id",
"observation_params"
],
"title": "DailySpikeParams",
"type": "object"
},
"DateRange": {
"additionalProperties": false,
"properties": {
"date_from": {
"title": "Date From",
"type": "string"
},
"date_to": {
"title": "Date To",
"type": "string"
}
},
"required": [
"date_from",
"date_to"
],
"title": "DateRange",
"type": "object"
},
"StationUtilizationParams": {
"additionalProperties": false,
"properties": {
"country_iso3": {
"maxLength": 3,
"minLength": 3,
"pattern": "^[A-Za-z]{3}$",
"title": "Country Iso3",
"type": "string"
},
"station_ids": {
"items": {
"type": "string"
},
"maxLength": 20,
"minLength": 1,
"title": "Station Ids",
"type": "array"
},
"date_range": {
"$ref": "#/$defs/DateRange"
},
"capacity": {
"$ref": "#/$defs/CapacityRange",
"default": {
"min_capacity_kw": "150.0",
"max_capacity_kw": "1000.0"
}
}
},
"required": [
"country_iso3",
"station_ids",
"date_range"
],
"title": "StationUtilizationParams",
"type": "object"
}
},
"title": "daily_spikeArguments"
}출력 스키마
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "daily_spikeOutput"
}🟢day_vs_similar(params)
Was one particular day unusual for the day of week it fell on? Reads the day_vs_similar claim for one site and returns only its result: the status the claim decided from its own observations (computed or insufficient), the typed result, and the display a deliverable would print. The observations behind it are pulled into a scratch directory that is deleted before the call returns, so the rows never enter the conversation and nothing is left on the server to read back later — this call is the whole reading.
입력 스키마
{
"type": "object",
"properties": {
"params": {
"$ref": "#/$defs/DayVsSimilarParams"
}
},
"required": [
"params"
],
"$defs": {
"CapacityRange": {
"additionalProperties": false,
"properties": {
"min_capacity_kw": {
"default": 150,
"title": "Min Capacity Kw",
"type": "number"
},
"max_capacity_kw": {
"default": 1000,
"title": "Max Capacity Kw",
"type": "number"
}
},
"title": "CapacityRange",
"type": "object"
},
"DateRange": {
"additionalProperties": false,
"properties": {
"date_from": {
"title": "Date From",
"type": "string"
},
"date_to": {
"title": "Date To",
"type": "string"
}
},
"required": [
"date_from",
"date_to"
],
"title": "DateRange",
"type": "object"
},
"DayVsSimilarParams": {
"additionalProperties": false,
"properties": {
"site_id": {
"minLength": 1,
"title": "Site Id",
"type": "string"
},
"observation_params": {
"$ref": "#/$defs/StationUtilizationParams"
},
"station_id": {
"minLength": 1,
"title": "Station Id",
"type": "string"
},
"target_date": {
"title": "Target Date",
"type": "string"
}
},
"required": [
"site_id",
"observation_params",
"station_id",
"target_date"
],
"title": "DayVsSimilarParams",
"type": "object"
},
"StationUtilizationParams": {
"additionalProperties": false,
"properties": {
"country_iso3": {
"maxLength": 3,
"minLength": 3,
"pattern": "^[A-Za-z]{3}$",
"title": "Country Iso3",
"type": "string"
},
"station_ids": {
"items": {
"type": "string"
},
"maxLength": 20,
"minLength": 1,
"title": "Station Ids",
"type": "array"
},
"date_range": {
"$ref": "#/$defs/DateRange"
},
"capacity": {
"$ref": "#/$defs/CapacityRange",
"default": {
"min_capacity_kw": "150.0",
"max_capacity_kw": "1000.0"
}
}
},
"required": [
"country_iso3",
"station_ids",
"date_range"
],
"title": "StationUtilizationParams",
"type": "object"
}
},
"title": "day_vs_similarArguments"
}출력 스키마
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "day_vs_similarOutput"
}🟢demand_share_multiple(params)
How much of the area's demand does this one site take, said as a multiple of the mean station? Reads the demand_share_multiple claim for one site and returns only its result: the status the claim decided from its own observations (computed or insufficient), the typed result, and the display a deliverable would print. The observations behind it are pulled into a scratch directory that is deleted before the call returns, so the rows never enter the conversation and nothing is left on the server to read back later — this call is the whole reading.
입력 스키마
{
"type": "object",
"properties": {
"params": {
"$ref": "#/$defs/DemandShareMultipleParams"
}
},
"required": [
"params"
],
"$defs": {
"CapacityBand": {
"additionalProperties": false,
"properties": {
"min_capacity_kw": {
"anyOf": [
{
"exclusiveMinimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Min Capacity Kw"
},
"max_capacity_kw": {
"anyOf": [
{
"exclusiveMinimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Max Capacity Kw"
}
},
"title": "CapacityBand",
"type": "object"
},
"CapacityRange": {
"additionalProperties": false,
"properties": {
"min_capacity_kw": {
"default": 150,
"title": "Min Capacity Kw",
"type": "number"
},
"max_capacity_kw": {
"default": 1000,
"title": "Max Capacity Kw",
"type": "number"
}
},
"title": "CapacityRange",
"type": "object"
},
"DateRange": {
"additionalProperties": false,
"properties": {
"date_from": {
"title": "Date From",
"type": "string"
},
"date_to": {
"title": "Date To",
"type": "string"
}
},
"required": [
"date_from",
"date_to"
],
"title": "DateRange",
"type": "object"
},
"DemandShareMultipleParams": {
"additionalProperties": false,
"properties": {
"site_id": {
"minLength": 1,
"title": "Site Id",
"type": "string"
},
"observation_params": {
"$ref": "#/$defs/StationUtilizationParams"
},
"aggregate_params": {
"$ref": "#/$defs/StationAggregateParams"
}
},
"required": [
"site_id",
"observation_params",
"aggregate_params"
],
"title": "DemandShareMultipleParams",
"type": "object"
},
"StationAggregateParams": {
"additionalProperties": false,
"properties": {
"country_iso3": {
"maxLength": 3,
"minLength": 3,
"pattern": "^[A-Za-z]{3}$",
"title": "Country Iso3",
"type": "string"
},
"geometry": {
"minLength": 1,
"title": "Geometry",
"type": "string"
},
"date_range": {
"$ref": "#/$defs/DateRange"
},
"capacity": {
"$ref": "#/$defs/CapacityBand",
"default": {
"min_capacity_kw": null,
"max_capacity_kw": null
}
}
},
"required": [
"country_iso3",
"geometry",
"date_range"
],
"title": "StationAggregateParams",
"type": "object"
},
"StationUtilizationParams": {
"additionalProperties": false,
"properties": {
"country_iso3": {
"maxLength": 3,
"minLength": 3,
"pattern": "^[A-Za-z]{3}$",
"title": "Country Iso3",
"type": "string"
},
"station_ids": {
"items": {
"type": "string"
},
"maxLength": 20,
"minLength": 1,
"title": "Station Ids",
"type": "array"
},
"date_range": {
"$ref": "#/$defs/DateRange"
},
"capacity": {
"$ref": "#/$defs/CapacityRange",
"default": {
"min_capacity_kw": "150.0",
"max_capacity_kw": "1000.0"
}
}
},
"required": [
"country_iso3",
"station_ids",
"date_range"
],
"title": "StationUtilizationParams",
"type": "object"
}
},
"title": "demand_share_multipleArguments"
}출력 스키마
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "demand_share_multipleOutput"
}🟢estate_coverage(params)
Which estate sites reported on every day of the window, which are partial or young, and how full is the window's final day? Reads the estate_coverage claim for one site and returns only its result: the status the claim decided from its own observations (computed or insufficient), the typed result, and the display a deliverable would print. The observations behind it are pulled into a scratch directory that is deleted before the call returns, so the rows never enter the conversation and nothing is left on the server to read back later — this call is the whole reading.
입력 스키마
{
"type": "object",
"properties": {
"params": {
"$ref": "#/$defs/EstateCoverageParams"
}
},
"required": [
"params"
],
"$defs": {
"CapacityRange": {
"additionalProperties": false,
"properties": {
"min_capacity_kw": {
"default": 150,
"title": "Min Capacity Kw",
"type": "number"
},
"max_capacity_kw": {
"default": 1000,
"title": "Max Capacity Kw",
"type": "number"
}
},
"title": "CapacityRange",
"type": "object"
},
"DateRange": {
"additionalProperties": false,
"properties": {
"date_from": {
"title": "Date From",
"type": "string"
},
"date_to": {
"title": "Date To",
"type": "string"
}
},
"required": [
"date_from",
"date_to"
],
"title": "DateRange",
"type": "object"
},
"EstateCoverageParams": {
"additionalProperties": false,
"properties": {
"site_id": {
"minLength": 1,
"title": "Site Id",
"type": "string"
},
"estate": {
"$ref": "#/$defs/EstateScope"
}
},
"required": [
"site_id",
"estate"
],
"title": "EstateCoverageParams",
"type": "object"
},
"EstateScope": {
"additionalProperties": false,
"properties": {
"country_iso3": {
"maxLength": 3,
"minLength": 3,
"pattern": "^[A-Za-z]{3}$",
"title": "Country Iso3",
"type": "string"
},
"station_ids": {
"items": {
"pattern": "^[0-9a-fA-F]{32}$",
"type": "string"
},
"maxLength": 50,
"minLength": 2,
"title": "Station Ids",
"type": "array"
},
"date_range": {
"$ref": "#/$defs/DateRange"
},
"capacity": {
"$ref": "#/$defs/CapacityRange",
"default": {
"min_capacity_kw": "150.0",
"max_capacity_kw": "1000.0"
}
}
},
"required": [
"country_iso3",
"station_ids",
"date_range"
],
"title": "EstateScope",
"type": "object"
}
},
"title": "estate_coverageArguments"
}출력 스키마
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "estate_coverageOutput"
}🟢estate_monthly_series(params)
Did demand per EVSE across the estate move month over month, and did each focus site move with it? Reads the estate_monthly_series claim for one site and returns only its result: the status the claim decided from its own observations (computed or insufficient), the typed result, and the display a deliverable would print. The observations behind it are pulled into a scratch directory that is deleted before the call returns, so the rows never enter the conversation and nothing is left on the server to read back later — this call is the whole reading.
입력 스키마
{
"type": "object",
"properties": {
"params": {
"$ref": "#/$defs/EstateMonthlySeriesParams"
}
},
"required": [
"params"
],
"$defs": {
"CapacityRange": {
"additionalProperties": false,
"properties": {
"min_capacity_kw": {
"default": 150,
"title": "Min Capacity Kw",
"type": "number"
},
"max_capacity_kw": {
"default": 1000,
"title": "Max Capacity Kw",
"type": "number"
}
},
"title": "CapacityRange",
"type": "object"
},
"DateRange": {
"additionalProperties": false,
"properties": {
"date_from": {
"title": "Date From",
"type": "string"
},
"date_to": {
"title": "Date To",
"type": "string"
}
},
"required": [
"date_from",
"date_to"
],
"title": "DateRange",
"type": "object"
},
"EstateMonthlySeriesParams": {
"additionalProperties": false,
"properties": {
"site_id": {
"minLength": 1,
"title": "Site Id",
"type": "string"
},
"estate": {
"$ref": "#/$defs/EstateScope"
},
"focus_station_ids": {
"default": [],
"items": {
"pattern": "^[0-9a-fA-F]{32}$",
"type": "string"
},
"maxItems": 6,
"title": "Focus Station Ids",
"type": "array"
}
},
"required": [
"site_id",
"estate"
],
"title": "EstateMonthlySeriesParams",
"type": "object"
},
"EstateScope": {
"additionalProperties": false,
"properties": {
"country_iso3": {
"maxLength": 3,
"minLength": 3,
"pattern": "^[A-Za-z]{3}$",
"title": "Country Iso3",
"type": "string"
},
"station_ids": {
"items": {
"pattern": "^[0-9a-fA-F]{32}$",
"type": "string"
},
"maxLength": 50,
"minLength": 2,
"title": "Station Ids",
"type": "array"
},
"date_range": {
"$ref": "#/$defs/DateRange"
},
"capacity": {
"$ref": "#/$defs/CapacityRange",
"default": {
"min_capacity_kw": "150.0",
"max_capacity_kw": "1000.0"
}
}
},
"required": [
"country_iso3",
"station_ids",
"date_range"
],
"title": "EstateScope",
"type": "object"
}
},
"title": "estate_monthly_seriesArguments"
}출력 스키마
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "estate_monthly_seriesOutput"
}🟢hourly_spike(params)
When in the day does demand at this site peak? Reads the hourly_spike claim for one site and returns only its result: the status the claim decided from its own observations (computed or insufficient), the typed result, and the display a deliverable would print. The observations behind it are pulled into a scratch directory that is deleted before the call returns, so the rows never enter the conversation and nothing is left on the server to read back later — this call is the whole reading.
입력 스키마
{
"type": "object",
"properties": {
"params": {
"$ref": "#/$defs/HourlySpikeParams"
}
},
"required": [
"params"
],
"$defs": {
"CapacityRange": {
"additionalProperties": false,
"properties": {
"min_capacity_kw": {
"default": 150,
"title": "Min Capacity Kw",
"type": "number"
},
"max_capacity_kw": {
"default": 1000,
"title": "Max Capacity Kw",
"type": "number"
}
},
"title": "CapacityRange",
"type": "object"
},
"DateList": {
"additionalProperties": false,
"properties": {
"dates": {
"items": {
"type": "string"
},
"minLength": 1,
"title": "Dates",
"type": "array"
}
},
"required": [
"dates"
],
"title": "DateList",
"type": "object"
},
"DateRange": {
"additionalProperties": false,
"properties": {
"date_from": {
"title": "Date From",
"type": "string"
},
"date_to": {
"title": "Date To",
"type": "string"
}
},
"required": [
"date_from",
"date_to"
],
"title": "DateRange",
"type": "object"
},
"EvseHourlyParams": {
"additionalProperties": false,
"properties": {
"country_iso3": {
"maxLength": 3,
"minLength": 3,
"pattern": "^[A-Za-z]{3}$",
"title": "Country Iso3",
"type": "string"
},
"station_ids": {
"items": {
"type": "string"
},
"maxLength": 20,
"minLength": 1,
"title": "Station Ids",
"type": "array"
},
"date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Date"
},
"dates": {
"anyOf": [
{
"$ref": "#/$defs/DateList"
},
{
"type": "null"
}
],
"default": null
},
"capacity": {
"$ref": "#/$defs/CapacityRange",
"default": {
"min_capacity_kw": "150.0",
"max_capacity_kw": "1000.0"
}
}
},
"required": [
"country_iso3",
"station_ids"
],
"title": "EvseHourlyParams",
"type": "object"
},
"HourlySpikeParams": {
"additionalProperties": false,
"properties": {
"observation_params": {
"$ref": "#/$defs/EvseHourlyParams"
},
"date_range": {
"$ref": "#/$defs/DateRange"
},
"site_id": {
"minLength": 1,
"title": "Site Id",
"type": "string"
},
"peak_window": {
"$ref": "#/$defs/PeakWindow",
"default": {
"from_hour": 6,
"until_hour": 23
}
}
},
"required": [
"observation_params",
"date_range",
"site_id"
],
"title": "HourlySpikeParams",
"type": "object"
},
"PeakWindow": {
"additionalProperties": false,
"properties": {
"from_hour": {
"default": 6,
"maximum": 23,
"minimum": 0,
"title": "From Hour",
"type": "integer"
},
"until_hour": {
"default": 23,
"maximum": 24,
"minimum": 1,
"title": "Until Hour",
"type": "integer"
}
},
"title": "PeakWindow",
"type": "object"
}
},
"title": "hourly_spikeArguments"
}출력 스키마
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "hourly_spikeOutput"
}🟢monthly_sessions_per_stall_day(params)
Is demand per EVSE rising or falling month over month? Reads the monthly_sessions_per_stall_day claim for one site and returns only its result: the status the claim decided from its own observations (computed or insufficient), the typed result, and the display a deliverable would print. The observations behind it are pulled into a scratch directory that is deleted before the call returns, so the rows never enter the conversation and nothing is left on the server to read back later — this call is the whole reading.
입력 스키마
{
"type": "object",
"properties": {
"params": {
"$ref": "#/$defs/MonthlySessionsPerStallDayParams"
}
},
"required": [
"params"
],
"$defs": {
"CapacityRange": {
"additionalProperties": false,
"properties": {
"min_capacity_kw": {
"default": 150,
"title": "Min Capacity Kw",
"type": "number"
},
"max_capacity_kw": {
"default": 1000,
"title": "Max Capacity Kw",
"type": "number"
}
},
"title": "CapacityRange",
"type": "object"
},
"DateRange": {
"additionalProperties": false,
"properties": {
"date_from": {
"title": "Date From",
"type": "string"
},
"date_to": {
"title": "Date To",
"type": "string"
}
},
"required": [
"date_from",
"date_to"
],
"title": "DateRange",
"type": "object"
},
"MonthlySessionsPerStallDayParams": {
"additionalProperties": false,
"properties": {
"site_id": {
"minLength": 1,
"title": "Site Id",
"type": "string"
},
"observation_params": {
"$ref": "#/$defs/StationUtilizationParams"
},
"station_id": {
"anyOf": [
{
"minLength": 1,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Station Id"
}
},
"required": [
"site_id",
"observation_params"
],
"title": "MonthlySessionsPerStallDayParams",
"type": "object"
},
"StationUtilizationParams": {
"additionalProperties": false,
"properties": {
"country_iso3": {
"maxLength": 3,
"minLength": 3,
"pattern": "^[A-Za-z]{3}$",
"title": "Country Iso3",
"type": "string"
},
"station_ids": {
"items": {
"type": "string"
},
"maxLength": 20,
"minLength": 1,
"title": "Station Ids",
"type": "array"
},
"date_range": {
"$ref": "#/$defs/DateRange"
},
"capacity": {
"$ref": "#/$defs/CapacityRange",
"default": {
"min_capacity_kw": "150.0",
"max_capacity_kw": "1000.0"
}
}
},
"required": [
"country_iso3",
"station_ids",
"date_range"
],
"title": "StationUtilizationParams",
"type": "object"
}
},
"title": "monthly_sessions_per_stall_dayArguments"
}출력 스키마
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "monthly_sessions_per_stall_dayOutput"
}🟢peak_hour_co_saturation(params)
When the site reaches its busiest hour of the day, do the stations around it reach their own busiest hours at the same time? Reads the peak_hour_co_saturation claim for one site and returns only its result: the status the claim decided from its own observations (computed or insufficient), the typed result, and the display a deliverable would print. The observations behind it are pulled into a scratch directory that is deleted before the call returns, so the rows never enter the conversation and nothing is left on the server to read back later — this call is the whole reading.
입력 스키마
{
"type": "object",
"properties": {
"params": {
"$ref": "#/$defs/PeakHourCoSaturationParams"
}
},
"required": [
"params"
],
"$defs": {
"CapacityRange": {
"additionalProperties": false,
"properties": {
"min_capacity_kw": {
"default": 150,
"title": "Min Capacity Kw",
"type": "number"
},
"max_capacity_kw": {
"default": 1000,
"title": "Max Capacity Kw",
"type": "number"
}
},
"title": "CapacityRange",
"type": "object"
},
"DateList": {
"additionalProperties": false,
"properties": {
"dates": {
"items": {
"type": "string"
},
"minLength": 1,
"title": "Dates",
"type": "array"
}
},
"required": [
"dates"
],
"title": "DateList",
"type": "object"
},
"DateRange": {
"additionalProperties": false,
"properties": {
"date_from": {
"title": "Date From",
"type": "string"
},
"date_to": {
"title": "Date To",
"type": "string"
}
},
"required": [
"date_from",
"date_to"
],
"title": "DateRange",
"type": "object"
},
"EvseHourlyParams": {
"additionalProperties": false,
"properties": {
"country_iso3": {
"maxLength": 3,
"minLength": 3,
"pattern": "^[A-Za-z]{3}$",
"title": "Country Iso3",
"type": "string"
},
"station_ids": {
"items": {
"type": "string"
},
"maxLength": 20,
"minLength": 1,
"title": "Station Ids",
"type": "array"
},
"date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Date"
},
"dates": {
"anyOf": [
{
"$ref": "#/$defs/DateList"
},
{
"type": "null"
}
],
"default": null
},
"capacity": {
"$ref": "#/$defs/CapacityRange",
"default": {
"min_capacity_kw": "150.0",
"max_capacity_kw": "1000.0"
}
}
},
"required": [
"country_iso3",
"station_ids"
],
"title": "EvseHourlyParams",
"type": "object"
},
"PeakHourCoSaturationParams": {
"additionalProperties": false,
"properties": {
"observation_params": {
"$ref": "#/$defs/EvseHourlyParams"
},
"date_range": {
"$ref": "#/$defs/DateRange"
},
"site_id": {
"pattern": "^[0-9a-fA-F]{32}$",
"title": "Site Id",
"type": "string"
},
"peak_window": {
"$ref": "#/$defs/PeakWindow",
"default": {
"from_hour": 6,
"until_hour": 23
}
},
"tolerance_hours": {
"default": 1,
"maximum": 6,
"minimum": 0,
"title": "Tolerance Hours",
"type": "integer"
}
},
"required": [
"observation_params",
"date_range",
"site_id"
],
"title": "PeakHourCoSaturationParams",
"type": "object"
},
"PeakWindow": {
"additionalProperties": false,
"properties": {
"from_hour": {
"default": 6,
"maximum": 23,
"minimum": 0,
"title": "From Hour",
"type": "integer"
},
"until_hour": {
"default": 23,
"maximum": 24,
"minimum": 1,
"title": "Until Hour",
"type": "integer"
}
},
"title": "PeakWindow",
"type": "object"
}
},
"title": "peak_hour_co_saturationArguments"
}출력 스키마
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "peak_hour_co_saturationOutput"
}🟢poi_context(params, places)
What kind of place is this site sitting in? Reads the poi_context claim for one site and returns only its result: the status the claim decided from its own observations (computed or insufficient), the typed result, and the display a deliverable would print. The observations behind it are pulled into a scratch directory that is deleted before the call returns, so the rows never enter the conversation and nothing is left on the server to read back later — this call is the whole reading. places carries the rows this claim reads, because they are transcribed by the caller rather than fetched.
입력 스키마
{
"type": "object",
"properties": {
"params": {
"$ref": "#/$defs/PoiContextParams"
},
"places": {
"items": {
"$ref": "#/$defs/PlaceRow"
},
"title": "Places",
"type": "array"
}
},
"required": [
"params",
"places"
],
"$defs": {
"PlaceRow": {
"additionalProperties": true,
"properties": {
"name": {
"minLength": 1,
"title": "Name",
"type": "string"
},
"station_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Station Id"
},
"kind": {
"minLength": 1,
"title": "Kind",
"type": "string"
},
"dist_m": {
"minimum": 0,
"title": "Dist M",
"type": "integer"
},
"lat": {
"title": "Lat",
"type": "number"
},
"lon": {
"title": "Lon",
"type": "number"
},
"place_ref": {
"minLength": 1,
"title": "Place Ref",
"type": "string"
},
"source": {
"enum": [
"google_places",
"chargefinder"
],
"title": "Source",
"type": "string"
},
"rating": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Rating"
},
"reviews": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Reviews"
},
"co_located": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Co Located"
},
"note": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Note"
}
},
"required": [
"name",
"kind",
"dist_m",
"lat",
"lon",
"place_ref",
"source"
],
"title": "PlaceRow",
"type": "object"
},
"PoiContextParams": {
"additionalProperties": false,
"properties": {
"site_id": {
"minLength": 1,
"title": "Site Id",
"type": "string"
}
},
"required": [
"site_id"
],
"title": "PoiContextParams",
"type": "object"
}
},
"title": "poi_contextArguments"
}출력 스키마
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "poi_contextOutput"
}🟢rank_gap(params)
Where does this site sit in its estate's ranking, and how far is it from the estate median and the estate leader? Reads the rank_gap claim for one site and returns only its result: the status the claim decided from its own observations (computed or insufficient), the typed result, and the display a deliverable would print. The observations behind it are pulled into a scratch directory that is deleted before the call returns, so the rows never enter the conversation and nothing is left on the server to read back later — this call is the whole reading.
입력 스키마
{
"type": "object",
"properties": {
"params": {
"$ref": "#/$defs/RankGapParams"
}
},
"required": [
"params"
],
"$defs": {
"CapacityRange": {
"additionalProperties": false,
"properties": {
"min_capacity_kw": {
"default": 150,
"title": "Min Capacity Kw",
"type": "number"
},
"max_capacity_kw": {
"default": 1000,
"title": "Max Capacity Kw",
"type": "number"
}
},
"title": "CapacityRange",
"type": "object"
},
"DateRange": {
"additionalProperties": false,
"properties": {
"date_from": {
"title": "Date From",
"type": "string"
},
"date_to": {
"title": "Date To",
"type": "string"
}
},
"required": [
"date_from",
"date_to"
],
"title": "DateRange",
"type": "object"
},
"EstateScope": {
"additionalProperties": false,
"properties": {
"country_iso3": {
"maxLength": 3,
"minLength": 3,
"pattern": "^[A-Za-z]{3}$",
"title": "Country Iso3",
"type": "string"
},
"station_ids": {
"items": {
"pattern": "^[0-9a-fA-F]{32}$",
"type": "string"
},
"maxLength": 50,
"minLength": 2,
"title": "Station Ids",
"type": "array"
},
"date_range": {
"$ref": "#/$defs/DateRange"
},
"capacity": {
"$ref": "#/$defs/CapacityRange",
"default": {
"min_capacity_kw": "150.0",
"max_capacity_kw": "1000.0"
}
}
},
"required": [
"country_iso3",
"station_ids",
"date_range"
],
"title": "EstateScope",
"type": "object"
},
"RankGapParams": {
"additionalProperties": false,
"properties": {
"site_id": {
"pattern": "^[0-9a-fA-F]{32}$",
"title": "Site Id",
"type": "string"
},
"estate": {
"$ref": "#/$defs/EstateScope"
},
"station_id": {
"pattern": "^[0-9a-fA-F]{32}$",
"title": "Station Id",
"type": "string"
}
},
"required": [
"site_id",
"estate",
"station_id"
],
"title": "RankGapParams",
"type": "object"
}
},
"title": "rank_gapArguments"
}출력 스키마
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "rank_gapOutput"
}🟢road_context(params)
What road does this site sit on, and what class is it? Reads the road_context claim for one site and returns only its result: the status the claim decided from its own observations (computed or insufficient), the typed result, and the display a deliverable would print. The observations behind it are pulled into a scratch directory that is deleted before the call returns, so the rows never enter the conversation and nothing is left on the server to read back later — this call is the whole reading.
입력 스키마
{
"type": "object",
"properties": {
"params": {
"$ref": "#/$defs/RoadContextParams"
}
},
"required": [
"params"
],
"$defs": {
"OvertureRoadsParams": {
"additionalProperties": false,
"properties": {
"country_iso3": {
"maxLength": 3,
"minLength": 3,
"pattern": "^[A-Za-z]{3}$",
"title": "Country Iso3",
"type": "string"
},
"station_ids": {
"items": {
"type": "string"
},
"maxLength": 20,
"minLength": 1,
"title": "Station Ids",
"type": "array"
},
"radius_m": {
"anyOf": [
{
"exclusiveMinimum": 0,
"maximum": 10000,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Radius M"
}
},
"required": [
"country_iso3",
"station_ids"
],
"title": "OvertureRoadsParams",
"type": "object"
},
"RoadContextParams": {
"additionalProperties": false,
"properties": {
"site_id": {
"minLength": 1,
"title": "Site Id",
"type": "string"
},
"observation_params": {
"$ref": "#/$defs/OvertureRoadsParams"
}
},
"required": [
"site_id",
"observation_params"
],
"title": "RoadContextParams",
"type": "object"
}
},
"title": "road_contextArguments"
}출력 스키마
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "road_contextOutput"
}🟢sessions_per_stall_day(params)
How hard is each EVSE at this site working per day? Reads the sessions_per_stall_day claim for one site and returns only its result: the status the claim decided from its own observations (computed or insufficient), the typed result, and the display a deliverable would print. The observations behind it are pulled into a scratch directory that is deleted before the call returns, so the rows never enter the conversation and nothing is left on the server to read back later — this call is the whole reading.
입력 스키마
{
"type": "object",
"properties": {
"params": {
"$ref": "#/$defs/SessionsPerStallDayParams"
}
},
"required": [
"params"
],
"$defs": {
"CapacityRange": {
"additionalProperties": false,
"properties": {
"min_capacity_kw": {
"default": 150,
"title": "Min Capacity Kw",
"type": "number"
},
"max_capacity_kw": {
"default": 1000,
"title": "Max Capacity Kw",
"type": "number"
}
},
"title": "CapacityRange",
"type": "object"
},
"DateRange": {
"additionalProperties": false,
"properties": {
"date_from": {
"title": "Date From",
"type": "string"
},
"date_to": {
"title": "Date To",
"type": "string"
}
},
"required": [
"date_from",
"date_to"
],
"title": "DateRange",
"type": "object"
},
"SessionsPerStallDayParams": {
"additionalProperties": false,
"properties": {
"site_id": {
"minLength": 1,
"title": "Site Id",
"type": "string"
},
"observation_params": {
"$ref": "#/$defs/StationUtilizationParams"
},
"station_id": {
"anyOf": [
{
"minLength": 1,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Station Id"
}
},
"required": [
"site_id",
"observation_params"
],
"title": "SessionsPerStallDayParams",
"type": "object"
},
"StationUtilizationParams": {
"additionalProperties": false,
"properties": {
"country_iso3": {
"maxLength": 3,
"minLength": 3,
"pattern": "^[A-Za-z]{3}$",
"title": "Country Iso3",
"type": "string"
},
"station_ids": {
"items": {
"type": "string"
},
"maxLength": 20,
"minLength": 1,
"title": "Station Ids",
"type": "array"
},
"date_range": {
"$ref": "#/$defs/DateRange"
},
"capacity": {
"$ref": "#/$defs/CapacityRange",
"default": {
"min_capacity_kw": "150.0",
"max_capacity_kw": "1000.0"
}
}
},
"required": [
"country_iso3",
"station_ids",
"date_range"
],
"title": "StationUtilizationParams",
"type": "object"
}
},
"title": "sessions_per_stall_dayArguments"
}출력 스키마
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "sessions_per_stall_dayOutput"
}🟢site_profile(params)
What is this site — how many EVSEs, and how close is the nearest station? Reads the site_profile claim for one site and returns only its result: the status the claim decided from its own observations (computed or insufficient), the typed result, and the display a deliverable would print. The observations behind it are pulled into a scratch directory that is deleted before the call returns, so the rows never enter the conversation and nothing is left on the server to read back later — this call is the whole reading.
입력 스키마
{
"type": "object",
"properties": {
"params": {
"$ref": "#/$defs/SiteProfileParams"
}
},
"required": [
"params"
],
"$defs": {
"NearbyStationParams": {
"additionalProperties": false,
"properties": {
"country_iso3": {
"maxLength": 3,
"minLength": 3,
"pattern": "^[A-Za-z]{3}$",
"title": "Country Iso3",
"type": "string"
},
"lat": {
"maximum": 90,
"minimum": -90,
"title": "Lat",
"type": "number"
},
"lng": {
"maximum": 180,
"minimum": -180,
"title": "Lng",
"type": "number"
},
"radius_km": {
"exclusiveMinimum": 0,
"maximum": 10,
"title": "Radius Km",
"type": "number"
},
"limit": {
"anyOf": [
{
"maximum": 50,
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Limit"
}
},
"required": [
"country_iso3",
"lat",
"lng",
"radius_km"
],
"title": "NearbyStationParams",
"type": "object"
},
"SiteProfileParams": {
"additionalProperties": false,
"properties": {
"site_id": {
"pattern": "^[0-9a-fA-F]{32}$",
"title": "Site Id",
"type": "string"
},
"location": {
"$ref": "#/$defs/NearbyStationParams"
}
},
"required": [
"site_id",
"location"
],
"title": "SiteProfileParams",
"type": "object"
}
},
"title": "site_profileArguments"
}출력 스키마
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "site_profileOutput"
}🟢site_ranking(params)
How do the estate's sites rank on sessions per EVSE-day over one window, and how far is the leader above the estate median? Reads the site_ranking claim for one site and returns only its result: the status the claim decided from its own observations (computed or insufficient), the typed result, and the display a deliverable would print. The observations behind it are pulled into a scratch directory that is deleted before the call returns, so the rows never enter the conversation and nothing is left on the server to read back later — this call is the whole reading.
입력 스키마
{
"type": "object",
"properties": {
"params": {
"$ref": "#/$defs/SiteRankingParams"
}
},
"required": [
"params"
],
"$defs": {
"CapacityRange": {
"additionalProperties": false,
"properties": {
"min_capacity_kw": {
"default": 150,
"title": "Min Capacity Kw",
"type": "number"
},
"max_capacity_kw": {
"default": 1000,
"title": "Max Capacity Kw",
"type": "number"
}
},
"title": "CapacityRange",
"type": "object"
},
"DateRange": {
"additionalProperties": false,
"properties": {
"date_from": {
"title": "Date From",
"type": "string"
},
"date_to": {
"title": "Date To",
"type": "string"
}
},
"required": [
"date_from",
"date_to"
],
"title": "DateRange",
"type": "object"
},
"EstateScope": {
"additionalProperties": false,
"properties": {
"country_iso3": {
"maxLength": 3,
"minLength": 3,
"pattern": "^[A-Za-z]{3}$",
"title": "Country Iso3",
"type": "string"
},
"station_ids": {
"items": {
"pattern": "^[0-9a-fA-F]{32}$",
"type": "string"
},
"maxLength": 50,
"minLength": 2,
"title": "Station Ids",
"type": "array"
},
"date_range": {
"$ref": "#/$defs/DateRange"
},
"capacity": {
"$ref": "#/$defs/CapacityRange",
"default": {
"min_capacity_kw": "150.0",
"max_capacity_kw": "1000.0"
}
}
},
"required": [
"country_iso3",
"station_ids",
"date_range"
],
"title": "EstateScope",
"type": "object"
},
"SiteRankingParams": {
"additionalProperties": false,
"properties": {
"site_id": {
"minLength": 1,
"title": "Site Id",
"type": "string"
},
"estate": {
"$ref": "#/$defs/EstateScope"
}
},
"required": [
"site_id",
"estate"
],
"title": "SiteRankingParams",
"type": "object"
}
},
"title": "site_rankingArguments"
}출력 스키마
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "site_rankingOutput"
}🟢total_charging_minutes(params)
How many minutes of charging did this site actually deliver over the window? Reads the total_charging_minutes claim for one site and returns only its result: the status the claim decided from its own observations (computed or insufficient), the typed result, and the display a deliverable would print. The observations behind it are pulled into a scratch directory that is deleted before the call returns, so the rows never enter the conversation and nothing is left on the server to read back later — this call is the whole reading.
입력 스키마
{
"type": "object",
"properties": {
"params": {
"$ref": "#/$defs/TotalChargingMinutesParams"
}
},
"required": [
"params"
],
"$defs": {
"CapacityRange": {
"additionalProperties": false,
"properties": {
"min_capacity_kw": {
"default": 150,
"title": "Min Capacity Kw",
"type": "number"
},
"max_capacity_kw": {
"default": 1000,
"title": "Max Capacity Kw",
"type": "number"
}
},
"title": "CapacityRange",
"type": "object"
},
"DateRange": {
"additionalProperties": false,
"properties": {
"date_from": {
"title": "Date From",
"type": "string"
},
"date_to": {
"title": "Date To",
"type": "string"
}
},
"required": [
"date_from",
"date_to"
],
"title": "DateRange",
"type": "object"
},
"StationUtilizationParams": {
"additionalProperties": false,
"properties": {
"country_iso3": {
"maxLength": 3,
"minLength": 3,
"pattern": "^[A-Za-z]{3}$",
"title": "Country Iso3",
"type": "string"
},
"station_ids": {
"items": {
"type": "string"
},
"maxLength": 20,
"minLength": 1,
"title": "Station Ids",
"type": "array"
},
"date_range": {
"$ref": "#/$defs/DateRange"
},
"capacity": {
"$ref": "#/$defs/CapacityRange",
"default": {
"min_capacity_kw": "150.0",
"max_capacity_kw": "1000.0"
}
}
},
"required": [
"country_iso3",
"station_ids",
"date_range"
],
"title": "StationUtilizationParams",
"type": "object"
},
"TotalChargingMinutesParams": {
"additionalProperties": false,
"properties": {
"site_id": {
"minLength": 1,
"title": "Site Id",
"type": "string"
},
"observation_params": {
"$ref": "#/$defs/StationUtilizationParams"
},
"station_id": {
"anyOf": [
{
"minLength": 1,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Station Id"
}
},
"required": [
"site_id",
"observation_params"
],
"title": "TotalChargingMinutesParams",
"type": "object"
}
},
"title": "total_charging_minutesArguments"
}출력 스키마
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "total_charging_minutesOutput"
}🟢total_sessions(params)
How much charging demand did this site see over the window? Reads the total_sessions claim for one site and returns only its result: the status the claim decided from its own observations (computed or insufficient), the typed result, and the display a deliverable would print. The observations behind it are pulled into a scratch directory that is deleted before the call returns, so the rows never enter the conversation and nothing is left on the server to read back later — this call is the whole reading.
입력 스키마
{
"type": "object",
"properties": {
"params": {
"$ref": "#/$defs/TotalSessionsParams"
}
},
"required": [
"params"
],
"$defs": {
"CapacityRange": {
"additionalProperties": false,
"properties": {
"min_capacity_kw": {
"default": 150,
"title": "Min Capacity Kw",
"type": "number"
},
"max_capacity_kw": {
"default": 1000,
"title": "Max Capacity Kw",
"type": "number"
}
},
"title": "CapacityRange",
"type": "object"
},
"DateRange": {
"additionalProperties": false,
"properties": {
"date_from": {
"title": "Date From",
"type": "string"
},
"date_to": {
"title": "Date To",
"type": "string"
}
},
"required": [
"date_from",
"date_to"
],
"title": "DateRange",
"type": "object"
},
"StationUtilizationParams": {
"additionalProperties": false,
"properties": {
"country_iso3": {
"maxLength": 3,
"minLength": 3,
"pattern": "^[A-Za-z]{3}$",
"title": "Country Iso3",
"type": "string"
},
"station_ids": {
"items": {
"type": "string"
},
"maxLength": 20,
"minLength": 1,
"title": "Station Ids",
"type": "array"
},
"date_range": {
"$ref": "#/$defs/DateRange"
},
"capacity": {
"$ref": "#/$defs/CapacityRange",
"default": {
"min_capacity_kw": "150.0",
"max_capacity_kw": "1000.0"
}
}
},
"required": [
"country_iso3",
"station_ids",
"date_range"
],
"title": "StationUtilizationParams",
"type": "object"
},
"TotalSessionsParams": {
"additionalProperties": false,
"properties": {
"site_id": {
"minLength": 1,
"title": "Site Id",
"type": "string"
},
"observation_params": {
"$ref": "#/$defs/StationUtilizationParams"
},
"station_id": {
"anyOf": [
{
"minLength": 1,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Station Id"
}
},
"required": [
"site_id",
"observation_params"
],
"title": "TotalSessionsParams",
"type": "object"
}
},
"title": "total_sessionsArguments"
}출력 스키마
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "total_sessionsOutput"
}커뮤니티
증거