// mcp
MCP finance & risque
l0g expose ses données aux agents IA via le Model Context Protocol, en lecture seule. Un agent peut interroger l'Agent Surface, le contrat OpenAPI, les flux NDJSON, Risk Diff, Black Box Recorder, les claims, l'evidence graph, les sources, la fraîcheur, l'intégrité, le changefeed, l'historique des signaux ou récupérer le texte complet d'un article, sans scraper le site. Le graphe de preuve devient interrogeable directement : article, affirmation, type, source, date et profondeur de preuve. Aucune clé ni authentification. La mesure d’usage reste agrégée, sans IP, cookie, session, empreinte ni user-agent dans la télémétrie MCP.
1.24.3, avec outils claims/sources consolidés, sélection de trois claims structurants typés maximum par article et statistiques anonymisées. La version et le SHA réellement actifs restent publiés par la ressource l0g://mcp/server ; le dépôt et le runtime ne sont considérés alignés qu’après publication de la release attestée.https://l0g.fr/api/mcp/compact expose six primitives :discover_l0g, search_l0g, get_document, get_evidence,build_research_pack et get_risk_state. Le MCP complet reste disponible à https://l0g.fr/api/mcp. Les empreintes des contrats sont publiées dans toolset-manifest.json.get_risk_state regroupe l’état courant, le diff sur 1, 7 ou 30 jours, l’historique par instrument et le replay Black Box. Chaque réponse conserve une date de référence, la source canonique, la méthodologie, la couverture et les limites de lecture. Commencer par ce tool pour toute question sur le risque.// exemple en une minute
Un endpoint, un tool, cinq champs à conserver.
- Connecter
https://l0g.fr/api/mcp/compact - Appeler
get_risk_state({ "mode": "current", "window": "7d" }) - Lire
asOf · freshness · variation · canonical · attribution
{
"name": "get_risk_state",
"arguments": { "mode": "current", "window": "7d" }
}La réponse regroupe les niveaux courants, leur fraîcheur instrument par instrument, la variation sur sept jours, l’URL JSON canonique et l’attributionSource : l0g.fr. Les sources amont HTTPS restent attachées aux instruments.
// pourquoi
Les agents IA lisent de plus en plus le web à la place des humains, et ils le font mal : ils aplatissent le HTML, perdent le contexte et citent de travers. Pour un site dont toute la valeur tient à la rigueur du sourcing, c'est un risque. Plutôt que de subir un scraping approximatif, l0g publie des surfaces lisibles par machine, propres et attribuables, pour que les données soient reprises exactement.
Le choix du Model Context Protocol prolonge la philosophie du site : statique, auto-hébergé, sans CDN ni proxy tiers, sans pistage. L'accès machine est ouvert, en lecture seule, sous licence CC BY 4.0. Un agent obtient la donnée juste, avec sa source et son URL canonique, plutôt qu'une approximation extraite d'une page.
// ce que nous avons construit
Six couches d'accès machine, de la plus simple à la plus riche, toutes générées à partir des mêmes contenus et des mêmes données vérifiées :
- une API JSON publique pour les indices de risque, Risk Diff, Black Box, le snapshot canonique Dette US et le flux Atom des changements de niveau ;
- un catalogue machine des articles, guides et sujets ;
- une Agent Surface avec claims, evidence graph, Risk Diff, Black Box, intégrité, changefeed et flux NDJSON ;
- un contrat OpenAPI et des flux NDJSON exposés directement comme tools MCP ;
- deux fichiers llms.txt et llms-full.txt, carte concise et corpus intégral, pour les agents qui les recherchent ;
- ce serveur MCP, qui transforme tout cela en resources lisibles et tools appelables par un agent, sans scraping. Les opérations fines sur claims, sources, preuves, changements, Risk Diff, Black Box et intégrité sont exposées comme tools structurés.
// endpoint
Transport Streamable HTTP (spec MCP 2025-11-25), mode requête/réponse JSON.
https://l0g.fr/api/mcp/compactEntrée recommandée pour les nouvelles intégrations. Surface complète experte : https://l0g.fr/api/mcp.
Rapport public agrégé : /api/mcp/usage. La méthode et ses limites sont visibles sur la page agents.
Lecture seule. Le code et la procédure de déploiement sont publics sur le dépôt GitHub.
// resources
Les documents et datasets sont exposés comme ressources MCP. Les agents peuvent les lister avec resources/list, lire leur contenu avec resources/read, et découvrir les URI paramétrées avec resources/templates/list. La liste est bornée aux dix ressources statiques afin de ne pas charger tout le catalogue dans le contexte.
| URI | Contenu |
|---|---|
l0g://agent-manifest | Manifeste Agent Surface |
l0g://openapi | Contrat OpenAPI complet |
l0g://freshness | Fraîcheur du corpus et des signaux |
l0g://integrity | Empreintes SHA-256 canoniques |
l0g://changes/latest | Derniers changements éditoriaux et publications |
l0g://risk-diff | Diff du risque sur 1, 7 et 30 jours |
l0g://black-box | Frames point-in-time hashées du risque |
l0g://signals/current | État courant des signaux |
l0g://signals/history | Historique point-in-time des signaux |
l0g://mcp/server | Version MCP, SHA actif et capacités serveur |
// resource templates
| Template | Contenu |
|---|---|
l0g://articles/{slug} | Première page article avec métadonnées, références et texte |
l0g://articles/{slug}{?section,offset,limit} | Page ciblée article par section, offset et limit |
l0g://articles/{slug}{?cursor} | Continuation article via nextCursor |
l0g://en/articles/{slug} | Première page analyse anglaise, reliée aux preuves françaises |
l0g://en/articles/{slug}{?section,offset,limit} | Page ciblée analyse anglaise |
l0g://en/articles/{slug}{?cursor} | Continuation analyse anglaise via nextCursor |
l0g://guides/{slug} | Première page guide avec métadonnées et texte |
l0g://guides/{slug}{?section,offset,limit} | Page ciblée guide par section, offset et limit |
l0g://guides/{slug}{?cursor} | Continuation guide via nextCursor |
l0g://en/guides/{slug} | Première page guide anglais |
l0g://en/guides/{slug}{?section,offset,limit} | Page ciblée guide anglais |
l0g://en/guides/{slug}{?cursor} | Continuation guide anglais via nextCursor |
l0g://claims/{claim_id} | Relation affirmation-source |
l0g://sources/{source_id} | Source primaire ou hôte cité |
l0g://signals/{instrument}/current | Signal courant et historique |
l0g://methodologies/{instrument} | Fiche méthodologique |
Les templates décrivent les familles de ressources et proposent des complétions de variables. Les instances se découvrent de façon ciblée avec les tools de recherche et de filtrage. Le service public actuel reste stateless et n'annonce pas de souscriptions live : la veille opérationnelle passe par l0g://changes/latest ouget_changefeed.
// prompts
Quatre workflows sont exposés avec prompts/list et rendus avecprompts/get. Ils sont déclenchés explicitement par l'utilisateur et partagent exactement leur définition avec les cartes de la page Agent Surface. Le serveur valide les arguments et n'annonce pas de notification listChanged.
| Prompt | Arguments | Workflow |
|---|---|---|
audit_financial_narrative | topic, language? | Audite un récit financier en séparant claims, preuves primaires, inférences, scénarios et limites. |
explain_risk_change | window?, language? | Explique ce qui a changé dans les signaux de risque sur une fenêtre publiée, sans extrapolation. |
verify_claim | claim, language? | Vérifie une affirmation contre les claims canoniques, leurs preuves et leurs sources primaires. |
replay_as_of | date, question?, language? | Rejoue uniquement un état réellement archivé avant une date donnée, sans reconstruction rétroactive. |
// tools
get_risk_state est le chemin normal pour lire le risque. Le catalogue complet ci-dessous sert aux workflows experts de recherche, filtrage, preuve, diff, replay, historique, extraction de sous-graphe ou lecture ciblée. La recherche plein texte reste locale et déterministe, sans base vectorielle ni fournisseur externe. Les articles longs sont paginables, avec curseur de continuation, accès direct aux sources et références séparées. Chaque réponse expose un résumé humain danscontent et les données exploitables dans structuredContent, avec un outputSchema déclaré. Les identifiants inconnus sont marqués parisError: true côté tools ; les resources inexistantes renvoient une erreur protocolaire MCP.
| Tool | Arguments | Renvoie |
|---|---|---|
get_agent_manifest | aucun | Manifeste Agent Surface : capacités, endpoints, règles d'usage, politiques de preuve et compteurs. |
get_risk_indices | aucun | Signaux de risque normalisés par instrument (US Macro, EU Macro, Yen Carry, Énergie, Dette US) et synthèse de confluence 13F. |
get_signal_history | key, limit | Historique des franchissements de niveau, état courant des signaux et confluence 13FLOW. |
get_risk_diff | window | Diff du risque sur 1, 7 ou 30 jours : signaux, sources, claims, modèles, articles et confiance. |
get_black_box | date, limitFrames | Replay point-in-time des frames de risque hashées, avec refus explicite des dates non rejouables. |
get_openapi_schema | mode, path | Contrat OpenAPI résumé, ciblé par endpoint ou complet pour générer un client. |
get_ndjson_feed | feed, recordType, limit | Flux NDJSON allowlistés : catalogue, claims, evidence graph, changefeed et historique des signaux. |
get_freshness | limit | Fraîcheur du corpus et des signaux : observedAt, computedAt, expiration, couverture et politique de fraîcheur. |
search_content | query, language, mode, limit | Recherche bilingue sur l'index canonique partagé avec l'Agent Surface et WebMCP. |
get_claims | claimId, articleSlug, language, sourceId, kind, query, includeEvidence, limit | Recherche, claim précise, article, source et voisinage de preuve dans un contrat unique. |
get_evidence_graph | articleSlug, language, nodeType, limit | Sous-graphe canonique ; un slug anglais pointe vers le graphe français sans duplication. |
list_sources | sourceId, mode, includeClaims, limit | Liste ou source précise, avec claims associées sur demande. |
get_integrity | path | Empreintes SHA-256 canoniques des surfaces Agent Surface, JSON et NDJSON. |
verify_artifact | path, sha256 | Vérification allowlistée d'un artefact via le manifeste d'intégrité. |
get_changefeed | contentType, limit | Derniers changements avec objectId, version/hash courant, statut de diff et changement sémantique. |
get_changes | contentType, slug, since, limit | Changefeed filtrable par type, slug et date minimale, avec métadonnées de version. |
list_recent_analyses | language, limit | Dernières analyses publiées, filtrables en français ou en anglais. |
list_guides | language | Guides de référence français ou anglais. |
search_by_topic | topic, language, limit | Analyses rattachées à un sujet, filtrables par langue. |
get_article | slug, language, offset, cursor, limit, length, section | Texte paginé français ou anglais, avec nextCursor et références canoniques séparées. |
// se connecter
Inspecter les tools avec l'outil officiel, en renseignant l'endpoint :
npx @modelcontextprotocol/inspectorBrancher un client de bureau via le pont local :
npx mcp-remote https://l0g.fr/api/mcp/compactExemple de configuration pour un client compatible :
{
"mcpServers": {
"l0g": {
"command": "npx",
"args": ["mcp-remote", "https://l0g.fr/api/mcp/compact"]
}
}
}Cycle MCP minimal en JSON-RPC brut : initialisation, notification initialized, puis appel ordinaire. Pour une session complète, préférer l'inspecteur ou mcp-remote.
curl -s -X POST https://l0g.fr/api/mcp/compact \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"curl","version":"0.1"}}}'
curl -s -X POST https://l0g.fr/api/mcp/compact \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","method":"notifications/initialized"}'
curl -s -X POST https://l0g.fr/api/mcp/compact \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'
curl -s -X POST https://l0g.fr/api/mcp/compact \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"get_risk_state","arguments":{"mode":"current"}}}'// sécurité et conception
- Lecture seule. Aucun tool n'écrit quoi que ce soit, et l'accès aux articles passe par une liste blanche de slugs, sans récupération d'URL arbitraire.
- Jamais exposé en direct. Le service n'écoute qu'en local, derrière Apache qui assure le TLS et le proxy.
- Anti détournement. Validation des en-têtes Host et Origin à chaque requête, contre les attaques par DNS rebinding, comme l'exige la spec.
- Bridé. Limitation de débit par IP, taille de requête bornée, et un service système durci (utilisateur éphémère, système de fichiers en lecture seule, capacités vidées).
- Sans donnée sensible. Tout est public, donc ni clé ni authentification, et aucun pistage.
En toute honnêteté, peu de clients grand public consomment encore nativement les serveurs MCP distants : le protocole est récent. Cet accès est donc autant un pari sur l'usage à venir qu'un outil immédiat, dans la continuité de l'API et des fichiers pour agents.
// autres accès machine
- utiliser l0g avec un agent : prompts, ordre de lecture et règles d'attribution.
- Agent Surface : manifeste, OpenAPI, claims, evidence graph, intégrité, changefeed et NDJSON.
- API JSON : indices de risque, snapshot Dette US et flux Atom des changements de niveau.
- Risk Diff : changements de risque sur 1, 7 et 30 jours.
- Black Box Recorder : replay point-in-time des frames de risque.
- debt-risk.json : valeur Dette US calculée depuis Debt Risk Radar latest.json, avec provenance.
- catalog.json : articles, guides, sujets et atlas du glossaire.
- evidence-graph.json : relation articles, claims, sources et datasets.
- llms.txt et llms-full.txt : carte concise et corpus intégral.
- méthodologie et atlas du glossaire pour le cadre, les définitions et les concepts voisins.