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/mcp

Claude 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  →  Authenticate

Claude.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.

Outils exposés par le serveur MCP : accès, tarif en USDC et fonction
OutilAccèsUSDCCe qu’il fait
search_entitiespublic0,0005Chercher parmi 24,4 M d’entités
get_entity_profilepublic0,001Fiche complète par SIREN
search_open_datasetspublic0,001Chercher un jeu sur data.gouv.fr
inspect_open_datasetpublic0,001Ressources d’un jeu de données
list_entity_subsidiescompte0,002Subventions perçues par une entité
get_public_financescompte0,002Comptes DGFiP sur 25 exercices
search_public_officialscompte0,002Déclarations HATVP
list_entity_elected_officialscompte0,002Élus d’une collectivité
list_lobbyistscompte0,002Représentants d’intérêts
plan_dataset_ingestioncompte0,005Plan d’ingestion d’un fichier ouvert
list_top_beneficiariespayant0,003Plus gros bénéficiaires
rank_entities_by_metricpayant0,004Classer les collectivités
get_subsidy_purpose_breakdownpayant0,004Bénéficiaires par objectif
ask_public_data_questionpayant0,02Question en langage naturel
generate_entity_briefpayant0,35Note 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_subsidies

Situer 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_metric

Suivre 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_beneficiaries

Absorber 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_ingestion

Payer à 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. 1. Appeler l’outil. Réponse 402 portant accepts[] : réseau, montant atomique, adresse de règlement.
  2. 2. Virer le montant exact en USDC — sur Base ou sur Solana.
  3. 3. Rappeler avec l’en-tête X-PAYMENT(JSON base64 : {"network":…,"transaction":…,"payer":…}, où payer est 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.