Skip to main content
Glama
ironlam

Poligraph MCP Server

by ironlam

Poligraph MCP Server

Listed in france-mcp-servers

Serveur MCP (Model Context Protocol) qui expose les données publiques de Poligraph comme tools pour les clients MCP compatibles.

Permet aux journalistes, chercheurs et citoyens d'interroger des données documentées sur la vie politique française en langage naturel.

Utilisation rapide

Serveur distant

Le serveur HTTP Streamable est déployé à l'adresse :

https://mcp.poligraph.fr/mcp

La page d’accueil du serveur présente les outils, les garanties de lecture seule et les configurations rapides pour les clients MCP compatibles.

L’adresse https://poligraph-mcp.vercel.app/mcp reste disponible comme alias de compatibilité.

Claude Desktop

Ajoutez dans votre configuration MCP :

{
  "mcpServers": {
    "poligraph": {
      "type": "streamable-http",
      "url": "https://mcp.poligraph.fr/mcp"
    }
  }
}

Claude Code

claude mcp add poligraph --transport http https://mcp.poligraph.fr/mcp

ChatGPT

Le parcours principal prévu pour ChatGPT est l’OpenAI Plugins Directory, via une soumission MCP-only. Un parcours facultatif et distinct vers le GPT Store reste possible avec un GPT personnalisé et une Action OpenAPI. L’issue poligraph#737 concerne uniquement ce second parcours et ne bloque pas la soumission MCP. PoliGraph n’est pas encore présenté comme soumis, accepté ou publié dans ces annuaires.

Le dossier technique marketplace rassemble les éléments préparatoires et les points restant à traiter.

Le serveur expose déjà les métadonnées MCP utiles aux clients compatibles :

  • annotations avec readOnlyHint: true sur tous les tools ;

  • _meta pour les états d'invocation ;

  • structuredContent en complément du rendu textuel.

Politique Origin

Les clients serveur-à-serveur n’ont pas besoin d’envoyer un en-tête HTTP Origin. Lorsqu’un client en envoie un, sa valeur doit correspondre exactement à une origine autorisée. La variable MCP_ALLOWED_ORIGINS permet d’ajouter des origines HTTPS exactes, séparées par des virgules, après observation officielle. Les wildcards, chemins, paramètres et fragments sont refusés.

Le serveur HTTP local écoute uniquement sur 127.0.0.1. Il autorise automatiquement http://127.0.0.1:<port> et http://localhost:<port> en complément de la politique commune. Cette configuration ne vaut pas validation préalable d’un client Claude ou OpenAI.

Related MCP server: mpc-judilibre

Informations publiques

L’éditeur public du serveur est l’Association Sankofa.

Le support public est accessible sur https://poligraph.fr/support. Les vulnérabilités non divulguées ne doivent pas être publiées dans une issue GitHub. Utilisez la procédure décrite dans SECURITY.md.

Installation locale (stdio)

git clone https://github.com/ironlam/poligraph-mcp.git
cd poligraph-mcp
npm install
npm run build

Puis configurez votre client MCP pour exécuter :

{
  "mcpServers": {
    "poligraph": {
      "command": "node",
      "args": ["/chemin/absolu/vers/poligraph-mcp/build/index.js"]
    }
  }
}

Tools disponibles (19)

Exemples de requêtes

Les tools peuvent être utilisés à partir de questions en langage naturel, par exemple :

  • « Quels députés publiés représentent actuellement la Seine-et-Marne ? »

  • « Compare les votes de deux parlementaires sur les scrutins liés aux retraites. »

  • « Quelles affaires judiciaires publiées concernent cette personnalité, et quel rôle lui est attribué dans chacune ? »

Le serveur sélectionne le tool adapté et renvoie les données publiques disponibles avec leurs sources et leurs limites.

Politiciens

Tool

Description

search_politicians

Rechercher des personnalités publiées par nom, parti ou mandat

get_politician

Fiche publique : mandats, déclarations, fact-checks et compteurs judiciaires séparés par rôle

get_politician_relations

Relations publiques documentées par Poligraph

Affaires judiciaires

Tool

Description

list_affairs

Affaires publiées avec filtres, rôle, sources et sémantique éditoriale canonique

get_politician_affairs

Affaires publiées d'une personnalité avec filtre de rôle

Votes parlementaires

Tool

Description

list_votes

Scrutins parlementaires

get_politician_votes

Votes enregistrés et statistiques publiables d'un parlementaire

get_vote_stats

Cohésion, scrutins divisifs et statistiques globales

Mandats

Tool

Description

list_mandates

Mandats publics ; les dates non vérifiées ne sont pas présentées comme ancienneté

Partis politiques

Tool

Description

list_parties

Liste des partis avec filtres

get_party

Fiche publique : membres, filiation et classification documentée

Fact-checks

Tool

Description

list_factchecks

Fact-checks publics issus des sources autorisées

get_politician_factchecks

Fact-checks publics mentionnant une personnalité

get_factcheck_stats

Statistiques agrégées du corpus public de fact-checks

Élections

Tool

Description

list_elections

Élections françaises avec filtres

get_election

Candidatures, résultats et participation sans convertir les valeurs inconnues en faux

Géographie

Tool

Description

get_department_stats

Statistiques sur les élus publiés par département

get_deputies_by_department

Députés publiés en exercice dans un département

Recherche

Tool

Description

search_advanced

Recherche combinée sur le corpus public

Architecture

src/
├── index.ts
├── server.ts
├── http.ts
├── api.ts                # client API borné : timeout, taille, erreurs
├── editorial.ts          # règles de rendu fail-safe du contrat public
├── tools/
│   ├── politicians.ts
│   ├── affairs.ts
│   ├── votes.ts
│   ├── legislation.ts
│   ├── factchecks.ts
│   ├── parties.ts
│   ├── elections.ts
│   ├── mandates.ts
│   └── departments.ts
└── tests/
    ├── editorial.test.ts
    └── api-contract.test.ts
api/
└── mcp.ts

Transports supportés :

  • stdio pour un client local ;

  • HTTP Streamable pour le serveur Express ou Vercel.

Développement

npm run dev
npm run build
npm run start:http
npm run inspect
npm run test:unit
npm run test:contract
npm run test:build

test:unit vérifie les invariants éditoriaux déterministes. test:contract effectue le smoke test contre l'API publique déployée.

Contrat éditorial public

Le MCP ne se connecte pas directement à la base de données et n'utilise ni service key ni endpoint d'administration. Il consomme exclusivement l'API publique Poligraph.

Pour les affaires judiciaires :

  • seules les données publiées par le contrat public sont consommées ;

  • le rôle (DIRECT, mention, victime, plaignant…) est distinct du statut de la procédure ;

  • les libellés de statut, catégorie, prudence, certitude et maturité sont fournis par le contrat canonique Poligraph ;

  • si cette sémantique canonique est absente, le MCP n'affiche pas le code interne comme signification éditoriale ;

  • le total legacy tous rôles est exposé par le MCP sous legacyPublishedAffairsCountAllRoles, uniquement pour compatibilité structurée, et n'est pas présenté comme indicateur à charge ;

  • les compteurs par rôle font foi pour la présentation.

Pour les données incomplètes :

  • null ou champ absent ne signifie jamais 0 ou false ;

  • un taux de participation n'est rendu que si son état de publication est explicitement AVAILABLE ;

  • une date de prise de fonction n'est utilisée comme ancienneté que si le contrat la marque explicitement AVAILABLE.

Les champs textuels issus des sources publiques sont traités comme des données, jamais comme des instructions adressées au modèle.

Sources

Poligraph agrège des sources publiques, institutionnelles et éditoriales documentées, notamment l'Assemblée nationale, le Sénat, la HATVP, Wikidata et des organismes de fact-checking. Voir poligraph.fr/sources pour le détail.

Licence

MIT

Available Tools

19 tools
get_department_statsB
Read-only

Statistiques politiques par département : nombre d'élus, parti dominant, répartition des partis.

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNoFiltrer par type : all (députés + sénateurs), députés, sénateursall

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the description's addition of output fields (number of officials, dominant party, distribution) adds valuable context about what the tool computes. However, it does not disclose any behavioral traits beyond that, such as data freshness or computational rules, which is acceptable given the annotations cover safety.

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

Conciseness5/5

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

The description is a single compact sentence that conveys the core purpose without any fluff. Every word is meaningful, making it highly concise and front-loaded.

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

Completeness3/5

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

Given the tool's simplicity (read-only, one optional parameter, no output schema), the description covers the key output fields. However, it lacks explicit mention that statistics are aggregated across all departments (implied by no department parameter) and does not describe any pagination or data range, leaving some ambiguity.

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%, with one optional enum parameter 'filter' well-documented in the schema. The main description does not mention this parameter or add any meaning beyond the schema, which meets the baseline but does not exceed it.

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

Purpose4/5

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

The description states it provides political statistics by department, including number of elected officials, dominant party, and party distribution. This clearly identifies the tool's purpose and distinguishes it from sibling tools like get_deputies_by_department which list deputies rather than aggregated stats. However, it does not specify whether statistics are for all departments or require a department identifier, which is unclear since the schema has no department parameter.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives. Among siblings, get_deputies_by_department could be used for a list of deputies, and list_parties for party details, but this tool is for aggregated stats. No explicit when/when-not or comparison is provided, leaving the agent to infer usage.

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

get_deputies_by_departmentA
Read-only

Obtenir la liste des députés en exercice dans un département donné.

ParametersJSON Schema
NameRequiredDescriptionDefault
departmentYesNom du département (ex: 'Paris', 'Bouches-du-Rhône', 'Nord')

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds that only current deputies are returned, which is useful but lacks details on pagination, ordering, or limitations.

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

Conciseness5/5

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

The description is a single, succinct sentence that conveys the core functionality without unnecessary words.

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

Completeness3/5

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

While the tool is simple and input is well-documented, the lack of an output schema means the description could elaborate on what is returned (e.g., deputy names, IDs). It provides no output details.

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?

The single parameter 'department' is fully described in the schema with examples. The tool description adds no additional parameter information, so baseline of 3 is appropriate given 100% schema coverage.

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?

The description clearly states the tool retrieves a list of current deputies for a given department, using specific verb 'obtenir' and resource 'liste des députés en exercice dans un département donné'. This distinguishes it from siblings like 'search_politicians' which would not be department-filtered.

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

Usage Guidelines3/5

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

The description implies usage when needing a department-specific list of deputies but does not explicitly state when to choose this over alternatives like 'search_politicians' or 'get_deputies_by_department'.

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

get_electionA
Read-only

Obtenir le détail d'une élection : candidatures, résultats par tour, participation.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesIdentifiant de l'élection (ex: 'municipales-2026', 'présidentielle-2027')

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and destructiveHint. The description adds that the tool returns candidates, results, and participation, providing clear behavioral context beyond annotations. No contradictions.

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

Conciseness5/5

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

The description is a single, efficient sentence with no fluff. Every word adds value, making it concise yet informative.

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

Completeness4/5

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

For a simple read-only tool with one parameter and no output schema, the description sufficiently explains what the tool returns. It could mention the read-only nature explicitly, but annotations cover that.

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 coverage is 100% with a clear description for the only parameter 'slug'. The tool description does not add additional semantics beyond the schema, so 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?

The description clearly states the tool retrieves election details including candidates, results per round, and participation. It uses specific nouns and distinguishes from sibling tools like list_elections.

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

Usage Guidelines3/5

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

The description implies the tool is for fetching detailed election data but does not explicitly state when to use it over alternatives or provide exclusion criteria. Usage context is implied.

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

get_factcheck_statsB
Read-only

Statistiques agrégées des fact-checks : répartition par verdict, par parti politique, par source et top politiciens fact-checkés.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNombre max de partis/politiciens retournés (max 50)

TDQS

B3.2/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=true and destructiveHint=false, so the description aligns with a safe read operation. The description adds context about the aggregation dimensions, but does not disclose potential behavioral traits like data freshness, rate limits, or whether all fact-checks are included. It adds some value beyond annotations but not full transparency.

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?

The description is a single concise sentence (15 words) that front-loads the key information about aggregated statistics. It is efficient but could include a bit more context about the scope (e.g., time period) without becoming verbose.

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

Completeness3/5

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

The tool has low complexity with one optional parameter and no output schema. The description lists the breakdown dimensions but does not indicate the output format (counts, percentages, etc.) or any potential filters. It is adequate but could be more complete given the lack of output schema.

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 coverage is 100% for the single limit parameter, which has a French description in the schema. The tool description does not mention the parameter or add any additional meaning. Since the schema already documents the parameter adequately, the description adds no value here, resulting in baseline score of 3.

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

Purpose4/5

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

The description clearly states the tool provides aggregated statistics of fact-checks broken down by verdict, party, source, and top politicians. It distinguishes from siblings like list_factchecks (which lists individual fact-checks) and search_politicians (which searches for politicians), though the verb 'get' is generic.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description only describes the output content without suggesting use cases or exclusions. Siblings include many fact-check and statistical tools, so guidance would be helpful.

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

get_partyA
Read-only

Obtenir la fiche complète d'un parti politique : membres, position, filiation, liens externes.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesIdentifiant du parti (ex: 'renaissance', 'rassemblement-national', 'la-france-insoumise')

TDQS

A4/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true and destructiveHint=false. Description adds detail beyond annotations by specifying what data is returned (members, position, filiation, external links). No contradictions.

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

Conciseness5/5

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

Description is one sentence that efficiently states the purpose and contents. No wasted words; information is front-loaded.

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

Completeness4/5

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

For a simple read-only retrieval tool with one well-described parameter and no output schema, the description provides sufficient context about what is returned. However, it does not mention response format or pagination (if any), leaving minor gaps.

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?

The single parameter 'slug' is fully described in the input schema with examples, achieving 100% schema coverage. The tool description does not add parameter-specific meaning beyond the schema, so baseline score of 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?

Description clearly states verb 'Obtenir' (get) and resource 'fiche complète d'un parti politique' (complete record of a political party), listing contents (members, position, affiliation, external links). This distinguishes it from sibling tools like list_parties (likely just listing) and search_politicians.

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

Usage Guidelines3/5

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

The description implies usage for retrieving full party details but does not explicitly state when to use this tool versus siblings like list_parties, search_politicians, or get_politician. No exclusion conditions or alternatives are mentioned.

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

get_politicianA
Read-only

Obtenir la fiche complète d'un politicien : mandats, déclarations de patrimoine, nombre d'affaires publiées (affairsCount, tous rôles confondus) et compteurs par rôle (mis en cause, mentionné, victime/plaignant, issue favorable).

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesIdentifiant du politicien (ex: 'emmanuel-macron', 'marine-le-pen')

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, covering safety. The description adds that it returns a full profile with specific fields but does not disclose additional behavioral traits like rate limits or authentication needs. No contradiction with annotations.

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

Conciseness5/5

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

A single, concise French sentence that front-loads the main purpose and lists key output fields without extraneous words or repetition.

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

Completeness4/5

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

For a read-only tool with one parameter and no output schema, the description adequately lists the outputs (mandates, wealth declarations, affairs count, role counters). Could be improved by mentioning error handling or empty results, but sufficiently covers the return format.

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 coverage is 100% with a single 'slug' parameter described as 'Identifiant du politicien...' with examples. The description adds no extra parameter context beyond what the schema already provides.

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?

The description clearly states it retrieves the complete profile of a politician ('fiche complète') and enumerates specific fields (mandates, wealth declarations, affairs count, role counters), distinguishing it from sibling tools like search_politicians or get_politician_relations.

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

Usage Guidelines3/5

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

The description implies usage for getting a full politician profile but does not provide explicit guidance on when to use this tool vs. alternatives like list_affairs or get_politician_affairs. No when-not-to-use or exclusion criteria.

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

get_politician_affairsA
Read-only

Obtenir les affaires judiciaires d'un politicien spécifique, avec sources et détails. Seules les affaires publiées après validation éditoriale humaine sont retournées.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesIdentifiant du politicien (ex: 'nicolas-sarkozy')

TDQS

A4/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=true and destructiveHint=false. The description adds behavioral context about editorial validation and return of sources/details, which is beyond the annotations.

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

Conciseness5/5

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

Two efficient sentences with no wasted words. Purpose is front-loaded and immediately clear.

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

Completeness4/5

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

For a simple tool with one parameter and no output schema, the description covers purpose, data curation, and basic content. It lacks return format details, but that is acceptable given the tool's simplicity.

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?

The only parameter 'slug' is clearly described in the input schema with an example. Schema coverage is 100%, so description does not need to add more; baseline score 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?

The description clearly states the tool retrieves judicial affairs of a specific politician with sources and details. It distinguishes from siblings like get_politician (general info) and list_affairs (possibly all affairs).

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

Usage Guidelines3/5

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

The description mentions that only affairs after editorial validation are returned, giving a quality hint, but lacks explicit guidance on when to use this tool versus alternatives like search_politicians or list_affairs.

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

get_politician_factchecksA
Read-only

Obtenir les fact-checks mentionnant un politicien spécifique.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoNuméro de page
slugYesIdentifiant du politicien (ex: 'marine-le-pen')
limitNoRésultats par page (max 100)

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, indicating safe read-only operation. The description adds no new behavioral details, just restates the purpose. No contradictions.

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

Conciseness5/5

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

The description is a single concise sentence that front-loads the main purpose. No unnecessary words or fluff. Every sentence earns its place.

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

Completeness4/5

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

For a simple retrieval tool with 3 parameters fully described in the schema and annotations covering safety, the description is complete enough. No output schema exists but is not critical for a list endpoint. Could mention pagination details, but not required.

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%, so the schema already documents all three parameters (slug, page, limit) with descriptions. The description does not add any extra meaning or context beyond what the schema provides. 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?

The description clearly states the tool retrieves fact-checks mentioning a specific politician ('Obtenir les fact-checks mentionnant un politicien spécifique'), using a specific verb and resource. It distinguishes from siblings like 'list_factchecks' (all fact-checks) and 'search_advanced' (broader).

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

Usage Guidelines3/5

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

The description implies usage when fact-checks for a specific politician are needed but does not provide explicit when-to-use or when-not-to-use guidance, nor does it name alternatives. Usage is inferred from the purpose.

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

get_politician_relationsA
Read-only

Obtenir les relations d'un politicien : gouvernement, entreprises en commun, département, parcours partisan.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesIdentifiant du politicien (ex: 'emmanuel-macron')
limitNoNombre max de connexions par type (max 50)
typesNoTypes de relations séparés par virgule. Types : SAME_GOVERNMENT, SHARED_COMPANY, SAME_DEPARTMENT, PARTY_HISTORY

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows it's safe. The description adds meaningful context by enumerating the types of relations included, which helps set expectations.

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

Conciseness5/5

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

The description is a single sentence in French that succinctly captures the tool's purpose. No unnecessary words or repetition.

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

Completeness3/5

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

The description covers the what but not the how or the return format. Since there is no output schema, more detail on the response structure would be beneficial. However, parameters are well-documented, so it is minimally adequate.

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%, so the schema already documents all parameters. The description only paraphrases the types parameter without adding new meaning, so baseline of 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?

The description clearly states the tool retrieves relations of a politician and lists specific relation types (government, shared companies, department, partisan path). It distinguishes from siblings like get_politician or get_politician_affairs by focusing on network connections.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool vs alternatives like get_politician or list_affairs. The description does not mention prerequisites or context.

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

get_politician_votesA
Read-only

Obtenir les votes d'un politicien spécifique avec ses statistiques de participation.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoNuméro de page
slugYesIdentifiant du politicien (ex: 'jean-luc-melenchon')
limitNoRésultats par page (max 100)

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the tool is safe. The description adds that it includes participation statistics, which is useful context. However, it does not disclose any additional behavioral traits such as pagination behavior, required permissions, or rate limits. No contradiction with annotations.

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

Conciseness5/5

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

The description is a single, concise sentence that immediately communicates the core functionality. It front-loads the action and resource without any extraneous words.

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

Completeness3/5

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

Given the tool has three parameters and no output schema, the description is minimally complete. It covers the main functionality but omits details like the structure of the returned data (e.g., vote details, statistics format) and any pagination behavior. For a read-only tool, this is adequate but leaves gaps.

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%, so all three parameters (slug, page, limit) are already documented with descriptions. The tool description does not add any extra meaning beyond what the schema provides. Baseline is 3.

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?

The description clearly states the tool retrieves votes for a specific politician along with participation statistics. It uses a specific verb ('obtenir') and resource ('votes d'un politicien'), and it distinguishes itself from siblings like 'list_votes' (which likely lists all votes) and 'get_politician' (which retrieves politician details).

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

Usage Guidelines3/5

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

The description implies usage when needing votes for a specific politician, but does not explicitly mention when not to use it or suggest alternatives. For example, it could contrast with 'list_votes' for unfiltered vote listings. The guidance is adequate but not explicit.

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

get_vote_statsB
Read-only

Obtenir les statistiques de vote par parti : cohésion, scrutins divisifs, distribution globale.

ParametersJSON Schema
NameRequiredDescriptionDefault
chamberNoFiltrer par chambre : AN (Assemblée) ou SÉNAT

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safe read behavior is clear. The description adds context about the type of statistics returned but does not elaborate on output format, pagination, or data scope.

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

Conciseness5/5

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

One concise sentence that front-loads the tool's purpose. No extraneous words or redundancy.

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

Completeness3/5

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

While the description lists three statistic categories, it lacks an explanation of the output format or any nuances (e.g., time range, data aggregation level). For a simple read-only tool with one optional filter, it is minimally adequate but could be more informative.

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?

The single parameter 'chamber' is fully described in the input schema (100% coverage). The description does not add additional meaning beyond the schema's enum and description.

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

Purpose4/5

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

The description clearly states it retrieves vote statistics by party, listing three aspects: cohesion, divisive votes, global distribution. This distinguishes it from sibling tools like list_votes which likely return individual votes, but does not fully describe the output structure.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as list_votes or get_politician_votes. The description provides no context for decision-making.

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

list_affairsB
Read-only

Lister les affaires judiciaires impliquant des politiciens français, avec filtres par statut et catégorie. Seules les affaires publiées après validation éditoriale humaine sont retournées ; les brouillons et affaires retirées ne sont jamais exposés.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoNuméro de page
limitNoRésultats par page (max 100)
statusNoFiltrer par statut judiciaire
categoryNoFiltrer par catégorie d'infraction

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, indicating a safe read operation. The description adds that only affairs after human editorial validation are exposed, but does not discuss pagination or ordering behavior.

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

Conciseness5/5

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

Two focused sentences with no wasted words. The verb 'Lister' is front-loaded, and the caveat about published affairs is crucial and efficiently stated.

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

Completeness4/5

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

Given the four parameters with defaults and enums, no output schema, and no nested objects, the description covers the key behavioral constraint (published affairs only). It could mention pagination but the schema already documents page and limit.

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%, so parameters are already well documented. The description adds no extra meaning beyond what the schema provides, e.g., it mentions filters but not specifics.

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

Purpose4/5

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

The description clearly states the tool lists legal affairs involving French politicians with filters by status and category. It also mentions that only published affairs are returned. However, it does not differentiate this tool from sibling tools like get_politician_affairs, which might list affairs for a specific politician.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as search_advanced or get_politician_affairs. The description lacks explicit context for selection.

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

list_electionsA
Read-only

Lister les élections françaises (présidentielle, législatives, municipales, etc.) avec filtres.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoNuméro de page
typeNoFiltrer par type d'élection
yearNoFiltrer par année (ex: 2027)
limitNoRésultats par page (max 100)
statusNoFiltrer par statut

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so description adds no new safety behavior. It states 'with filters' but does not elaborate on pagination, response limits, or other traits beyond what annotations convey.

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

Conciseness5/5

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

Single front-loaded sentence that efficiently conveys core functionality. No wasted words.

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

Completeness3/5

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

While the description covers the basic purpose and mentions filters, it omits details about return format, pagination behavior, or how the filters interact. Given the absence of an output schema and the existence of 5 parameters, more completeness would help an AI agent.

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 coverage is 100% with descriptions for all 5 parameters. The description adds no additional meaning beyond what the schema already provides, so baseline of 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?

Clearly states the verb 'list' and resource 'elections françaises', listing specific types (présidentielle, législatives) and mentions filtering capability. Distinguishes from sibling get_election which retrieves a single election.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives like get_election or search_advanced. Does not provide context for when to choose this tool over siblings.

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

list_factchecksB
Read-only

Lister les fact-checks sur des politiciens français. Sources : AFP Factuel, Les Décodeurs, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoNuméro de page
limitNoRésultats par page (max 100)
searchNoRecherche dans le titre ou la déclaration vérifiée
sourceNoFiltrer par source (ex: 'AFP Factuel', 'Les Decodeurs')
verdictNoFiltrer par verdict : TRUE, FALSE, MISLEADING, etc.
politicianNoFiltrer par slug du politicien (ex: 'marine-le-pen')

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, indicating a safe read operation. The description adds that the tool lists fact-checks from specific sources (AFP Factuel, Les Décodeurs), but does not elaborate on other behavioral aspects like pagination or response format.

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?

The description is a single, front-loaded sentence that efficiently communicates the tool's purpose and sources. It is concise without unnecessary detail.

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

Completeness3/5

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

Given the lack of an output schema, the description should ideally mention what the response contains. It does not describe the return format or behavior. While 6 parameters are well-documented, completeness is slightly hampered by the missing output description.

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%, so each parameter is already documented. The tool description does not add additional meaning beyond what the schema provides. Baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states it lists fact-checks on French politicians and specific sources. The verb 'Lister' and resource 'fact-checks' are clear. However, it does not explicitly differentiate from the sibling tool 'get_politician_factchecks', which likely filters by politician.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'get_politician_factchecks' or other list tools. It only states what the tool does, not the context or exclusion criteria.

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

list_mandatesB
Read-only

Lister les mandats politiques avec filtres par type, institution, statut actif/terminé et politicien.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoNuméro de page
typeNoFiltrer par type de mandat
limitNoRésultats par page (max 100)
isCurrentNotrue = mandats en cours, false = mandats terminés
institutionNoRecherche sur l'institution (ex: 'Assemblée', 'Sénat')

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare the tool as read-only and non-destructive, so the description adds no new behavioral context beyond stating that it lists with filters. No contradictions are present.

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

Conciseness5/5

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

The description is a single, front-loaded sentence in French with no redundant words. Every word contributes to the core function of listing mandates with filters.

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

Completeness3/5

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

For a simple, read-only tool with 5 parameters, the description covers the basic functionality. However, it lacks details on pagination, ordering, or the response format, and misstates the presence of a politician filter.

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%, providing baseline clarity. The description briefly mentions filter types (type, institution, statut) but adds minimal value beyond the schema; the missing 'politician' parameter is a discrepancy.

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

Purpose4/5

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

The description clearly states the tool lists political mandates with filters, using a specific verb (Lister) and resource (mandats politiques). However, it mentions a 'politicien' filter that is not present in the input schema, which slightly reduces accuracy.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like search_politicians. There is no mention of optimal contexts or exclusions, leaving the agent without context for tool selection.

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

list_partiesA
Read-only

Lister les partis politiques français avec filtres par position politique et statut.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoNuméro de page
limitNoRésultats par page (max 100)
activeNotrue = partis actifs (non dissous avec des membres), false = partis dissous
searchNoRecherche par nom ou abréviation (ex: 'LFI', 'Républicains')
positionNoFiltrer par position sur l'échiquier politique

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds no extra behavioral context (e.g., pagination, ordering, rate limits). It is consistent but not additive beyond the annotations.

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

Conciseness5/5

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

A single concise sentence in French that front-loads the action and resource with no unnecessary words. Every word is efficient.

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

Completeness4/5

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

For a list tool with 5 parameters and no output schema, the description covers the purpose and main filters (position, status). It does not explicitly mention pagination or return format, but the page and limit parameters imply it. Decently complete but could be more explicit.

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 coverage is 100% with descriptions for all 5 parameters. The tool description adds minimal extra meaning (just mentions 'position et statut' as filters). Baseline 3 is appropriate as the schema already documents parameters well.

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?

The description clearly states the tool lists French political parties ('Lister les partis politiques français') and specifies filters by political position and status. This verb+resource combination distinguishes it from siblings like get_party (single party) and other tools for politicians or votes.

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

Usage Guidelines4/5

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

The description implies use for listing with filters, but does not explicitly exclude other tools or mention alternatives like get_party for a single party. It provides clear context for its own purpose but lacks explicit when-not or alternative guidance.

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

list_votesA
Read-only

Lister les scrutins parlementaires (Assemblée nationale et Sénat) avec filtres.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoNuméro de page
limitNoRésultats par page (max 100)
resultNoFiltrer par résultat : ADOPTED ou REJECTED
searchNoRecherche dans le titre du scrutin
legislatureNoFiltrer par législature (ex: 16, 17)

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true, so the description doesn't need to repeat safety. It adds no behavioral info beyond the schema (e.g., pagination, rate limits), earning a baseline 3.

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

Conciseness5/5

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

Single sentence, no wasted words, front-loaded with purpose. Ideal conciseness.

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

Completeness3/5

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

As a list tool with 5 parameters and no output schema, the description is too brief. It doesn't explain return format or how filters combine, leaving gaps for effective use.

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 coverage is 100%, so each parameter already has a description. The description adds no extra meaning beyond what's in the schema, so baseline 3.

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?

The description clearly states the tool lists parliamentary votes (Assemblée nationale et Sénat) with filters, using a specific verb and resource. It distinguishes from siblings like 'get_politician_votes' which focus on individual politicians.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like 'get_politician_votes' or 'get_vote_stats'. The description only states what it does, not when it's appropriate.

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

search_advancedA
Read-only

Recherche avancée de politiciens avec filtres combinés : parti, mandat, département, affaires, statut actif.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoNuméro de page
limitNoRésultats par page (max 100)
partyNoFiltrer par ID de parti
queryNoRecherche par nom ou prénom (min 2 caractères)
mandateNoFiltrer par type de mandat
isActiveNoFiltrer les politiciens ayant un mandat actuel
departmentNoFiltrer par département (ex: 'Paris', 'Bouches-du-Rhône')
hasAffairsNoFiltrer par présence d'affaires judiciaires

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already indicate read-only and non-destructive behavior. The description adds filtering context but does not mention pagination, result format, or other behavioral traits beyond what annotations provide.

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

Conciseness5/5

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

The description is a single concise sentence that front-loads the action and key filters, with no wasted words.

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

Completeness3/5

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

With 8 parameters and no output schema, the description omits pagination details and required query length, which are present in schema but not summarized. The description is adequate but not fully complete.

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 coverage is 100% with parameter descriptions. The description merely lists filter types without adding new meaning beyond what the schema already provides.

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?

The description clearly states 'advanced search of politicians with combined filters' and lists filter types, distinguishing it from simpler search tools like 'search_politicians'.

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

Usage Guidelines3/5

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

The description implies usage for combined filtering but does not explicitly mention when not to use or name alternatives. The sibling list provides context, but the description itself lacks explicit guidance.

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

search_politiciansA
Read-only

Rechercher des politiciens français par nom, parti ou type de mandat. Retourne une liste paginée.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoNuméro de page
limitNoRésultats par page (max 100)
partyNoFiltrer par ID de parti
queryNoRecherche par nom (ex: 'Macron', 'Marine')
hasAffairsNoFiltrer les politiciens ayant des affaires judiciaires
mandateTypeNoFiltrer par type de mandat

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, so safety is clear. Description adds that it returns a paginated list, but no additional behavioral context like auth, rate limits, or output structure.

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

Conciseness5/5

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

Two sentences, 15 words, no fluff. Front-loaded with purpose. Every word earns its place.

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

Completeness3/5

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

Given 6 parameters and no output schema, the description covers the basic search functionality but lacks details on output fields, pagination behavior, and error handling. Adequate but not comprehensive.

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 coverage is 100% with descriptions for all 6 parameters. The description repeats some filter options but does not add syntax or format details beyond the schema. Baseline 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?

Description uses specific verb 'Rechercher' and resource 'politiciens français par nom, parti ou type de mandat', clearly stating what the tool does. It distinguishes from sibling tools like search_advanced which implies more complex searches.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like search_advanced. Does not mention when not to use or provide explicit context.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 19 tool updatesv2.0.0
    • First observedget_department_stats
    • First observedget_deputies_by_department
    • First observedget_election
    • First observedget_factcheck_stats
    • First observedget_party
    • First observedget_politician
    • First observedget_politician_affairs
    • First observedget_politician_factchecks
    • First observedget_politician_relations
    • First observedget_politician_votes
    • First observedget_vote_stats
    • First observedlist_affairs
    • First observedlist_elections
    • First observedlist_factchecks
    • First observedlist_mandates
    • First observedlist_parties
    • First observedlist_votes
    • First observedsearch_advanced
    • First observedsearch_politicians

TDQS

A3.9/5.0

Scored across 19 tools

Disambiguation5/5

Each tool targets a distinct aspect of French political data: searching, retrieving details, relations, affairs, votes, mandates, departments, parties, elections, and fact-checks. No two tools have overlapping purposes; descriptions clearly differentiate them.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., search_politicians, get_politician, list_affairs). Verbs are descriptive and nouns correspond to resources, making the surface predictable.

Tool Count5/5

19 tools provide comprehensive coverage of the French political domain without being excessive. Each tool earns its place, covering politicians, affairs, votes, parties, elections, fact-checks, and statistics.

Completeness5/5

The tool set covers the full lifecycle of political data access: search, detail, relations, affairs, votes, mandates, departments, parties, elections, and fact-checks. Advanced search and aggregation stats fill potential gaps, leaving no obvious missing operations for a read-only API.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server covering French law via the PISTE platform: 8 tools wrapping the JUDILIBRE API (open data judicial decisions from Cour de cassation, courts of appeal and civil courts).
    2
    AGPL 3.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables querying the French National Assembly data, including deputies, interventions, questions, and votes, through natural language.
    9 npm
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    MCP server for automatic fact-checking of political claims by querying official statistical APIs (INSEE, Eurostat, World Bank, OECD) and providing tools for data retrieval, comparison, and cherry-picking detection.
    18
    -