---
title: Les sites web ne mourront pas, ils cesseront d’être la porte d’entrée
description: Liad Yosef, co-créateur de MCP Apps, affirme que les assistants personnels vont remplacer les sites comme principale porte d’entrée du web. J’ai confronté mon site à ses données : mon serveur MCP était à deux clics, derrière le seul fichier que les agents ignorent.
date: 2026-09-27
updated: 2026-09-27
tags: MCP Apps, web agentique, agents IA, llms.txt
---

Les sites web ne vont pas disparaître. Ils perdent leur rôle de porte d’entrée. C’est la thèse que Liad Yosef, co-créateur de MCP Apps, a défendue à AGNTCon + MCPCon Europe : les assistants personnels deviennent le principal point d’entrée du web, et le site devient une surface parmi d’autres.

Je venais de passer deux semaines à rendre ce site lisible par les agents, alors cette phrase m’a arrêté net. Puis les données de son étude ont touché mon propre site de plein fouet.

<figure class="fd-fig fd-door" aria-labelledby="fd1-cap">
<input class="fd-radio" type="radio" name="fd1" id="fd1-today" checked>
<input class="fd-radio" type="radio" name="fd1" id="fd1-agentic">
<div class="fd-tabs"><label for="fd1-today">Aujourd’hui</label><label for="fd1-agentic">Web agentique</label></div>
<div class="fd-canvas">
<svg viewBox="0 0 440 356" role="img" aria-labelledby="fd1-title fd1-desc">
<title id="fd1-title">Qui passe par la porte d’entrée</title>
<desc id="fd1-desc">Aujourd’hui, vous ouvrez un onglet de navigateur par entreprise et vous entrez par son site. Dans le web agentique, votre assistant appelle directement le serveur MCP de chaque entreprise, et seul un petit morceau d’interface à ses couleurs, comme un plan de salle, vous revient.</desc>
<defs>
<marker id="fd1-head" viewBox="0 0 8 8" refX="7" refY="4" markerWidth="8" markerHeight="8" orient="auto-start-reverse"><path class="fd-head" d="M0,0 L8,4 L0,8 Z"/></marker>
<marker id="fd1-head-c" viewBox="0 0 8 8" refX="7" refY="4" markerWidth="8" markerHeight="8" orient="auto-start-reverse"><path class="fd-head-c" d="M0,0 L8,4 L0,8 Z"/></marker>
<path id="fd1-p1" d="M220,52 V140 L46,266"/>
<path id="fd1-p2" d="M220,52 V140 L191,266"/>
<path id="fd1-p3" d="M220,52 V140 L336,266"/>
<path id="fd1-a1" d="M220,52 V140 L104,266"/>
<path id="fd1-a2" d="M220,52 V140 L249,266"/>
<path id="fd1-a3" d="M220,52 V140 L394,266"/>
<path id="fd1-r" d="M410,266 L320,124 L272,40"/>
</defs>
<path class="fd-line" d="M220,52 V96"/>
<g class="fd-stage fd-in-today">
<path class="fd-line" d="M220,140 L97,228" marker-end="url(#fd1-head)"/>
<path class="fd-line" d="M220,140 L200,228" marker-end="url(#fd1-head)"/>
<path class="fd-line" d="M220,140 L302,228" marker-end="url(#fd1-head)"/>
<text class="fd-note" x="10" y="186">vous apprenez</text>
<text class="fd-note" x="10" y="201">chaque menu</text>
</g>
<g class="fd-stage fd-in-agentic">
<path class="fd-line fd-line-agent" d="M220,140 L138,228" marker-end="url(#fd1-head-c)"/>
<path class="fd-line fd-line-agent" d="M220,140 L240,228" marker-end="url(#fd1-head-c)"/>
<path class="fd-line fd-line-agent" d="M220,140 L343,228" marker-end="url(#fd1-head-c)"/>
<path class="fd-line fd-line-back" d="M410,266 L320,124 L274,44" marker-end="url(#fd1-head-c)"/>
<text class="fd-note fd-note-agent" x="10" y="186">des appels,</text>
<text class="fd-note fd-note-agent" x="10" y="201">pas de clics</text>
<text class="fd-note fd-note-agent" x="436" y="150" text-anchor="end">le plan</text>
<text class="fd-note fd-note-agent" x="436" y="165" text-anchor="end">revient</text>
</g>
<g class="fd-box fd-you"><rect x="170" y="12" width="100" height="40"/><text class="fd-t" x="220" y="37" text-anchor="middle">Vous</text></g>
<g class="fd-box fd-stage fd-in-today"><rect x="120" y="96" width="200" height="44"/><text class="fd-t" x="220" y="115" text-anchor="middle">Navigateur</text><text class="fd-s" x="220" y="131" text-anchor="middle">un onglet par entreprise</text></g>
<g class="fd-box fd-box-agent fd-stage fd-in-agentic"><rect x="120" y="96" width="200" height="44"/><text class="fd-t" x="220" y="115" text-anchor="middle">Votre assistant</text><text class="fd-s fd-s-agent" x="220" y="131" text-anchor="middle">connaît déjà votre besoin</text></g>
<g class="fd-box"><rect x="10" y="230" width="130" height="112"/><text class="fd-t" x="75" y="253" text-anchor="middle">Voyage</text></g>
<g class="fd-box"><rect x="155" y="230" width="130" height="112"/><text class="fd-t" x="220" y="253" text-anchor="middle">Boutique</text></g>
<g class="fd-box"><rect x="300" y="230" width="130" height="112"/><text class="fd-t" x="365" y="253" text-anchor="middle">Billetterie</text></g>
<g class="fd-stage fd-in-today">
<rect class="fd-door fd-door-on" x="22" y="266" width="48" height="62"/><rect class="fd-door fd-door-off" x="80" y="266" width="48" height="62"/>
<rect class="fd-door fd-door-on" x="167" y="266" width="48" height="62"/><rect class="fd-door fd-door-off" x="225" y="266" width="48" height="62"/>
<rect class="fd-door fd-door-on" x="312" y="266" width="48" height="62"/><rect class="fd-door fd-door-off" x="370" y="266" width="48" height="62"/>
</g>
<g class="fd-stage fd-in-agentic">
<rect class="fd-door fd-door-off" x="22" y="266" width="48" height="62"/><rect class="fd-door fd-door-mcp" x="80" y="266" width="48" height="62"/>
<rect class="fd-door fd-door-off" x="167" y="266" width="48" height="62"/><rect class="fd-door fd-door-mcp" x="225" y="266" width="48" height="62"/>
<rect class="fd-door fd-door-off" x="312" y="266" width="48" height="62"/><rect class="fd-door fd-door-mcp" x="370" y="266" width="48" height="62"/>
</g>
<g class="fd-door-labels">
<text x="46" y="301" text-anchor="middle">web</text><text x="104" y="301" text-anchor="middle">MCP</text>
<text x="191" y="301" text-anchor="middle">web</text><text x="249" y="301" text-anchor="middle">MCP</text>
<text x="336" y="301" text-anchor="middle">web</text><text x="394" y="301" text-anchor="middle">MCP</text>
</g>
<g class="fd-token fd-stage fd-in-today">
<rect x="-5" y="-5" width="10" height="10"><animateMotion dur="9s" repeatCount="indefinite" calcMode="linear" keyPoints="0;0.29;0.29;1;1" keyTimes="0;0.1;0.5;0.9;1"><mpath href="#fd1-p1"/></animateMotion></rect>
<rect x="-5" y="-5" width="10" height="10"><animateMotion dur="9s" begin="-3s" repeatCount="indefinite" calcMode="linear" keyPoints="0;0.405;0.405;1;1" keyTimes="0;0.1;0.5;0.9;1"><mpath href="#fd1-p2"/></animateMotion></rect>
<rect x="-5" y="-5" width="10" height="10"><animateMotion dur="9s" begin="-6s" repeatCount="indefinite" calcMode="linear" keyPoints="0;0.339;0.339;1;1" keyTimes="0;0.1;0.5;0.9;1"><mpath href="#fd1-p3"/></animateMotion></rect>
</g>
<g class="fd-token fd-stage fd-in-agentic">
<rect x="-5" y="-5" width="10" height="10"><animateMotion dur="2.4s" repeatCount="indefinite"><mpath href="#fd1-a1"/></animateMotion></rect>
<rect x="-5" y="-5" width="10" height="10"><animateMotion dur="2.4s" begin="-0.8s" repeatCount="indefinite"><mpath href="#fd1-a2"/></animateMotion></rect>
<rect x="-5" y="-5" width="10" height="10"><animateMotion dur="2.4s" begin="-1.6s" repeatCount="indefinite"><mpath href="#fd1-a3"/></animateMotion></rect>
</g>
<g class="fd-token fd-token-ui fd-stage fd-in-agentic">
<rect x="-9" y="-6" width="18" height="12"><animateMotion dur="2.4s" begin="-1.2s" repeatCount="indefinite"><mpath href="#fd1-r"/></animateMotion></rect>
</g>
</svg>
</div>
<figcaption id="fd1-cap">
<span class="fd-stage fd-in-today">Aujourd’hui : chaque entreprise est un site web. Vous ouvrez un onglet pour chacune et vous apprenez ses menus, rien que pour dire ce que vous voulez.</span>
<span class="fd-stage fd-in-agentic">Web agentique : votre assistant appelle chaque entreprise en coulisses. Le site est toujours là, mais on n’entre plus par lui. Seul le dernier kilomètre, comme un plan de salle, vous revient sous forme d’interface.</span>
<span class="fd-credit">D’après la conférence de Liad Yosef <a href="https://www.youtube.com/watch?v=-w6RDNBAI0E&amp;t=17860s" target="_blank" rel="noopener noreferrer">MCP Apps and the agentic web</a>, AGNTCon + MCPCon Europe 2026. Changez d’onglet.</span>
</figcaption>
</figure>

## Ce qu’il a vraiment dit

La conférence s’intitule [MCP Apps and the agentic web](https://www.youtube.com/watch?v=-w6RDNBAI0E&t=17860s), dans le même livestream que la keynote de Dex Horthy dont j’ai parlé dans [la note sur l’usine logicielle](/fr/notes/software-factory-2022-to-lights-off.html). La phrase :

> Il se pourrait que les sites web et les navigateurs perdent leur place de principal point d’entrée du web.

Il ne dit pas que le web meurt. Il le compare au mobile. L’ordinateur n’a pas disparu, mais les réseaux sociaux sont passés sur le téléphone et y sont restés. Personne n’ouvre Instagram sur son ordinateur. Son pari : une grande partie de ce que nous faisons sur les sites web passera aux agents de la même façon, et y restera.

Comme preuve, il a cité des entreprises qui bougent déjà : Sentry, qui vise désormais les agents en priorité (un an après que son CPO lui a parié que les sites web existeraient encore dans 25 ans), Salesforce, qui passe en headless, et DoorDash, qui sort une CLI. Il a aussi rapporté que, selon Cloudflare, le trafic des bots a dépassé le trafic humain plus vite que prévu.

## Un site web sert à dire à une entreprise ce que vous voulez

C’est là que tout s’est éclairé pour moi. Quand vous arrivez sur booking.com, le site ne sait pas si vous voulez réserver un hôtel, déposer une réclamation ou vous connecter. Toute l’interface existe pour que vous puissiez exprimer cette intention à l’entreprise.

Si vous avez déjà dit à votre assistant ce que vous voulez, il n’a pas besoin de parcourir un site à coups de clics pour transmettre cette intention. Il peut simplement appeler l’entreprise.

Reste ce qu’il appelle le dernier kilomètre. Certaines choses sont pénibles à faire en texte : choisir une place dans une salle, consulter un agenda. C’est là qu’interviennent les MCP Apps. Un serveur MCP ne renvoie pas seulement des données, il peut envoyer dans la conversation un morceau de sa propre interface interactive.

<figure class="fd-fig fd-chat-fig" aria-labelledby="fd2-cap">
<div class="fd-chat" role="img" aria-label="Une conversation où l’utilisateur demande d’organiser un anniversaire. L’assistant répond avec un extrait d’une app d’agenda où le 14 est libre, puis le plan de salle d’une app de billetterie avec deux places sélectionnées et un bouton Réserver.">
<div class="fd-msg fd-msg-you">Prévois quelque chose pour notre anniversaire le 14</div>
<div class="fd-msg fd-msg-bot">Vous êtes libre après 19 h ce jour-là, et il y a un spectacle à 20 h. Choisissez vos places :</div>
<div class="fd-app"><div class="fd-app-head"><span>Agenda</span><span>MCP App</span></div><div class="fd-week"><span>11</span><span>12</span><span>13</span><span class="on">14</span><span>15</span><span>16</span><span>17</span></div><div class="fd-app-foot"><span>sam. 14 · libre dès 19:00</span></div></div>
<div class="fd-app"><div class="fd-app-head"><span>Billets</span><span>MCP App</span></div><div class="fd-stagebar">scène</div><div class="fd-seats"><i></i><i class="x"></i><i class="x"></i><i></i><i></i><i class="x"></i><i></i><i></i><i class="x"></i><i></i><i></i><i></i><i class="on"></i><i class="on"></i><i class="x"></i><i></i><i class="x"></i><i></i><i></i><i></i><i></i><i class="x"></i><i></i><i></i></div><div class="fd-app-foot"><span>2 places · rang B</span><span class="fd-btn">Réserver</span></div></div>
</div>
<figcaption id="fd2-cap">Une illustration des MCP Apps, pas un vrai produit : chaque service envoie son propre petit morceau d’interface dans la conversation, et vous ne quittez jamais l’assistant.</figcaption>
</figure>

Tout le monde y gagne. Ticketmaster garde sa marque, et vous savez déjà utiliser son plan de salle. L’assistant n’a pas à en inventer un : l’expert du domaine fournit le sien.

Son exemple : organiser un anniversaire. Au lieu de 20 onglets, l’assistant vous montre un extrait de Google Calendar, puis un extrait d’Amazon, et vous ne quittez jamais la conversation. Les apps ne maîtrisent plus le parcours utilisateur. Il ne leur reste que le dernier kilomètre. Il appelle ça le web presque headless.

MCP Apps a démarré il y a moins d’un an sous le nom de MCP-UI, qu’il a construit avec Ido Salomon. Anthropic et OpenAI se sont ensuite mis autour de la table avec eux pour en faire la spécification MCP Apps, publiée en janvier.

## À chaque catégorie son assistant

Pour Liad, ceux qui le ressentent en premier se rangent sur un spectre. Les agents de code ont déjà changé la façon dont on choisit les outils de dev : si votre agent se tourne vers Supabase, MongoDB ou Sentry, leur activité monte, et sinon, elle baisse. Les apps de chat comme Claude, ChatGPT et Gemini font la même chose au SaaS B2B, avec des gens qui utilisent Salesforce depuis leur app de chat.

La prochaine vague, ce sont les assistants grand public qui se généralisent. Celle-là touche dix fois plus d’entreprises, les Walmart et les Target. Les gens arrêtent de parcourir une boutique et demandent à leur assistant d’acheter l’article, et l’assistant se soucie peu de la boutique d’où il vient.

<figure class="fd-fig" aria-labelledby="fd6-cap">
<div class="fd-waves">
<div class="fd-wave"><p class="fd-wave-when">En cours</p><p class="fd-wave-who">Agents de code</p><p class="fd-wave-arrow" aria-hidden="true">↓</p><p class="fd-wave-what">Outils de dev</p><p class="fd-wave-note">Choisis par l’agent, ou pas choisis du tout.</p></div>
<div class="fd-wave"><p class="fd-wave-when">En cours</p><p class="fd-wave-who">Claude, ChatGPT, Gemini</p><p class="fd-wave-arrow" aria-hidden="true">↓</p><p class="fd-wave-what">SaaS B2B, productivité</p><p class="fd-wave-note">Salesforce, utilisé depuis une conversation.</p></div>
<div class="fd-wave fd-wave-next"><p class="fd-wave-when">Ensuite</p><p class="fd-wave-who">Assistants personnels</p><p class="fd-wave-arrow" aria-hidden="true">↓</p><p class="fd-wave-what">Apps grand public, e-commerce</p><p class="fd-wave-note">Dix fois plus d’entreprises.</p></div>
</div>
<figcaption id="fd6-cap">Chaque vague d’assistants devient le nouveau point d’entrée de toute une catégorie. Redessiné d’après la slide de Liad.</figcaption>
</figure>

## La nouvelle UX, c’est AX plus UAX

Il coupe l’expérience utilisateur en deux.

<figure class="fd-fig fd-eq-fig" aria-labelledby="fd7-cap">
<p class="fd-eq"><span>UX</span><span class="fd-eq-op">=</span><span class="fd-eq-ax">AX</span><span class="fd-eq-op">+</span><span class="fd-eq-uax">UAX</span></p>
<div class="fd-eq-defs"><p><b>AX</b>comment un agent vit votre produit</p><p><b>UAX</b>comment un humain vit cet agent</p></div>
<figcaption id="fd7-cap">Headless, mais avec un œil humain au bout. D’après la slide de Liad.</figcaption>
</figure>

Il y a toujours un humain au bout de la chaîne, donc les deux moitiés comptent. Et ça veut dire être prêt pour les agents sur tous les fronts à la fois. Il vous faut toujours un site web, désormais visité par des personnes et par des agents de navigateur. Il vous faut aussi un endpoint MCP, visité par l’agent IA de l’utilisateur ou par l’agent de l’app qui travaille pour lui.

<figure class="fd-fig" aria-labelledby="fd8-cap">
<div class="fd-canvas">
<svg viewBox="0 0 440 300" role="img" aria-labelledby="fd8-title fd8-desc">
<title id="fd8-title">Prêt pour les agents sur tous les fronts</title>
<desc id="fd8-desc">Quatre types de visiteurs atteignent votre produit par deux surfaces. Une personne dans un navigateur et un agent de navigateur passent par l’interface humaine. L’agent IA de l’utilisateur et l’agent de l’app passent par l’endpoint MCP.</desc>
<defs>
<marker id="fd8-head" viewBox="0 0 8 8" refX="7" refY="4" markerWidth="8" markerHeight="8" orient="auto-start-reverse"><path class="fd-head" d="M0,0 L8,4 L0,8 Z"/></marker>
<marker id="fd8-head-c" viewBox="0 0 8 8" refX="7" refY="4" markerWidth="8" markerHeight="8" orient="auto-start-reverse"><path class="fd-head-c" d="M0,0 L8,4 L0,8 Z"/></marker>
<path id="fd8-p1" d="M290,36 L242,64"/>
<path id="fd8-p2" d="M290,96 L242,78"/>
<path id="fd8-p3" d="M290,206 L242,224"/>
<path id="fd8-p4" d="M290,266 L242,238"/>
</defs>
<path class="fd-line" d="M290,36 L242,63" marker-end="url(#fd8-head)"/>
<path class="fd-line" d="M290,96 L242,78" marker-end="url(#fd8-head)"/>
<path class="fd-line fd-line-agent" d="M290,206 L242,223" marker-end="url(#fd8-head-c)"/>
<path class="fd-line fd-line-agent" d="M290,266 L242,238" marker-end="url(#fd8-head-c)"/>
<path class="fd-line fd-line-dim" d="M140,72 L102,136"/>
<path class="fd-line fd-line-dim" d="M140,228 L102,166"/>
<g class="fd-box"><rect x="10" y="126" width="92" height="48"/><text class="fd-t" x="56" y="145" text-anchor="middle">Votre</text><text class="fd-t" x="56" y="166" text-anchor="middle">produit</text></g>
<g class="fd-box"><rect x="140" y="50" width="100" height="42"/><text class="fd-t" x="190" y="76" text-anchor="middle">UI humaine</text></g>
<g class="fd-box fd-box-agent"><rect x="140" y="208" width="100" height="42"/><text class="fd-t" x="190" y="234" text-anchor="middle">MCP</text></g>
<g class="fd-box fd-you"><rect x="290" y="20" width="140" height="32"/><text class="fd-t" x="360" y="41" text-anchor="middle">Vous (navigateur)</text></g>
<g class="fd-box"><rect x="290" y="80" width="140" height="32"/><text class="fd-t" x="360" y="101" text-anchor="middle">Agent navigateur</text></g>
<g class="fd-box fd-box-agent"><rect x="290" y="190" width="140" height="32"/><text class="fd-t" x="360" y="211" text-anchor="middle">Votre agent IA</text></g>
<g class="fd-box fd-box-agent"><rect x="290" y="250" width="140" height="32"/><text class="fd-t" x="360" y="271" text-anchor="middle">L’agent de l’app</text></g>
<text class="fd-label" x="360" y="150" text-anchor="middle">QUI VISITE</text>
<text class="fd-label" x="190" y="150" text-anchor="middle">PAR OÙ</text>
<g class="fd-token">
<rect x="-5" y="-5" width="10" height="10"><animateMotion dur="2.8s" repeatCount="indefinite"><mpath href="#fd8-p1"/></animateMotion></rect>
<rect x="-5" y="-5" width="10" height="10"><animateMotion dur="2.8s" begin="-0.7s" repeatCount="indefinite"><mpath href="#fd8-p2"/></animateMotion></rect>
</g>
<g class="fd-token fd-token-ui">
<rect x="-5" y="-5" width="10" height="10"><animateMotion dur="2.8s" begin="-1.4s" repeatCount="indefinite"><mpath href="#fd8-p3"/></animateMotion></rect>
<rect x="-5" y="-5" width="10" height="10"><animateMotion dur="2.8s" begin="-2.1s" repeatCount="indefinite"><mpath href="#fd8-p4"/></animateMotion></rect>
</g>
</svg>
</div>
<figcaption id="fd8-cap">Deux surfaces, quatre types de visiteurs. Redessiné d’après la slide « Agent ready, on all fronts » de Liad.</figcaption>
</figure>

## Les agents ne sont fidèles à aucune marque

Mon histoire préférée de la conférence. Quand son équipe a choisi un outil d’analytics, elle voulait Mixpanel, qu’elle utilisait depuis dix ans. Claude Code poussait sans cesse PostHog, parce que son serveur MCP et son API étaient plus simples à utiliser. L’équipe est partie sur PostHog.

<figure class="fd-fig" aria-labelledby="fd5-cap">
<div class="fd-pick">
<div class="fd-pick-card"><p class="fd-pick-who">Ce que l’équipe voulait</p><p class="fd-pick-name">Mixpanel</p><p class="fd-pick-row">10 ans d’utilisation</p><p class="fd-pick-row">mieux classé sur Google</p></div>
<div class="fd-pick-arrow" aria-hidden="true"><span>Claude Code</span><b>→</b></div>
<div class="fd-pick-card fd-pick-win"><p class="fd-pick-who">Ce que l’agent a choisi</p><p class="fd-pick-name">PostHog</p><p class="fd-pick-row">meilleur serveur MCP</p><p class="fd-pick-row">API plus simple à utiliser</p><span class="fd-pick-stamp">En prod</span></div>
</div>
<figcaption id="fd5-cap">L’outil d’analytics sur lequel l’équipe de Liad a fini par partir, tel qu’il l’a raconté.</figcaption>
</figure>

Dix ans d’UX et d’expérience développeur, perdus parce qu’un agent s’en sortait mieux ailleurs. Et Mixpanel est mieux classé sur Google.

C’est ce qui ne me quitte plus. Les intégrations e-commerce, c’est mon métier, et cette prochaine vague vise pile mon monde : si les gens demandent à un assistant d’acheter quelque chose au lieu de parcourir une boutique, ce que la boutique propose aux agents devient sa vitrine.

## Le chiffre qui a touché mon propre site

L’entreprise de Liad, [Ora](https://ora.ai), mesure à quel point les sites web sont prêts pour les agents. Ora le note sous forme d’une boucle de cinq vérifications, dans l’ordre où un agent tombe sur vous, et l’authentification pèse le plus lourd : 30 points sur 100.

<figure class="fd-fig" aria-labelledby="fd9-cap">
<div class="fd-canvas">
<svg viewBox="0 0 440 428" role="img" aria-labelledby="fd9-title fd9-desc">
<title id="fd9-title">Comment Ora note la préparation aux agents</title>
<desc id="fd9-desc">L’intention d’un utilisateur lance une boucle de cinq vérifications : découverte, 15 points, les agents peuvent-ils vous trouver ; identité, 20 points, les agents vous comprennent-ils ; authentification et accès, 30 points, les agents peuvent-ils s’authentifier ; intégration, 20 points, les agents peuvent-ils faire le travail ; expérience utilisateur, 15 points, les humains peuvent-ils vous utiliser au besoin. Puis la boucle revient à l’intention suivante. Une barre montre les poids sur 100, l’authentification étant le plus lourd.</desc>
<defs>
<marker id="fd9-head" viewBox="0 0 8 8" refX="7" refY="4" markerWidth="8" markerHeight="8" orient="auto-start-reverse"><path class="fd-head" d="M0,0 L8,4 L0,8 Z"/></marker>
<path id="fd9-loop" d="M120,26 V328 H18 V26 H120"/>
</defs>
<g class="fd-token"><rect x="-5" y="-5" width="10" height="10"><animateMotion dur="9s" repeatCount="indefinite"><mpath href="#fd9-loop"/></animateMotion></rect></g>
<path class="fd-line fd-line-dim" d="M40,328 H18 V26 H78" marker-end="url(#fd9-head)"/>
<g class="fd-box fd-you"><rect x="80" y="12" width="80" height="28"/><text class="fd-t" x="120" y="31" text-anchor="middle">Besoin</text></g>
<path class="fd-line" d="M120,40 V58" marker-end="url(#fd9-head)"/>
<g class="fd-box"><rect x="40" y="60" width="160" height="40"/><text class="fd-t" x="120" y="85" text-anchor="middle">Découverte</text></g>
<g class="fd-tag"><rect x="176" y="51" width="46" height="18"/><text x="199" y="64" text-anchor="middle">15 pts</text></g>
<text class="fd-q" x="236" y="85">Les agents vous trouvent ?</text>
<path class="fd-line" d="M120,100 V120" marker-end="url(#fd9-head)"/>
<g class="fd-box"><rect x="40" y="122" width="160" height="40"/><text class="fd-t" x="120" y="147" text-anchor="middle">Identité</text></g>
<g class="fd-tag"><rect x="176" y="113" width="46" height="18"/><text x="199" y="126" text-anchor="middle">20 pts</text></g>
<text class="fd-q" x="236" y="147">Ils vous comprennent ?</text>
<path class="fd-line" d="M120,162 V182" marker-end="url(#fd9-head)"/>
<g class="fd-box fd-box-solid"><rect x="40" y="184" width="160" height="40"/><text class="fd-t" x="120" y="209" text-anchor="middle">Auth et accès</text></g>
<g class="fd-tag"><rect x="176" y="175" width="46" height="18"/><text x="199" y="188" text-anchor="middle">30 pts</text></g>
<text class="fd-q" x="236" y="209">Ils s’authentifient ?</text>
<path class="fd-line" d="M120,224 V244" marker-end="url(#fd9-head)"/>
<g class="fd-box"><rect x="40" y="246" width="160" height="40"/><text class="fd-t" x="120" y="271" text-anchor="middle">Intégration</text></g>
<g class="fd-tag"><rect x="176" y="237" width="46" height="18"/><text x="199" y="250" text-anchor="middle">20 pts</text></g>
<text class="fd-q" x="236" y="271">Ils font le travail ?</text>
<path class="fd-line" d="M120,286 V306" marker-end="url(#fd9-head)"/>
<g class="fd-box"><rect x="40" y="308" width="160" height="40"/><text class="fd-t" x="120" y="333" text-anchor="middle">Expérience (UX)</text></g>
<g class="fd-tag"><rect x="176" y="299" width="46" height="18"/><text x="199" y="312" text-anchor="middle">15 pts</text></g>
<text class="fd-q" x="236" y="326">Un humain peut vous</text><text class="fd-q" x="236" y="341">utiliser au besoin ?</text>
<text class="fd-label" x="10" y="368">POIDS, SUR 100</text>
<g class="fd-bar">
<rect x="10" y="376" width="63" height="24"/><text class="fd-bar-n" x="41.5" y="393" text-anchor="middle">15</text><text class="fd-bar-l" x="41.5" y="416" text-anchor="middle">Découverte</text>
<rect x="73" y="376" width="84" height="24"/><text class="fd-bar-n" x="115" y="393" text-anchor="middle">20</text><text class="fd-bar-l" x="115" y="416" text-anchor="middle">Identité</text>
<rect class="on" x="157" y="376" width="126" height="24"/><text class="fd-bar-n on" x="220" y="393" text-anchor="middle">30</text><text class="fd-bar-l" x="220" y="416" text-anchor="middle">Auth</text>
<rect x="283" y="376" width="84" height="24"/><text class="fd-bar-n" x="325" y="393" text-anchor="middle">20</text><text class="fd-bar-l" x="325" y="416" text-anchor="middle">Intégration</text>
<rect x="367" y="376" width="63" height="24"/><text class="fd-bar-n" x="398.5" y="393" text-anchor="middle">15</text><text class="fd-bar-l" x="398.5" y="416" text-anchor="middle">UX</text>
</g>
</svg>
</div>
<figcaption id="fd9-cap">Les cinq vérifications sur lesquelles un agent tombe, dans l’ordre, et le poids de chacune. Redessiné d’après la slide de Liad sur la façon dont Ora note la préparation aux agents.</figcaption>
</figure>

C’est dans cette première case que se trouve le constat sur `llms.txt`. Ora a scanné des dizaines de milliers de sites, et environ **50 %** publient un `llms.txt`.

Puis l’équipe a lancé des milliers de vraies sessions d’agents sur ces sites. Les agents ne cherchaient pas `llms.txt`. Ils allaient droit à la doc et à la page d’accueil, et ne lisaient `llms.txt` que lorsque la doc les y envoyait.

<figure class="fd-fig" aria-labelledby="fd3-cap">
<div class="fd-canvas">
<svg viewBox="0 0 440 250" role="img" aria-labelledby="fd3-title fd3-desc">
<title id="fd3-title">La moitié du web publie un llms.txt, les agents l’ignorent le plus souvent</title>
<desc id="fd3-desc">Dix carrés, dont cinq pleins : environ la moitié des sites scannés par Ora publient un llms.txt. En dessous, le chemin que les agents ont vraiment suivi : de l’agent à la page d’accueil, puis à la doc. Le fichier llms.txt pend sous la doc par un trait en pointillés, lu seulement quand la doc y renvoie.</desc>
<defs>
<marker id="fd3-head" viewBox="0 0 8 8" refX="7" refY="4" markerWidth="8" markerHeight="8" orient="auto-start-reverse"><path class="fd-head" d="M0,0 L8,4 L0,8 Z"/></marker>
<path id="fd3-p" d="M55,128 L200,128 L365,128"/>
</defs>
<text class="fd-label" x="10" y="20">SITES SCANNÉS PAR ORA AVEC UN LLMS.TXT</text>
<g class="fd-waffle">
<rect class="on" x="10" y="33" width="26" height="26"/><rect class="on" x="41" y="33" width="26" height="26"/><rect class="on" x="72" y="33" width="26" height="26"/><rect class="on" x="103" y="33" width="26" height="26"/><rect class="on" x="134" y="33" width="26" height="26"/>
<rect x="165" y="33" width="26" height="26"/><rect x="196" y="33" width="26" height="26"/><rect x="227" y="33" width="26" height="26"/><rect x="258" y="33" width="26" height="26"/><rect x="289" y="33" width="26" height="26"/>
</g>
<text class="fd-big" x="432" y="56" text-anchor="end">~50 %</text>
<path class="fd-rule" d="M10,86 H430"/>
<text class="fd-label" x="10" y="108">OÙ LES AGENTS SONT VRAIMENT ALLÉS</text>
<g class="fd-box fd-box-agent"><rect x="10" y="128" width="90" height="40"/><text class="fd-t" x="55" y="153" text-anchor="middle">Agent</text></g>
<g class="fd-box"><rect x="135" y="128" width="130" height="40"/><text class="fd-t" x="200" y="153" text-anchor="middle">Accueil</text></g>
<g class="fd-box"><rect x="300" y="128" width="130" height="40"/><text class="fd-t" x="365" y="153" text-anchor="middle">Doc</text></g>
<path class="fd-line" d="M100,148 H133" marker-end="url(#fd3-head)"/>
<path class="fd-line" d="M265,148 H298" marker-end="url(#fd3-head)"/>
<path class="fd-line fd-line-dim" d="M365,168 V198"/>
<g class="fd-box fd-box-dim"><rect x="300" y="200" width="130" height="36"/><text class="fd-t" x="365" y="223" text-anchor="middle">llms.txt</text></g>
<text class="fd-note" x="288" y="214" text-anchor="end">lu seulement quand</text>
<text class="fd-note" x="288" y="229" text-anchor="end">la doc y renvoie</text>
<g class="fd-token"><rect x="-5" y="-5" width="10" height="10"><animateMotion dur="6s" repeatCount="indefinite" calcMode="linear" keyPoints="0;0.47;0.47;1;1" keyTimes="0;0.2;0.45;0.65;1"><mpath href="#fd3-p"/></animateMotion></rect></g>
</svg>
</div>
<figcaption id="fd3-cap">Les chiffres d’Ora tels que Liad les a donnés pendant la conférence : des dizaines de milliers de sites scannés, des milliers de sessions d’agents.</figcaption>
</figure>

Je suis donc allé voir le mien. heybrahim.com a un `llms.txt`, un `llms-full.txt`, un `profile.json` et [un serveur MCP](/fr/notes/portfolio-mcp-server.html) à l’adresse `api.heybrahim.com/mcp`. Voici le chemin qu’un agent doit suivre pour trouver ce serveur :

<figure class="fd-fig" aria-labelledby="fd4-cap">
<div class="fd-canvas">
<svg viewBox="0 0 440 336" role="img" aria-labelledby="fd4-title fd4-desc">
<title id="fd4-title">Comment un agent trouve mon serveur MCP</title>
<desc id="fd4-desc">Un agent arrive sur heybrahim.com. Sa requête vers le fichier ai-catalog.json renvoie une 404. La page d’accueil n’affiche pas l’URL du serveur MCP, seulement de petits liens en pied de page. L’URL figure sur la page IA, dans les notes et dans llms.txt, chacun à un clic de la page d’accueil.</desc>
<defs>
<marker id="fd4-head" viewBox="0 0 8 8" refX="7" refY="4" markerWidth="8" markerHeight="8" orient="auto-start-reverse"><path class="fd-head" d="M0,0 L8,4 L0,8 Z"/></marker>
<marker id="fd4-head-c" viewBox="0 0 8 8" refX="7" refY="4" markerWidth="8" markerHeight="8" orient="auto-start-reverse"><path class="fd-head-c" d="M0,0 L8,4 L0,8 Z"/></marker>
<path id="fd4-bounce" d="M198,46 L110,90"/>
<path id="fd4-home" d="M242,46 L330,90"/>
</defs>
<path class="fd-line fd-line-alert" d="M198,46 L110,88"/>
<path class="fd-line" d="M242,46 L330,88" marker-end="url(#fd4-head)"/>
<path class="fd-line" d="M335,136 L75,184" marker-end="url(#fd4-head)"/>
<path class="fd-line" d="M335,136 L220,184" marker-end="url(#fd4-head)"/>
<path class="fd-line" d="M335,136 L365,184" marker-end="url(#fd4-head)"/>
<path class="fd-line fd-line-agent fd-march" d="M75,222 L150,274" marker-end="url(#fd4-head-c)"/>
<path class="fd-line fd-line-agent fd-march" d="M220,222 V274" marker-end="url(#fd4-head-c)"/>
<path class="fd-line fd-line-agent fd-march" d="M365,222 L290,274" marker-end="url(#fd4-head-c)"/>
<g class="fd-box fd-box-agent"><rect x="170" y="10" width="100" height="36"/><text class="fd-t" x="220" y="33" text-anchor="middle">Agent</text></g>
<g class="fd-box fd-box-alert"><rect x="10" y="90" width="200" height="46"/><text class="fd-t" x="110" y="110" text-anchor="middle">ai-catalog.json</text><text class="fd-s fd-s-alert" x="110" y="127" text-anchor="middle">404, n’existe pas</text></g>
<g class="fd-box fd-you"><rect x="240" y="90" width="190" height="46"/><text class="fd-t" x="335" y="110" text-anchor="middle">Accueil</text><text class="fd-s" x="335" y="127" text-anchor="middle">sans URL, liens du footer</text></g>
<g class="fd-box"><rect x="10" y="186" width="130" height="36"/><text class="fd-t" x="75" y="209" text-anchor="middle">Page IA</text></g>
<g class="fd-box"><rect x="155" y="186" width="130" height="36"/><text class="fd-t" x="220" y="209" text-anchor="middle">Notes</text></g>
<g class="fd-box"><rect x="300" y="186" width="130" height="36"/><text class="fd-t" x="365" y="209" text-anchor="middle">llms.txt</text></g>
<g class="fd-box fd-box-solid"><rect x="90" y="276" width="260" height="48"/><text class="fd-t" x="220" y="297" text-anchor="middle">Serveur MCP</text><text class="fd-s" x="220" y="314" text-anchor="middle">api.heybrahim.com/mcp</text></g>
<text class="fd-note" x="436" y="254" text-anchor="end">à 2 clics</text>
<g class="fd-token fd-token-alert"><rect x="-5" y="-5" width="10" height="10"><animateMotion dur="5s" repeatCount="indefinite" calcMode="linear" keyPoints="0;1;1;0;0" keyTimes="0;0.25;0.35;0.6;1"><mpath href="#fd4-bounce"/></animateMotion></rect></g>
<g class="fd-token"><rect x="-5" y="-5" width="10" height="10"><animateMotion dur="5s" repeatCount="indefinite" calcMode="linear" keyPoints="0;0;1;1" keyTimes="0;0.6;0.8;1"><mpath href="#fd4-home"/></animateMotion></rect></g>
</svg>
</div>
<figcaption id="fd4-cap">Mon propre site, vérifié le 27 septembre 2026. L’URL figure sur trois pages, et la page d’accueil n’en fait pas partie.</figcaption>
</figure>

La page d’accueil, là où les agents arrivent vraiment, n’a que de petits liens en pied de page : `llms.txt`, `profile.json` et un lien intitulé « MCP » qui mène à une autre page. Aucun n’affiche l’URL, et `profile.json` ne la contient pas non plus. Le fichier qui la donne le plus clairement est justement celui que les agents sautent, d’après ses données.

```
$ curl -sI https://heybrahim.com/.well-known/ai-catalog.json | head -1
HTTP/2 404
```

La solution qu’il met en avant vise précisément cette 404. Il a présenté deux standards émergents qui s’empilent l’un sur l’autre.

Le premier standard, c’est `/.well-known/ai-catalog.json` : un seul fichier sur votre domaine qui liste tous vos points d’entrée pour agents, serveurs MCP, OpenAPI, GraphQL, A2A, peu importe. Un agent qui arrive sur votre domaine n’a pas besoin de lire votre doc pour trouver l’URL MCP.

Le catalogue suppose quand même que l’agent atteigne d’abord votre domaine, et aujourd’hui, ça passe par la recherche web. Agentic Resource Discovery (ARD) comble ce manque. C’est un standard pour les annuaires : l’agent demande « un service d’e-mail » à un registre, le registre classe ce qu’il connaît et désigne un domaine, puis le catalogue de ce domaine fait le reste. Son exemple, c’était l’annuaire de Stripe. Ora en tient un aussi, construit à partir des catalogues de 70 000 domaines scannés.

<figure class="fd-fig" aria-labelledby="fd10-cap">
<div class="fd-canvas">
<svg viewBox="0 0 440 364" role="img" aria-labelledby="fd10-title fd10-desc">
<title id="fd10-title">Deux standards, empilés</title>
<desc id="fd10-desc">Votre agent demande un service d’e-mail à un annuaire. L’annuaire, construit sur le standard Agentic Resource Discovery, classe les services et désigne un domaine. Le fichier /.well-known/ai-catalog.json de ce domaine liste ses points d’entrée pour agents : MCP, OpenAPI, GraphQL et A2A.</desc>
<defs>
<marker id="fd10-head" viewBox="0 0 8 8" refX="7" refY="4" markerWidth="8" markerHeight="8" orient="auto-start-reverse"><path class="fd-head" d="M0,0 L8,4 L0,8 Z"/></marker>
<marker id="fd10-head-c" viewBox="0 0 8 8" refX="7" refY="4" markerWidth="8" markerHeight="8" orient="auto-start-reverse"><path class="fd-head-c" d="M0,0 L8,4 L0,8 Z"/></marker>
<path id="fd10-p" d="M220,44 V286 L58,322"/>
</defs>
<g class="fd-token"><rect x="-5" y="-5" width="10" height="10"><animateMotion dur="6s" repeatCount="indefinite" calcMode="linear" keyPoints="0;0.2;0.2;0.52;0.52;1;1" keyTimes="0;0.12;0.3;0.45;0.6;0.85;1"><mpath href="#fd10-p"/></animateMotion></rect></g>
<path class="fd-line" d="M220,44 V88" marker-end="url(#fd10-head)"/>
<path class="fd-line" d="M220,136 V168" marker-end="url(#fd10-head)"/>
<path class="fd-line" d="M220,204 V238" marker-end="url(#fd10-head)"/>
<path class="fd-line fd-line-agent" d="M220,286 L58,320" marker-end="url(#fd10-head-c)"/>
<path class="fd-line fd-line-agent" d="M220,286 L166,320" marker-end="url(#fd10-head-c)"/>
<path class="fd-line fd-line-agent" d="M220,286 L274,320" marker-end="url(#fd10-head-c)"/>
<path class="fd-line fd-line-agent" d="M220,286 L382,320" marker-end="url(#fd10-head-c)"/>
<g class="fd-box fd-you"><rect x="160" y="10" width="120" height="34"/><text class="fd-t" x="220" y="32" text-anchor="middle">Votre agent</text></g>
<text class="fd-note" x="232" y="72">« Besoin d’un service mail »</text>
<text class="fd-label" x="10" y="108">ARD</text>
<text class="fd-note" x="10" y="124">annuaire</text>
<g class="fd-box"><rect x="90" y="90" width="260" height="46"/><text class="fd-t" x="220" y="110" text-anchor="middle">Un annuaire</text><text class="fd-s" x="220" y="127" text-anchor="middle">classe les services pour la tâche</text></g>
<text class="fd-note" x="232" y="158">désigne un domaine</text>
<g class="fd-box"><rect x="130" y="170" width="180" height="34"/><text class="fd-t" x="220" y="192" text-anchor="middle">service.example</text></g>
<text class="fd-label" x="10" y="258">CATALOGUE</text>
<text class="fd-note" x="10" y="274">un par domaine</text>
<g class="fd-box fd-box-solid"><rect x="120" y="240" width="300" height="46"/><text class="fd-t" x="270" y="260" text-anchor="middle">/.well-known/ai-catalog.json</text><text class="fd-s" x="270" y="277" text-anchor="middle">liste tous les points d’entrée agents</text></g>
<g class="fd-box fd-box-agent"><rect x="10" y="322" width="96" height="30"/><text class="fd-t" x="58" y="342" text-anchor="middle">MCP</text></g>
<g class="fd-box fd-box-agent"><rect x="118" y="322" width="96" height="30"/><text class="fd-t" x="166" y="342" text-anchor="middle">OpenAPI</text></g>
<g class="fd-box fd-box-agent"><rect x="226" y="322" width="96" height="30"/><text class="fd-t" x="274" y="342" text-anchor="middle">GraphQL</text></g>
<g class="fd-box fd-box-agent"><rect x="334" y="322" width="96" height="30"/><text class="fd-t" x="382" y="342" text-anchor="middle">A2A</text></g>
</svg>
</div>
<div class="fd-backers">
<p><b>ai-catalog.json</b><span>Anthropic</span><span>OpenAI</span><span>Google</span><span>MCP</span></p>
<p><b>ARD</b><span>Google</span><span>Microsoft</span><span>NVIDIA</span><span>GoDaddy</span><span>Salesforce</span></p>
</div>
<figcaption id="fd10-cap">L’annuaire trouve le domaine, le catalogue trouve les points d’entrée. Redessiné d’après la slide « Emerging standards » de Liad, avec les noms qu’elle affichait sous chaque standard.</figcaption>
</figure>

Google a annoncé la [spécification ARD](https://developers.googleblog.com/announcing-the-agentic-resource-discovery-specification/) avec des partenaires du secteur, et AWS a [écrit sur sa prise en charge](https://aws.amazon.com/blogs/machine-learning/agentic-resource-discovery-ard-an-open-specification-for-agent-discovery/).

**Mise à jour, le jour même :** j’ai corrigé ma propre 404. heybrahim.com sert désormais [`/.well-known/ard.json`](/.well-known/ard.json), le chemin qu’utilise la spécification ARD depuis la v0.91, et garde [`ai-catalog.json`](/.well-known/ai-catalog.json) sous l’ancien nom cité dans la conférence. Chaque page y renvoie avec `rel="ard"`, `robots.txt` a une ligne `Agentmap`, et le pied de page affiche enfin l’URL MCP.

## Où je me situe

Je ne pense pas que mon site disparaisse. Les gens lisent encore un portfolio. Mais j’ai construit le côté agents en devinant ce que veulent les agents, et tout l’argument de Liad, c’est d’arrêter de deviner et de les observer.

Deux de mes prochaines étapes sont déjà faites : le catalogue est publié et l’URL MCP est sur chaque page. Il reste celle par laquelle Liad commencerait : lancer de vrais parcours d’agents sur le site et voir quel chemin ils prennent.

Regardez [le passage où il fait ce pari](https://www.youtube.com/watch?v=-w6RDNBAI0E&t=17860s). Et si vous lancez votre agent sur heybrahim.com, dites-moi par quelle porte il est passé.
