Une API pour les agents
Les finances publiques françaises, servies en MCP : 24,4 M d’entités, 663 K subventions, 800 K comptes publics, 643 K mandats électifs.
Quinze outils. Les plus utiles s’appellent sans compte et sans payer, dans la limite d’un quota quotidien. Un compte multiplie ce quota par cinq. Au-delà,tout outil devient payable à l’acte en USDC — on n’est jamais bloqué jusqu’à minuit faute de pouvoir régler.
Brancher Claude
Une commande, ou trois lignes de configuration.
Claude Code
claude mcp add --transport http aifr-donnees-publiques https://aifr.ai/mcpClaude Desktop — claude_desktop_config.json
{
"mcpServers": {
"aifr-donnees-publiques": {
"type": "http",
"url": "https://aifr.ai/mcp"
}
}
}Vérifier, sans rien installer
curl -s -X POST https://aifr.ai/mcp \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'tools/list répond sans authentification : c’est ainsi qu’un agent nous découvre.
Se connecter
Les outils compte demandent un compte AiFR.AI. Deux façons, au choix.
1. OAuth — le bouton « Connecter »
Le serveur applique le standard MCP (OAuth 2.1, PKCE, enregistrement dynamique). Un client qui le respecte — Claude.ai, Claude Desktop, Claude Code, Cursor, ChatGPT, l’inspecteur MCP — vous propose de vous connecter dès qu’un outil le demande : une page AiFR.AI s’ouvre, vous autorisez, c’est fait. Rien à copier.
Claude Code
claude mcp add --transport http aifr-donnees-publiques https://aifr.ai/mcp
# puis, dans Claude Code : /mcp → aifr-donnees-publiques → AuthenticateClaude.ai
Paramètres → Connecteurs → Ajouter un connecteur personnalisé → https://aifr.ai/mcp → Connecter.
Chaque connexion se voit et se coupe depuis Clés d’API et connexions. Jeton de 24 h renouvelé automatiquement ; aucune écriture, aucune donnée personnelle partagée.
2. Clé d’API — pour un script ou un serveur
Créez une clé sur /api-keys et passez-la en en-tête. Même droits, révocable une par une.
claude mcp add --transport http aifr-donnees-publiques https://aifr.ai/mcp \
--header "Authorization: Bearer aifr_sk_…"Claude Desktop
"aifr-donnees-publiques": {
"type": "http",
"url": "https://aifr.ai/mcp",
"headers": { "Authorization": "Bearer aifr_sk_…" }
}Pour qui écrit un client : les endpoints
- GET /.well-known/oauth-protected-resource — RFC 9728
- GET /.well-known/oauth-authorization-server — RFC 8414
- POST /oauth/register — RFC 7591, clients publics (PKCE S256 obligatoire)
- GET /oauth/authorize · POST /oauth/token · POST /oauth/revoke
- Portée : data:read · ressource : https://aifr.ai/mcp · 401 + WWW-Authenticate quand un jeton manque
Les 15 outils
Prix en USDC par appel, dû une fois le quota gratuit épuisé.public : appelable sans compte · compte : connexion requise ·payant : sans quota gratuit, le règlement tient lieu d’entrée.
Chaque réponse porte _links : l’URL de la page aifr.ai correspondante, et pour les comptes publics trois graphiques PNG (/graphique-finances.png?siren=…&mode=budget|dette|depenses) qu’un assistant peut afficher tels quels.
| Outil | Accès | USDC | Ce qu’il fait |
|---|---|---|---|
| search_entities | public | 0,0005 | Chercher parmi 24,4 M d’entités |
| get_entity_profile | public | 0,001 | Fiche complète par SIREN |
| search_open_datasets | public | 0,001 | Chercher un jeu sur data.gouv.fr |
| inspect_open_dataset | public | 0,001 | Ressources d’un jeu de données |
| list_entity_subsidies | compte | 0,002 | Subventions perçues par une entité |
| get_public_finances | compte | 0,002 | Comptes DGFiP sur 25 exercices |
| search_public_officials | compte | 0,002 | Déclarations HATVP |
| list_entity_elected_officials | compte | 0,002 | Élus d’une collectivité |
| list_lobbyists | compte | 0,002 | Représentants d’intérêts |
| plan_dataset_ingestion | compte | 0,005 | Plan d’ingestion d’un fichier ouvert |
| list_top_beneficiaries | payant | 0,003 | Plus gros bénéficiaires |
| rank_entities_by_metric | payant | 0,004 | Classer les collectivités |
| get_subsidy_purpose_breakdown | payant | 0,004 | Bénéficiaires par objectif |
| ask_public_data_question | payant | 0,02 | Question en langage naturel |
| generate_entity_brief | payant | 0,35 | Note d’analyse rédigée |
À quoi ça sert
Vérifier un bénéficiaire avant de contracter
Un agent de conformité résout le SIREN, lit la fiche, additionne les subventions reçues et remonte les mandats des dirigeants. Trois appels, moins d'un centime.
search_entitiesget_entity_profilelist_entity_subsidiesSituer une commune parmi ses pairs
Dette par habitant, part des charges de personnel, effort d'investissement : le classement porte sur la totalité des communes, pas sur un échantillon.
get_public_financesrank_entities_by_metricSuivre une politique publique jusqu’à ses destinataires
Partir d'un objectif de subvention, obtenir la liste des bénéficiaires et la répartition par année.
get_subsidy_purpose_breakdownlist_top_beneficiariesAbsorber un jeu de données hétérogène
data.gouv.fr recense plus de 500 jeux de subventions, un par collectivité, chacun avec ses propres intitulés de colonnes. L'outil lit l'en-tête, propose une correspondance vers un modèle canonique et chiffre le taux de rejet avant tout chargement.
search_open_datasetsinspect_open_datasetplan_dataset_ingestionPayer à l’acte, sans compte
Schéma x402 : l’appel non réglé répond 402 avec les rails acceptés ; on vire le montant, on rappelle avec la preuve.
- 1. Appeler l’outil. Réponse
402portantaccepts[]: réseau, montant atomique, adresse de règlement. - 2. Virer le montant exact en USDC — sur Base ou sur Solana.
- 3. Rappeler avec l’en-tête
X-PAYMENT(JSON base64 :{"network":…,"transaction":…,"payer":…}, oùpayerest l’adresse qui a émis le versement).
Le montant annoncé en 402 est celui qui est réglé — le catalogue, la carte d’agent et la porte de paiement dérivent d’une source unique. Une preuve de paiement n’est acceptée qu’une fois, doit dater de moins de six heures, et n’est valable que présentée par l’adresse qui a payé : une transaction observée sur la chaîne ne peut pas être volée.
Les mêmes données sont libres d’accès en HTTP (documentation API, licence ouverte) : le tarif rémunère la surface agent — mesure, liens, graphiques, support.
Licence et limites
Toutes les données proviennent de sources publiques officielles (INSEE, DGFiP, HATVP, Commission européenne, DGCL) et sont redistribuées sous licence ouverte. Nous ne corrigeons pas les montants publiés, même douteux : les anomalies relevées sont documentées dans le rapport sur les données, et la structure exacte dans la carte du modèle.