[{"name":"MCP_indicators_search_indicators","description":"Find indicators by keywords (French), e.g. \"émissions gaz effet de serre\", \"surface bio\", \"artificialisation\". Accent-, case- and plural-insensitive, with synonyms (vélo/cyclable, GES/gaz à effet de serre, artificialisation/ENAF, PV/photovoltaïque, cantine/restauration collective…). Every significant word must match; generic words (part, nombre, taux, année, jours…) are optional. If nothing matches, indicators matching at least one word are returned with match=\"partial\". Best matches first; an indicator for a specific modality (« … - vélo ») named in the query comes first. Then call query_indicator_data (or get_indicator_details for definitions and sources). Returns: JSON: query, total_count, indicators [{id, libelle, unite, mailles, thematique}] (max 30), truncated flag, match (\"partial\" when not every word matched).","inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Keywords separated by spaces, e.g. \"consommation espace\", \"part actifs vélo\", \"logements vacants\"."}}},"meta":{"file_data_present":false,"mcp_type":"tool","endpoint_name":"search_indicators"}},{"name":"MCP_indicators_list_indicators","description":"List the catalogue of French territorial ecological indicators (~190), optionally filtered. Prefer search_indicators for a topic; use this tool to browse a theme or to know what exists at a given geographic level. Returns: JSON: count, indicators [{id, libelle, unite, mailles, thematique}], filters_applied, themes (distinct values, to refine).","inputSchema":{"type":"object","properties":{"thematique":{"oneOf":[{"type":"null"},{"type":"string"}],"description":"Optional France Nation Verte theme, partial and accent-insensitive match, e.g. \"déplacer\" (mobility), \"loger\" (housing), \"produire\", \"nourrir\", \"consommer\", \"ecosystèmes\"."},"maille":{"oneOf":[{"type":"null"},{"type":"string"}],"description":"Optional geographic level the indicator must be available at: \"region\", \"departement\", \"epci\" or \"commune\"."}}},"meta":{"file_data_present":false,"mcp_type":"tool","endpoint_name":"list_indicators"}},{"name":"MCP_indicators_get_indicator_details","description":"Full metadata of one indicator: definition, calculation method, breakdown dimensions, available years and geographic levels, data completeness, sources. Returns: JSON: metadata {id, libelle, unite, description, methode_calcul, axes {dimension: [values]}, summable, year_range, annees_disponibles [..], mailles_disponibles [..], couverture_geographique, completion {level: ratio 0-1}}, sources [..], available_cubes {level: cube}.","inputSchema":{"type":"object","properties":{"indicator_id":{"type":"string","description":"Numeric indicator id as returned by search_indicators / list_indicators (e.g. \"611\")."}}},"meta":{"file_data_present":false,"mcp_type":"tool","endpoint_name":"get_indicator_details"}},{"name":"MCP_indicators_query_indicator_data","description":"Get the values of an indicator for one territory, or for all territories of a level. Name the territory with `territory` (e.g. \"Montpellier Méditerranée Métropole\", \"Gers\", \"Saint-Brieuc\"): the server resolves it at the requested level; never guess EPCI/commune codes. If the name is ambiguous, status=\"ambiguous\" with `candidates` (no data): retry with the chosen candidate's geocode as geographic_code. Rows are sorted by year, most recent first; `latest_year` is the most recent year with a value, and latest=true returns only that year. Indicators broken down by a dimension (sector, transport mode, distance class…) return one row per modality, labelled in `modalite` (listed in `dimensions`): never add them up yourself, use aggregate=\"sum\" (only for summable indicators). Check `status`: \"ok\", \"ambiguous\", \"territory_not_found\", \"no_data_at_level\" (see `suggestions` for a coarser territory) or \"no_data\". Returns: JSON: status, indicator_id, indicator_name, unite, geographic_level, geographic_code, resolved_territory {libelle, geocode, level}, dimensions, total_count, truncated, data [{geocode, libelle, annee, valeur, modalite {dimension: value}, value_type}], latest_year, year_range, missing_years, coverage_warning, hint; candidates (ambiguous) or suggestions (no_data_at_level).","inputSchema":{"type":"object","properties":{"indicator_id":{"type":"string","description":"Numeric indicator id (e.g. \"611\")."},"geographic_level":{"type":"string","description":"\"region\", \"departement\", \"epci\" or \"commune\"."},"geographic_code":{"oneOf":[{"type":"null"},{"type":"string"}],"description":"Optional territory code, if known for sure: region 2 digits (\"93\" PACA), département 2-3 chars (\"13\", \"2A\", \"974\"), EPCI 9-digit SIREN, commune 5-digit INSEE (\"75056\" Paris). Prefer `territory`."},"year":{"oneOf":[{"type":"null"},{"type":"string"}],"description":"Optional year, e.g. \"2022\". Without year (and latest=false), all years are returned."},"limit":{"oneOf":[{"type":"null"},{"type":"integer"}],"description":"Max rows returned (default 100, max 500).","default":100},"territory":{"oneOf":[{"type":"null"},{"type":"string"}],"description":"Optional territory name, resolved by the server at geographic_level (ignored if geographic_code is given). Without territory or geographic_code, every territory of the level is returned (13 regions, ~100 départements, ~1 250 EPCI, ~35 000 communes: use year/latest and limit)."},"latest":{"oneOf":[{"type":"null"},{"type":"boolean"}],"description":"If true, return only the most recent year with a value (per the queried territory, or overall for a whole level)."},"aggregate":{"oneOf":[{"type":"null"},{"type":"string"}],"description":"\"sum\" to add up the modalities of a broken-down indicator: one total per territory and year. Refused for non-summable indicators (percentages, ratios, per-capita values)."},"include_nulls":{"oneOf":[{"type":"null"},{"type":"boolean"}],"description":"If true, keep rows whose value is empty (dropped by default)."}}},"meta":{"file_data_present":false,"mcp_type":"tool","endpoint_name":"query_indicator_data"}},{"name":"MCP_indicators_find_territory","description":"Find the official code of a French territory from (part of) its name, e.g. \"Lyon\", \"Bouches-du-Rhône\", \"Grand Paris\". query_indicator_data accepts the name directly (`territory`), so this tool is mainly for exploring or disambiguating. Accent-, case- and punctuation-insensitive; the exact name comes first (exact_match=true), e.g. \"Saint-Brieuc\" before \"Saint-Brieuc-des-Iffs\". Regions accept abbreviations (PACA, IDF, AURA…). Returns: JSON: name, total_count, territories [{geographic_level, geocode, libelle, exact_match, departement}] (best first, max 20 per level).","inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"Territory name or fragment (e.g. \"Métropole de Lyon\", \"Toulouse\", \"2A\")."},"geographic_level":{"oneOf":[{"type":"null"},{"type":"string"}],"description":"Optional level to restrict the search: \"region\", \"departement\", \"epci\" or \"commune\". Default: all levels."}}},"meta":{"file_data_present":false,"mcp_type":"tool","endpoint_name":"find_territory"}}]