Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,542Letters: 14Defects: 1,324counted 4 min ago
teppi

Server definition

Hash
sha256:6d4f260ccb8d84d8ed83606b1be4d3dbf51e11e7ca6b66c243d453d8503537b2
What it is
What a remote MCP server returned when asked what it offers: 11 tools

The blob, as servednamed by its sha256

{ "instructions": "André est un agent d'analyse électorale française. Il donne accès aux résultats de 55 élections (1999-2026) au niveau bureau de vote, avec des données socio-démographiques, des cartes électorales et des outils d'analyse avancés.", "tools": [ { "description": "Crée un tableau de données formaté à partir de données structurées.\n\n Utile pour présenter des résultats calculés ou combinés.\n Retourne un tableau texte formaté.\n ", "inputSchema": { "properties": { "columns": { "items": { "additionalProperties": true, "type": "object" }, "title": "Columns", "type": "array" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Description" }, "rows": { "items": { "additionalProperties": true, "type": "object" }, "title": "Rows", "type": "array" }, "title": { "title": "Title", "type": "string" } }, "required": [ "title", "columns", "rows" ], "title": "create_data_tableArguments", "type": "object" }, "name": "create_data_table", "outputSchema": { "properties": { "result": { "title": "Result", "type": "string" } }, "required": [ "result" ], "title": "create_data_tableOutput", "type": "object" } }, { "description": "Exporte des données électorales vers un fichier téléchargeable (CSV, JSON, TSV).\n\n Deux modes : data (contenu inline) ou source_path (chemin vers fichier existant).\n ", "inputSchema": { "properties": { "data": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Data" }, "file_format": { "default": "csv", "title": "File Format", "type": "string" }, "filename": { "title": "Filename", "type": "string" }, "source_path": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Source Path" } }, "required": [ "filename" ], "title": "export_dataArguments", "type": "object" }, "name": "export_data", "outputSchema": { "properties": { "result": { "title": "Result", "type": "string" } }, "required": [ "result" ], "title": "export_dataOutput", "type": "object" } }, { "description": "Génère une carte électorale (PNG) pour une élection.\n\n Paramètres :\n - election_id : identifiant élection (ex: '2024_legi_t1', '2020_muni_t2')\n - metric : 'family' (famille politique en tête) ou 'nuance' (score d'une nuance)\n - geography : 'bv' (bureau de vote, défaut) ou 'commune' (carte nationale)\n - department : code département (ex: '13'). Requis pour geography='bv' sauf si commune fourni.\n - commune : code commune (ex: '13055' pour Marseille). Centre la carte sur cette commune.\n - nuance : code nuance quand metric='nuance' (ex: 'RN', 'LFI', 'ENS')\n - region : code région pour geography='commune' (ex: '93' pour PACA)\n\n Exemples :\n - Carte par famille, Bouches-du-Rhône : election_id='2024_legi_t1', department='13'\n - Carte score RN, Marseille : election_id='2024_legi_t1', commune='13055', metric='nuance', nuance='RN'\n - Carte nationale : election_id='2024_euro_t1', geography='commune'\n ", "inputSchema": { "properties": { "canton": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Canton" }, "circonscription": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Circonscription" }, "commune": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Commune" }, "department": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Department" }, "election_id": { "title": "Election Id", "type": "string" }, "geography": { "default": "bv", "title": "Geography", "type": "string" }, "metric": { "default": "family", "title": "Metric", "type": "string" }, "nuance": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Nuance" }, "region": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Region" } }, "required": [ "election_id" ], "title": "generate_mapArguments", "type": "object" }, "name": "generate_map", "outputSchema": { "properties": { "result": { "title": "Result", "type": "string" } }, "required": [ "result" ], "title": "generate_mapOutput", "type": "object" } }, { "description": "Requête les divisions administratives françaises.\n\n Actions : search_commune, get_commune, search_postal,\n list_epci, get_epci, list_cantons, list_departements, list_regions.\n ", "inputSchema": { "properties": { "action": { "title": "Action", "type": "string" }, "commune_code": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Commune Code" }, "departement_code": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Departement Code" }, "epci_code": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Epci Code" }, "postal_code": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Postal Code" }, "search_term": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Search Term" } }, "required": [ "action" ], "title": "query_adminArguments", "type": "object" }, "name": "query_admin", "outputSchema": { "properties": { "result": { "title": "Result", "type": "string" } }, "required": [ "result" ], "title": "query_adminOutput", "type": "object" } }, { "description": "Requête les données DLP (composition sociale des candidats municipaux 2020).\n\n ~546 000 candidats dans ~10 000 communes (≥1 000 hab.).\n Classes : CDOM (dominant), CMOY (moyen), CSUB (subalterne), RET (retraité), AUTRES.\n Actions : summary, composition, parite, listes, candidats, professions, sortants.\n ", "inputSchema": { "properties": { "action": { "title": "Action", "type": "string" }, "classe": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Classe" }, "commune_code": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Commune Code" }, "departement_code": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Departement Code" }, "search": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Search" }, "sexe": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Sexe" }, "sortants_only": { "default": false, "title": "Sortants Only", "type": "boolean" }, "tetes_only": { "default": false, "title": "Tetes Only", "type": "boolean" } }, "required": [ "action" ], "title": "query_dlpArguments", "type": "object" }, "name": "query_dlp", "outputSchema": { "properties": { "result": { "title": "Result", "type": "string" } }, "required": [ "result" ], "title": "query_dlpOutput", "type": "object" } }, { "description": "Requête les données électorales françaises (1999-2026).\n\n Niveaux territoriaux : NATIONAL (aucun filtre), RÉGIONAL (region_code),\n DÉPARTEMENTAL (departement_code), COMMUNAL (commune_code).\n\n Actions de base : list_elections, query_results, list_bureaux, query_bureau,\n query_by_bureau, rank_bureaux, list_circonscriptions, query_circonscription,\n list_cantons, query_canton, search_candidate, query_candidatures, etc.\n\n Actions « panel » (1 appel = analyse complète, évite les boucles) :\n - compare_elections : compare deux scrutins pour un territoire\n (election_id + compare_to_election + commune_code|departement_code,\n candidate_name optionnel).\n - query_all_circonscriptions : vainqueur de CHAQUE circonscription d'un\n territoire en un appel (election_id + commune_code|departement_code,\n législatives uniquement).\n - vote_reserve : score d'une famille + abstention par bureau de vote sur\n les scrutins récents comparables (commune_code + famille).\n - select_communes : sélectionne/classe des communes par critères géo +\n population + électoraux (region_code/departement_code/epci/commune_codes,\n population_min/max, commune_metric, condition, sort_by, limit, order ;\n commune_metric/condition nécessitent election_id). commune_metric accepte\n PLUSIEURS métriques séparées par des virgules — une colonne chacune, en\n un seul appel ; condition et sort_by portent alors sur la première.\n - cross_election_panel : évolution d'un sujet (famille ou nuance_code) par\n commune sur N scrutins (elections=ids séparés par des virgules + scope\n optionnel commune_code/departement_code/region_code/commune_codes ;\n SANS scope = national, panel complet en data_file). Renvoie aussi\n « ensemble » : score du périmètre entier par scrutin + delta, pondéré\n par les exprimés — ne pas boucler par département. famille et nuance_code\n acceptent PLUSIEURS sujets séparés par des virgules ('Gauche,Droite') :\n tous en un appel, agrégats dans « ensembles ». group_by='region'|\n 'departement' ajoute un agrégat pondéré PAR MAILLE dans le même appel —\n ne jamais boucler un appel par région.\n - bureau_breakdown : pivot par bureau (top_n nuances/blocs + participation,\n with_sociodem optionnel) pour commune_code + election_id.\n ", "inputSchema": { "properties": { "action": { "title": "Action", "type": "string" }, "bureau_code": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Bureau Code" }, "bureau_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Bureau Id" }, "by_family": { "default": false, "title": "By Family", "type": "boolean" }, "candidate_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Candidate Name" }, "candidate_query": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Candidate Query" }, "candidate_search": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Candidate Search" }, "canton_code": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Canton Code" }, "circonscription_code": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Circonscription Code" }, "commune_code": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Commune Code" }, "commune_codes": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Commune Codes" }, "commune_metric": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Commune Metric" }, "compare_to_election": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Compare To Election" }, "condition": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Condition" }, "departement_code": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Departement Code" }, "election_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Election Id" }, "elections": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Elections" }, "epci": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Epci" }, "famille": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Famille" }, "family_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Family Name" }, "group_by": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Group By" }, "limit": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Limit" }, "list_search": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "List Search" }, "nuance_code": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Nuance Code" }, "nuance_level": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Nuance Level" }, "offset": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Offset" }, "order": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Order" }, "population_max": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Population Max" }, "population_min": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Population Min" }, "rank_metric": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Rank Metric" }, "region_code": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Region Code" }, "scrutin_type": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Scrutin Type" }, "sort_by": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Sort By" }, "top_n": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Top N" }, "tour": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Tour" }, "use_ferd_coding": { "default": false, "title": "Use Ferd Coding", "type": "boolean" }, "with_sociodem": { "default": false, "title": "With Sociodem", "type": "boolean" } }, "required": [ "action" ], "title": "query_electionsArguments", "type": "object" }, "name": "query_elections", "outputSchema": { "properties": { "result": { "title": "Result", "type": "string" } }, "required": [ "result" ], "title": "query_electionsOutput", "type": "object" } }, { "description": "Requête les élus de la République française (base BRÉF).\n\n Actions : search_elu, list_mandate_types, list_elus.\n ", "inputSchema": { "properties": { "action": { "title": "Action", "type": "string" }, "departement_code": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Departement Code" }, "mandate_type": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Mandate Type" }, "search_term": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Search Term" } }, "required": [ "action" ], "title": "query_elusArguments", "type": "object" }, "name": "query_elus", "outputSchema": { "properties": { "result": { "title": "Result", "type": "string" } }, "required": [ "result" ], "title": "query_elusOutput", "type": "object" } }, { "description": "Requête les données socio-démographiques au niveau bureau de vote.\n\n Données INSEE RP 2022 + Filosofi 2021, interpolées IRIS→BDV.\n Actions : list_variables, profile, indices, rank, compare.\n ", "inputSchema": { "properties": { "action": { "title": "Action", "type": "string" }, "commune_code": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Commune Code" }, "commune_codes": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Commune Codes" }, "order": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Order" }, "variable": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Variable" } }, "required": [ "action" ], "title": "query_sociodemArguments", "type": "object" }, "name": "query_sociodem", "outputSchema": { "properties": { "result": { "title": "Result", "type": "string" } }, "required": [ "result" ], "title": "query_sociodemOutput", "type": "object" } }, { "description": "Exécute une requête SQL directe sur la base DuckDB (read-only).\n\n Tables principales :\n - general_results : résultats généraux par bureau de vote\n - candidats_results : résultats par candidat par bureau de vote\n - elections_disponibles : liste des élections (id_election, nb_bureaux, total_inscrits)\n - candidats_avec_nuances : candidats avec famille politique (si nuances enrichies)\n - resultats_par_famille : résultats agrégés par famille politique\n - communes, epci, departements, regions : divisions administratives\n - bv_sociodemographique : données socio-démo par bureau de vote\n\n ATTENTION — colonnes de general_results (noms avec espaces, à quoter) :\n id_election, id_brut_miom, \"Code du département\", \"Code de la commune\" (SANS préfixe dept, ex: '055' pour Marseille),\n \"Libellé de la commune\", Inscrits, Abstentions, Votants, Blancs, Nuls, Exprimés.\n\n PRÉFÉRER query_elections pour les analyses standard — query_sql est pour les requêtes ad hoc avancées.\n\n Exemple :\n SELECT id_election, ROUND(100.0 * SUM(Abstentions) / NULLIF(SUM(Inscrits), 0), 1) as abstention_pct\n FROM general_results WHERE \"Code du département\" = '13' AND \"Code de la commune\" = '055'\n GROUP BY id_election ORDER BY id_election DESC LIMIT 5\n ", "inputSchema": { "properties": { "query": { "title": "Query", "type": "string" } }, "required": [ "query" ], "title": "query_sqlArguments", "type": "object" }, "name": "query_sql", "outputSchema": { "properties": { "result": { "title": "Result", "type": "string" } }, "required": [ "result" ], "title": "query_sqlOutput", "type": "object" } }, { "description": "Simule les scénarios de fusion de listes municipales entre T1 et T2.\n\n Actions : 'status' (classer les listes après T1), 'simulate' (projections T2).\n Uniquement pour les élections municipales.\n ", "inputSchema": { "properties": { "action": { "title": "Action", "type": "string" }, "commune_code": { "title": "Commune Code", "type": "string" }, "election_id": { "title": "Election Id", "type": "string" }, "report_rate": { "default": 0.75, "title": "Report Rate", "type": "number" } }, "required": [ "action", "election_id", "commune_code" ], "title": "simulate_fusionsArguments", "type": "object" }, "name": "simulate_fusions", "outputSchema": { "properties": { "result": { "title": "Result", "type": "string" } }, "required": [ "result" ], "title": "simulate_fusionsOutput", "type": "object" } }, { "description": "Crée une visualisation Plotly (retourne le spec JSON).\n\n Deux modes :\n - Spec libre : fournir 'spec' (dict Plotly complet {data, layout})\n - Assisté : fournir chart_type + data + mappings\n\n Types supportés : bar, line, scatter, histogram, box, violin, heatmap,\n treemap, grouped_bar, stacked_bar, dumbbell, diverging_bar,\n dual_axis (x + y + y2), sankey (source + target + values),\n hemicycle (x=groupe, y=sièges), ternary (a + b + c = trois parts).\n Paramètres transversaux : subtitle (sous-titre technique),\n reference_line ({value, label, orientation}) pour un seuil/référence.\n ", "inputSchema": { "properties": { "a": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "A" }, "b": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "B" }, "c": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "C" }, "chart_type": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Chart Type" }, "color": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Color" }, "data": { "anyOf": [ { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Data" }, "data_file": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Data File" }, "path": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Path" }, "reference_line": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "default": null, "title": "Reference Line" }, "size": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Size" }, "source": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Source" }, "spec": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "default": null, "title": "Spec" }, "subtitle": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Subtitle" }, "target": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Target" }, "title": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Title" }, "values": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Values" }, "x": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "X" }, "y": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Y" }, "y2": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Y2" }, "z": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Z" } }, "title": "visualizeArguments", "type": "object" }, "name": "visualize", "outputSchema": { "properties": { "result": { "title": "Result", "type": "string" } }, "required": [ "result" ], "title": "visualizeOutput", "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:6d4f260ccb8d84d8ed83606b1be4d3dbf51e11e7ca6b66c243d453d8503537b2 | sha256sum