mcpbeat Sign in

Tern EV-Charging Analytics MCP Server

answering

Tern EV-Charging Analytics is answering right now. Last checked 12 min ago. It exposes 26 tools.

EV-charging site analytics: utilization, demand, peak saturation and corridor benchmarks.

Uptime history 18 hours of history
18 hours agonow
100.0%
Uptime 24h
67 of 67 checks
26
Tools
read from the server
109 ms
Response time
average over 24h
open, no key
Access
streamable-http

Nothing serious here today

Today is the operative word: we check Tern EV-Charging Analytics every 15 minutes and re-read its code on every release. Watch it and you find out the day that stops being true.

Three servers free · no card

Connect this server

Endpoint below is the one we actually reach during checks — not the one copied from a README. Last verified 12 min ago.

run in your terminal
claude mcp add usetern --transport http https://tern-mcp-537572042041.europe-west4.run.app/mcp
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "usetern": {
      "url": "https://tern-mcp-537572042041.europe-west4.run.app/mcp"
    }
  }
}
~/.codex/config.toml
[mcp_servers.usetern]
url = "https://tern-mcp-537572042041.europe-west4.run.app/mcp"
.cursor/mcp.json
{
  "mcpServers": {
    "usetern": {
      "url": "https://tern-mcp-537572042041.europe-west4.run.app/mcp"
    }
  }
}
.vscode/mcp.json
{
  "mcpServers": {
    "usetern": {
      "url": "https://tern-mcp-537572042041.europe-west4.run.app/mcp"
    }
  }
}

Available tools 26

Read directly from the server with tools/list, grouped by what they act on. If a tool disappears, we record the date.

aggregate
aggregate_charging_utilization
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.
aggregate_evse_utilization
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.
corridor
corridor_benchmark
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.
corridor_comparison
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.
estate
estate_coverage
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.
estate_monthly_series
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.
site
site_profile
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.
site_ranking
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.
total
total_charging_minutes
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.
total_sessions
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.
area
area_benchmark
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.
avg
avg_session_minutes
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.
busy
busy_evse_hours
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.
charging
search_charging_stations
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.
daily
daily_spike
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.
day
day_vs_similar
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.
demand
demand_share_multiple
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.
evses
list_evses
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.
hourly
hourly_spike
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.
monthly
monthly_sessions_per_stall_day
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.
nearby
nearby_charging_stations
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.
peak
peak_hour_co_saturation
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.
poi
poi_context
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.
rank
rank_gap
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.
road
road_context
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.
sessions
sessions_per_stall_day
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.

Endpoints

URLTransportStateLatencyChecked
https://tern-mcp-537572042041.europe-west4.run.app/mcp streamable-http answering 108 ms 12 min ago

Alternatives to Tern EV-Charging Analytics

same job, measured the same way
I
Tern EV-Charging Analytics (dev)
by useternai

EV-charging site analytics: utilization, demand, peak saturation and corridor benchmarks.

26 tools answering
Pensiata - Bulgarian Pension Fund Analytics
by nvasilevv

Bulgarian pension fund analytics — NAV data, metrics, rankings, and benchmarks.

26 tools answering
QR Top
by qr-top

Dynamic QR codes by chat: edit destinations after printing, smart routing, and scan analytics.

answering
Sociality.io MCP
by sociality

Social media analytics, post insights, and competitor benchmarking for AI agents.

answering
Ionis MCP
by qso-graph

HF propagation analytics. 175M WSPR/RBN signatures, band openings, solar correlation.

151 installs/wk local only
Ionis MCP
by ionis-ai

HF propagation analytics. 175M WSPR/RBN signatures, band openings, solar correlation.

local only
Shopops MCP
by enzoemir1

AI e-commerce operations. Inventory, pricing, segmentation, and analytics.

32 installs/wk local only
Option Desk
by avidquant

Option analytics over the SYNTH sample or a permitted chain: Greeks, positioning, payoffs, plots.

13 tools answering

Tern EV-Charging Analytics — questions

Answers built from our own checks of this server.

What can Tern EV-Charging Analytics do?
It exposes 26 tools, read directly from the server on our last check. Among them: aggregate_charging_utilization, aggregate_evse_utilization, area_benchmark, avg_session_minutes, busy_evse_hours, corridor_benchmark and 20 more. The full list with descriptions is on this page — we take it from the server itself via tools/list, not from a README. How MCP servers expose tools in the first place →
What is Tern EV-Charging Analytics mostly used for?
Its tools cluster around estate, corridor and site. That is what this server is built to work with — the grouping comes from the actual tool names, not from a category we assigned.
Is Tern EV-Charging Analytics working right now?
We send a real MCP handshake every 15 minutes. Over the last 24 hours 67 of 67 checks got a reply (100.0%), average response time 109 ms. The bar chart above shows every period we have measured.
How do I connect Tern EV-Charging Analytics?
Copy the ready config from this page — we generate it for Claude Code, Claude Desktop, Codex, Cursor and VS Code, each with the file path that client actually reads. It is a remote server, so there is nothing to install — the client connects to the address.
Does Tern EV-Charging Analytics need an API key?
No. Tern EV-Charging Analytics completed a full MCP handshake with us as an anonymous client and listed its tools without asking for anything. All 26 of them are readable on this page. This is what we observed, not what the docs claim.
How fast is Tern EV-Charging Analytics?
It answers our handshake in 109 ms on average, which is faster than 82% of all working MCP servers we measure. That puts it in the quick quarter of the ecosystem. The comparison comes from our own checks across the whole registry, every 15 minutes.