Skip to main content
Glama

find_charging_station

Read-onlyIdempotent

Returns EV charging sites near a place or coordinate: operator, plugs, max power, price per kWh where published, and points free now where live status is published. Filters: plug, power (min/max kW), operator, free now, conditions (24/7, card, free of charge, public). Use when an EV driver asks where to charge ("Wo kann ich laden?", "CCS 150 kW near Leipzig", "ist gerade eine Säule frei?"). Do NOT use for petrol or diesel (find_cheapest_fuel) or E-Kennzeichen rules (get_driving_rules). Radius ≤ 25 km, ≤ 10 sites; missing availability is unknown, never free. Show the attribution line.

Input Schema

NameRequiredDescriptionDefault
latNoLatitude in WGS 84, e.g. 48.137. Use with lon when the caller already holds coordinates; otherwise use place.
lonNoLongitude in WGS 84, e.g. 11.576. Use with lat; otherwise use place.
limitNoHow many lines to return, nearest first (1–10, default 5). Places within 50 m that read alike are folded into one line that says how many units it holds; structuredContent.sites has one entry per place of the lines shown, with siteIds naming every record of that place, so it can be longer than limit.
placeNoWhere to look, as free text: a city ("München", "Munich"), a district or Kreis ("Kreis Fulda"), a Bundesland, a station or stop ("Hamburg Hbf"), a motorway junction ("AK Neufahrn"), or a street address with a house number ("Bahnhofstraße 12, 36037 Fulda"). A motorway number alone ("A7") resolves to the road, which has no single point — name a town or junction on it instead. Use this instead of coordinates whenever the person named a place. An address needs its town or postcode — a street and a number alone exist in many towns. A place or lat+lon is required (unless the tool names another way in, such as a road): when the person named neither, ask them for a town, a postcode or their position before calling. Given both, the answer is about lat+lon with the place as its label, and is refused only when the two lie further apart than the search reaches.
languageNoSet this on every call to the language the person is writing in: "en" if they wrote English, "de" if they wrote German. Do not leave it out: it defaults to German ("de"), which is only the fallback when the language is genuinely unclear, so an English question sent without it is answered in German — a wrong answer. Place names, station names and road numbers are never translated in either language; in English the German term is kept in parentheses so the person recognises it on signs and in local apps.de
operatorNoOnly sites of this charge-point operator brand, as the person names it: "IONITY", "EnBW", "Tesla", "Aral pulse". Spellings of one brand match together ("EnBW mobility+ AG", "ENBW"); sites whose source names no operator are left out. Omit unless the person named an operator — a question about WHO operates the chargers sets none.
connectorNoPlug the vehicle needs: "ccs2" (CCS Combo 2 — the DC fast-charging standard on almost every European EV), "type2" (Typ 2 / Mennekes, the AC socket), "chademo" (older Japanese DC, e.g. Nissan Leaf) or "mcs" (Megawatt Charging System, the plug of electric heavy lorries — only for a lorry or truck). Omit unless the person named their plug or their vehicle — filtering on a guess hides chargers they could have used.
radius_kmNoSearch radius around the place in kilometres (1–25, default 10). A charging stop is worth a detour, so this is wider than the fuel radius — but 25 km is the cap, and a larger circle is a dataset request rather than a driver's question.
conditionsNoOnly sites with ONE point that meets every listed term: "open247" (open around the clock, "rund um die Uhr", "24/7"), "card" (pay by credit or debit card at the charger, "mit Karte zahlen"), "free" (free of charge, "kostenlos"), "public" (open to the public, not customers only). Example: ["open247"]. The Bundesnetzagentur charging register states these, and "free" also an operator's published ad-hoc tariff of 0 no older than 90 days; a site that states nothing is left out and counted, never assumed. Omit unless the person asked for one.
max_power_kwNoOnly charging points of at most this many kW (1–1000). Use for a normal AC post ("normale AC-Säule", "Wallbox": 22) or, with min_power_kw, a band (50 and 149 = DC fast but not HPC). Never below min_power_kw. Omit unless the person set an upper limit.
min_power_kwNoOnly charging points of at least this many kW (1–1000). Use when the person names a number or asks for fast charging: 50 = DC fast (a bare "fast"/"schnell"/"Schnelllader"), 150 = HPC ("HPC", "ultra", "ultraschnell"), 300 = the fastest posts in Germany. Omit for "where can I charge" — 11 kW overnight is a valid answer to that question.
only_availableNoWhen true, return only sites with at least one point reported FREE right now. Default false. Use it when the person asks what is free at this moment. Note that only some operators publish live status: the result always says how many nearby sites were dropped because their status is unknown, so the filter never silently hides a charger that may well be free.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / connector / description
      Previous value: -"Plug the car needs: \"ccs2\" (CCS Combo 2 — the DC fast-charging standard on almost every European EV), \"type2\" (Typ 2 / Mennekes, the AC socket) or \"chademo\" (older Japanese DC, e.g. Nissan Leaf). Omit unless the person named their plug or their car model — filtering on a guess hides chargers they could have used."New value: +"Plug the vehicle needs: \"ccs2\" (CCS Combo 2 — the DC fast-charging standard on almost every European EV), \"type2\" (Typ 2 / Mennekes, the AC socket), \"chademo\" (older Japanese DC, e.g. Nissan Leaf) or \"mcs\" (Megawatt Charging System, the plug of electric heavy lorries — only for a lorry or truck). Omit unless the person named their plug or their vehicle — filtering on a guess hides chargers they could have used."
    • changedInput schema / properties / connector / enum
      Previous value: -[
      -  "ccs2",
      -  "type2",
      -  "chademo"
      -]New value: +[
      +  "ccs2",
      +  "type2",
      +  "chademo",
      +  "mcs"
      +]
  2. Changed1 schema field changed
    • changedInput schema / properties / conditions / description
      Previous value: -"Only sites with ONE point that meets every listed term: \"open247\" (open around the clock, \"rund um die Uhr\", \"24/7\"), \"card\" (pay by credit or debit card at the charger, \"mit Karte zahlen\"), \"free\" (free of charge, \"kostenlos\"), \"public\" (open to the public, not customers only). Example: [\"open247\"]. Only the Bundesnetzagentur charging register states these; a site that states nothing is left out and counted, never assumed. Omit unless the person asked for one."New value: +"Only sites with ONE point that meets every listed term: \"open247\" (open around the clock, \"rund um die Uhr\", \"24/7\"), \"card\" (pay by credit or debit card at the charger, \"mit Karte zahlen\"), \"free\" (free of charge, \"kostenlos\"), \"public\" (open to the public, not customers only). Example: [\"open247\"]. The Bundesnetzagentur charging register states these, and \"free\" also an operator's published ad-hoc tariff of 0 no older than 90 days; a site that states nothing is left out and counted, never assumed. Omit unless the person asked for one."
  3. Changed1 schema field changed
    • addedInput schema / properties / conditions
      Added value: +{
      +  "description": "Only sites with ONE point that meets every listed term: \"open247\" (open around the clock, \"rund um die Uhr\", \"24/7\"), \"card\" (pay by credit or debit card at the charger, \"mit Karte zahlen\"), \"free\" (free of charge, \"kostenlos\"), \"public\" (open to the public, not customers only). Example: [\"open247\"]. Only the Bundesnetzagentur charging register states these; a site that states nothing is left out and counted, never assumed. Omit unless the person asked for one.",
      +  "items": {
      +    "enum": [
      +      "open247",
      +      "card",
      +      "free",
      +      "public"
      +    ],
      +    "type": "string"
      +  },
      +  "maxItems": 4,
      +  "minItems": 1,
      +  "type": "array"
      +}
  4. Changed1 schema field changed
    • changedInput schema / properties / place / description
      Previous value: -"Where to look, as free text: a city (\"München\", \"Munich\"), a district or Kreis (\"Kreis Fulda\"), a Bundesland, a station or stop (\"Hamburg Hbf\"), a motorway junction (\"AK Neufahrn\"), or a street address with a house number (\"Bahnhofstraße 12, 36037 Fulda\"). A motorway number alone (\"A7\") resolves to the road, which has no single point — name a town or junction on it instead. Use this instead of coordinates whenever the person named a place. An address needs its town or postcode — a street and a number alone exist in many towns. Give either place OR lat+lon, never both."New value: +"Where to look, as free text: a city (\"München\", \"Munich\"), a district or Kreis (\"Kreis Fulda\"), a Bundesland, a station or stop (\"Hamburg Hbf\"), a motorway junction (\"AK Neufahrn\"), or a street address with a house number (\"Bahnhofstraße 12, 36037 Fulda\"). A motorway number alone (\"A7\") resolves to the road, which has no single point — name a town or junction on it instead. Use this instead of coordinates whenever the person named a place. An address needs its town or postcode — a street and a number alone exist in many towns. A place or lat+lon is required (unless the tool names another way in, such as a road): when the person named neither, ask them for a town, a postcode or their position before calling. Given both, the answer is about lat+lon with the place as its label, and is refused only when the two lie further apart than the search reaches."
  5. Changed2 schema fields changed
    • addedInput schema / properties / max_power_kw
      Added value: +{
      +  "description": "Only charging points of at most this many kW (1–1000). Use for a normal AC post (\"normale AC-Säule\", \"Wallbox\": 22) or, with min_power_kw, a band (50 and 149 = DC fast but not HPC). Never below min_power_kw. Omit unless the person set an upper limit.",
      +  "maximum": 1000,
      +  "minimum": 1,
      +  "type": "number"
      +}
    • addedInput schema / properties / operator
      Added value: +{
      +  "description": "Only sites of this charge-point operator brand, as the person names it: \"IONITY\", \"EnBW\", \"Tesla\", \"Aral pulse\". Spellings of one brand match together (\"EnBW mobility+ AG\", \"ENBW\"); sites whose source names no operator are left out. Omit unless the person named an operator — a question about WHO operates the chargers sets none.",
      +  "maxLength": 80,
      +  "minLength": 1,
      +  "type": "string"
      +}
  6. Changed1 schema field changed
    • changedInput schema / properties / limit / description
      Previous value: -"How many lines to return, nearest first (1–10, default 5). Records of one place within 50 m that read alike are folded into one line that says how many units it holds; structuredContent.sites lists every record of the lines shown, so it can be longer than limit."New value: +"How many lines to return, nearest first (1–10, default 5). Places within 50 m that read alike are folded into one line that says how many units it holds; structuredContent.sites has one entry per place of the lines shown, with siteIds naming every record of that place, so it can be longer than limit."
  7. First observed

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, and the description adds genuinely non-obvious behavior beyond them: the ≤25 km radius and ≤10 sites caps, the rule that missing availability is "unknown, never free", and the obligation to show the attribution line. These are exactly the traits an agent cannot infer from structured fields and would otherwise get wrong.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with what is returned, then filters, then use/don't-use, then hard limits — a sensible ordering with no filler sentences. It is dense to the point of being a run-on in the middle (filter list plus conditions parenthetical), which costs a point but no sentence is truly wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter, no-output-schema tool this is complete: it describes the shape of the answer (fields returned), the caps, the unknown-vs-free semantics, and the attribution requirement. Nothing an agent needs in order to call it correctly or interpret the result is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already documents every parameter in depth (including enum meanings, units, and omission advice), so the description's filter summary (plug, power, operator, free now, conditions) largely restates structured data. The one added semantic, that absent availability must not be treated as free, is behavioral rather than parameter-specific. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource ("Returns EV charging sites near a place or coordinate") and immediately enumerates the returned fields (operator, plugs, max power, price per kWh, live-free status). It also names the two sibling tools it is NOT for (find_cheapest_fuel, get_driving_rules), so an agent can separate it from the fuel and rules tools without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit trigger phrasings in the user's own words ("Wo kann ich laden?", "CCS 150 kW near Leipzig", "ist gerade eine Säule frei?") plus a hard exclusion list for petrol/diesel and E-Kennzeichen rules with the correct alternatives named. The radius cap and result cap are stated as operating constraints, so the agent knows both when to call and the limits of what it can ask for.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources