FactCheck MCP Toolkit
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CLAIMBUSTER_API_KEY | No | API key for ClaimBuster | |
| FACTCHECK_CACHE_DIR | No | Directory for caching (default ~/.cache/factcheck-mcp) | |
| GOOGLE_FACTCHECK_API_KEY | No | API key for Google Fact Check Tools |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tasks | {
"list": {},
"cancel": {},
"requests": {
"tools": {
"call": {}
},
"prompts": {
"get": {}
},
"resources": {
"read": {}
}
}
} |
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| resolve_indicatorA | Resolve a natural-language term to ranked indicator codes. Args: term: The indicator term to resolve (e.g. "chomage", "PIB"). context: Optional surrounding text for disambiguation. preferred_source: Optional source preference (insee, eurostat, worldbank, oecd). Returns: List of IndicatorResult ranked by relevance. Raises: IndicatorNotFoundError: If no matching indicator is found. |
| insee_search_indicatorsA | Search INSEE macrodata indicators by keyword. Args: keyword: Search pattern for indicator names. Returns: List of matching IndicatorResult. |
| insee_get_indicator_metadataA | Get full metadata for an INSEE series by idbank code. Args: idbank: The INSEE IDBANK identifier. Returns: IndicatorMetadata with definition, frequency, etc. |
| insee_get_dataA | Get time series data for an INSEE indicator. Args: idbank: The INSEE IDBANK identifier. start_period: Optional start period filter (inclusive). end_period: Optional end period filter (inclusive). last_n: Optional limit to last N observations. Returns: TimeSeries with observations. |
| insee_search_geographyC | Search INSEE geographic entities. Args: geo_type: Geographic level (commune, departement, region). name_filter: Optional name filter. Returns: List of GeoResult. |
| compare_valuesB | Compare a claimed value to actual data and qualify the deviation. Args: claimed_value: The value asserted in the claim. actual_value: The value from the data source. claimed_period: The period referenced in the claim. actual_period: The period of the actual data. Returns: ComparisonResult with deviation metrics and qualification. |
| lookup_existing_factchecksA | Search for existing fact-checks matching a claim. Args: query: The claim text to search for. language_code: BCP-47 language code (default "fr"). Returns: List of existing fact-checks found, or empty list on error/missing key. |
| score_check_worthinessA | Score sentences in a text for check-worthiness using ClaimBuster. Args: text: The text containing one or more sentences to score. Returns: List of dicts with keys: sentence, score, index. Returns empty list on error or missing API key. |
| eurostat_search_datasetsA | Search Eurostat datasets by keyword. Args: query: Search keyword. limit: Maximum number of results to return. Returns: List of dicts with code, title, last_update fields. |
| eurostat_get_dataB | Retrieve Eurostat data and convert to TimeSeries per country. Args: dataset_code: Eurostat dataset code (e.g. 'nama_10_gdp'). geo: List of country codes (e.g. ['FR', 'DE']). time_period: Optional year filter (e.g. '2022'). filters: Optional additional filters dict. Returns: List of TimeSeries, one per requested country. |
| eurostat_get_rankingA | Rank countries by a Eurostat indicator value. Args: dataset_code: Eurostat dataset code. metric: Metric/na_item code. year: Year to rank on. If None, uses most recent available. geo_scope: Geographic scope filter (unused in basic implementation). Returns: List of RankingEntry sorted by value descending. |
| eurostat_get_dataset_structureA | Get dimension info for a Eurostat dataset. Args: dataset_code: Eurostat dataset code. Returns: Dict mapping dimension names to lists of possible values. |
| worldbank_search_indicatorsA | Search World Bank indicators by keyword. Args: query: Search keyword. limit: Maximum number of results to return. Returns: List of IndicatorResult matching the query. |
| worldbank_get_dataA | Retrieve World Bank indicator data for given countries. Args: indicator: World Bank indicator code (e.g. 'NY.GDP.MKTP.CD'). country: List of ISO3 country codes (e.g. ['FRA', 'DEU']). year_range: Optional year range as 'YYYY:YYYY'. most_recent: Optional number of most recent values to return. Returns: List of TimeSeries, one per country. |
| worldbank_get_country_rankingA | Rank countries by a World Bank indicator value. Args: indicator: World Bank indicator code. year: Year to rank on. If None, uses most recent available. income_group: Optional income group filter. Returns: List of RankingEntry sorted by value descending. |
| oecd_search_datasetsA | Search OECD datasets by keyword. Args: query: Search keyword. limit: Maximum number of results to return. Returns: List of dicts with code, title fields. |
| oecd_get_dataA | Retrieve OECD data and convert to TimeSeries per country. Args: dataflow: OECD dataflow identifier (e.g. 'QNA'). country: List of country codes (e.g. ['FRA', 'DEU']). time_period: Optional time period filter. filters: Optional additional SDMX filters. Returns: List of TimeSeries, one per country. |
| analyze_cherry_pickingC | Analyze whether a claimed time-period variation is cherry-picked. Args: time_series: TimeSeries as dict (MCP tools receive dicts). claimed_start: Start period of the claimed variation. claimed_end: End period of the claimed variation. claimed_variation: The numeric variation asserted in the claim. claimed_direction: Direction of claim: 'hausse', 'baisse', or 'stable'. Returns: CherryPickingAnalysis as dict. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 18 tools
Most tools target a distinct source-action combination (e.g. insee_get_data vs eurostat_get_ranking), and the fact-checking utilities are clearly separated. Some overlap exists between resolve_indicator and source-specific search functions, and between compare_values and analyze_cherry_picking, but the descriptions are sufficient to disambiguate.
The dominant naming pattern is source_verb_noun (insee_search_indicators, worldbank_get_data), and generic tools use verb_noun as well. Minor deviations like eurostat_get_ranking vs worldbank_get_country_ranking and lookup_existing_factchecks instead of search_... prevent a perfect score.
18 tools is slightly above the typical 5-15 sweet spot, but the count is justified by four external data providers and the fact-checking workflow endpoints. Each provider needs search/get/ranking tools, so the set does not feel bloated.
The toolkit covers the core fact-checking pipeline: check-worthiness scoring, existing lookup, indicator resolution, data retrieval, value comparison, and cherry-picking detection. Minor gaps include lack of OECD ranking/metadata tools and no way to save or publish fact-checks.