Vue d’ensemble des outils
Linkly AI expose neuf outils aux assistants IA via MCP (Model Context Protocol). Le cœur en est un flux de travail progressif d’accès aux documents :list_libraries (lister les bibliothèques de connaissances), explore (vue d’ensemble des collections de documents), find_paths (localiser des chemins de dossier par mot-clé pour alimenter le path_glob de search) — ainsi que deux outils de notes : list (lister les notes) et note_save (créer / modifier une note).
search
Rechercher des documents et trouver les résultats pertinents
outline
Consulter le sommaire du document pour comprendre sa structure
grep
Trouver des motifs de texte spécifiques par correspondance regex
read
Lire le contenu du document pour obtenir des informations détaillées
list_libraries
Lister les bibliothèques de connaissances et leurs nombres de documents
explore
Vue d’ensemble des thèmes et de la structure de la collection de documents
find_paths
Localiser des chemins de dossier par mot-clé pour alimenter le
path_glob de searchlist
Lister les entrées d’un conteneur ; prend actuellement en charge
scope="notes"note_save
Créer ou modifier une note, le seul outil d’écriture
note_save, tous ces outils sont en lecture seule : ils se contentent de lire vos documents, sans jamais rien y modifier. note_save n’écrit que dans le dossier des notes et il n’existe aucun outil de suppression : supprimer une note reste une action que vous seul pouvez faire depuis l’application.
Recherche (search)
Recherche dans vos documents locaux indexés et retourne la liste des résultats les plus pertinents.Paramètres
À propos du filtrage et du tri par date :
- Lorsque l’utilisateur fournit une fenêtre temporelle explicite (« le mois dernier », « en 2024 », « ces trois derniers mois »), utilisez
modified_after/modified_before. - Lorsque l’utilisateur dit seulement « récent », « le plus récent », « le plus ancien » sans plage fixe, utilisez
time_sort=newestouoldest. - Les deux peuvent se combiner : « le plus ancien en 2024 » donne
modified_after=2024-01-01+modified_before=2024-12-31+time_sort=oldest. - Pour une date relative (« le mois dernier »), lisez d’abord l’heure UTC actuelle depuis le champ
[meta] now=...à la fin de toute réponse d’outil, puis calculez la date — voir Métadonnées de réponse ci-dessous.
Champs retournés
Chaque résultat de recherche contient les informations suivantes :Exemples d’utilisation
Sommaire (outline)
Obtient le sommaire structuré et les métadonnées d’un ou plusieurs documents, permettant de comprendre rapidement la structure du document et de localiser les sections ciblées.Paramètres
Quand utiliser le sommaire
La fonctionnalité de sommaire est optimale pour les PDF avec signets, les documents Markdown, DOCX, PowerPoint (PPTX) et EPUB. Elle est particulièrement efficace pour la lecture de documents volumineux et de livres. Le support du sommaire pour le texte brut et les PDF sans signets sera ajouté dans les itérations futures.
Exemples d’utilisation
Grep
Localise des lignes spécifiques au sein d’un seul document à l’aide d’un motif regex. Idéal pour les documents avechas_outline=false où le sommaire n’est pas disponible. Utilisez-le après search pour localiser les positions exactes de noms, dates, termes, identifiants ou tout motif, puis utilisez read avec offset pour voir le contexte complet. Fonctionne avec tous les types de documents (PDF, Markdown, DOCX, PPTX, EPUB, TXT, HTML). Pour rechercher dans plusieurs documents, appelez grep une fois par document.
Paramètres
Quand utiliser Grep vs Sommaire
Exemples d’utilisation
Lecture (read)
Lit le contenu d’un document avec positionnement par numéro de ligne et pagination, adapté à la lecture de sections spécifiques de documents longs. L’outil Read a un comportement cohérent avec celui du SDK Claude AI, garantissant des résultats optimaux avec divers modèles Agentic AI.Paramètres
Lire des documents illustrés
Dans bien des documents — les notes Markdown et la documentation technique tout particulièrement — l’information décisive se trouve dans les illustrations.read résout les références d’images apparaissant dans la plage de lignes que vous êtes en train de lire vers les documents image correspondants déjà indexés, et les joint à la fin du résultat. image_text détermine ce qui est joint :
full est soumis à un budget : 2 000 caractères au maximum par image, 20 000 caractères au total pour l’appel. Les images dépassant ce budget retombent automatiquement sur abstract, accompagnées de la marche à suivre pour les lire individuellement.
Format du contenu
L’outilRead retourne le contenu avec des numéros de ligne pour faciliter le référencement et le positionnement :
Stratégie de pagination
Pour les documents longs, il est recommandé de lire par blocs :read pour lire précisément cet intervalle.
Exemples d’utilisation
Lister les bibliothèques (list_libraries)
Liste toutes les bibliothèques de connaissances configurées par l’utilisateur, avec leurs descriptions et leurs nombres de documents.Paramètres
Aucun paramètre requis.Cas d’utilisation
- Lorsque l’utilisateur demande « quelles bibliothèques ai-je ? »
- Avant d’utiliser le paramètre
librarydanssearch, pour vérifier le nom d’une bibliothèque
Explorer (explore)
Obtient une vue d’ensemble de tous les documents indexés ou d’une bibliothèque spécifique. Retourne la distribution des types de documents, la structure des répertoires (avec le nombre de fichiers et la médiane du nombre de mots) et les mots-clés principaux (avec attribution de la source).Paramètres
Cas d’utilisation
- L’utilisateur souhaite savoir ce que contient sa base de connaissances ou sa collection de documents
- L’utilisateur n’a pas de sujet de recherche spécifique et souhaite découvrir les thèmes et directions disponibles
- L’assistant IA a besoin de comprendre l’échelle et la distribution thématique pour formuler des stratégies de recherche efficaces
search ultérieures.
Localisation de chemins (find_paths)
Effectue une correspondance approximative des mots-clés sur le champ chemin de fichier des documents indexés, agrège les correspondances au niveau du dossier et retourne les meilleurs candidats. Cet outil est positionné comme un complément desearch : lorsque l’utilisateur nomme un conteneur (« dans mes notes Notion », « dans mon dossier de papiers Dropbox ») sans en connaître le chemin sur le disque, appelez d’abord find_paths pour découvrir le chemin réel, puis transmettez-le comme path_glob à search.
Le nom réel du dossier sur le disque diffère souvent du nom utilisé par l’utilisateur (par exemple, un export peut résider sous Notion-Export-c58e430f... plutôt que simplement Notion), donc deviner directement un path_glob est fragile.
Paramètres
Champs retournés (mode JSON)
Comportement d’agrégation
- Les fichiers dont les motifs ne correspondent qu’au segment du nom de fichier (sans correspondance dans un segment de répertoire) sont silencieusement écartés — c’est un outil de « recherche de dossiers », pas de « recherche de fichiers ». Si une requête ne renvoie aucun dossier candidat alors que des fichiers correspondants existent, repassez à un appel direct à
search. - Chaque correspondance est regroupée par la position la moins profonde d’un motif dans le chemin, tronquée au prochain
/. Ainsilocal:///Users/me/Documents/Notion-Export-abc/workspace/page.mdcorrespondant àNotionest agrégé sous.../Documents/Notion-Export-abc, peu importe la profondeur du fichier.
Quand l’utiliser
- L’utilisateur nomme un conteneur avec un mot flou ou multilingue (« dans mes notes Notion », « dans mon dossier de papiers Dropbox », « dans ma sauvegarde de travail ») et vous ne connaissez pas le chemin réel
- Avant
search, pour déterminer la valeur depath_glob
Quand ne pas l’utiliser
- Requêtes purement basées sur le contenu / le sujet (« trouve mes CV », « trouve les articles IA ») — appelez
searchdirectement ; sa recherche hybride couvre déjà titre, nom de fichier, contenu et chemin - Filtrage par type de fichier uniquement (« tous les PDF ») — appelez
searchavecpath_glob="*.pdf"directement - Requêtes vagues sans intention de conteneur (« trouve les choses récentes ») — appelez
search
Exemple d’utilisation
Lister (list)
Liste les entrées d’un conteneur, sans aucune correspondance plein texte — pour retrouver du contenu par mot-clé ou par le sens, utilisezsearch. Aujourd’hui, scope ne prend en charge que notes (les fiches de notes locales).
Paramètres
Champs retournés
Chaque note comporte :doc_id (transmissible à read / grep / outline), note_id et la version du moment (ces deux-là servent de jeton de verrou optimiste lors d’une modification via note_save), title, le chemin absolu, created_at / modified_at (millisecondes Unix), tags, les informations de source, ainsi que le snippet joint par défaut.
La réponse comporte en outre un champ available_tags : les 50 tags les plus fréquents parmi l’ensemble des notes, directement réutilisables pour filtrer l’appel suivant via tags.
Le système de fichiers d’abord : une note tout juste écrite apparaît immédiatement dans la liste, mais son
doc_id vaut alors null et indexed vaut false (le nombre de mots et de lignes restent vides également) ; tout cela se complète une fois l’indexation passée. « Une note tout juste écrite figure dans la liste mais reste introuvable à la recherche » est donc un comportement normal, elle n’est pas perdue.title peut lui aussi valoir null : les notes dont le nom de fichier est généré automatiquement n’ont pas de titre exploitable ; il faut alors s’appuyer sur l’extrait, les tags et la date.Enregistrer une note (note_save)
Crée ou modifie une fiche de note Markdown locale. C’est le seul outil qui écrit, et il n’écrit que dans le dossier des notes ; les métadonnées YAML sont intégralement générées côté serveur, l’appelant n’a pas à s’en préoccuper.Paramètres
Deux règles à connaître impérativement
Le format du corps obéit à une liste blanche, on n'y écrit pas n'importe quoi
Le format du corps obéit à une liste blanche, on n'y écrit pas n'importe quoi
Cette voie n’accepte que la part de Markdown que la barre d’outils de l’interface sait produire : paragraphes et sauts de ligne, gras, barré, listes ordonnées ou à puces, texte brut.Les titres, l’italique, les citations, le code, les liens, les tableaux, les listes de tâches, les images et le HTML brut sont rejetés, avec un
NOTE_INVALID_INPUT en retour. Ce que vous écrivez vous-même dans l’interface n’est pas soumis à cette restriction.Par ailleurs, les #tag présents dans le corps sont traités comme du texte ordinaire : ils ne sont pas extraits en tant que tags — seul le paramètre tags fait foi.La modification impose une boucle de verrou optimiste (CAS)
La modification impose une boucle de verrou optimiste (CAS)
La bonne séquence est la suivante :
list(scope="notes") pour obtenirnote_idetversionread(doc_id)pour lire le corps intégral actuelnote_saveavecmode="edit",note_id,base_version(la version qui vient d’être lue), le corps complet révisé et la totalité destags
base_version est périmé (la note a été modifiée entre-temps), un NOTE_VERSION_CONFLICT est retourné, accompagné du numéro de version réel — il faut alors relire, fusionner et réessayer, surtout pas écraser aveuglément.Une note pas encore indexée a un doc_id à null : il faut alors soit attendre la fin de l’indexation, soit modifier directement la note que l’on vient de créer, avec la version retournée à la création. Ne réécrivez jamais une note entière sur la seule foi de son extrait.Métadonnées de réponse
Chaque réponse réussie d’outil contient l’heure UTC actuelle, ce qui permet aux appelants de calculer des dates relatives (« le mois dernier », « cette année », « ces 30 derniers jours ») sans dépendre de la date de coupure d’entraînement du modèle.-
Sortie Markdown : un bloc de pied de page à la fin de la réponse, formaté comme :
-
Sortie JSON : un objet
_metaau niveau supérieur :
isError: true) n’incluent pas ces métadonnées — le corps d’erreur transmet déjà la cause, et ajouter un horodatage diluerait le signal.
Lorsque l’utilisateur utilise une date relative, lisez now depuis la réponse d’outil la plus récente, calculez la date ISO 8601 correspondante, puis transmettez-la à modified_after / modified_before de search.
Exemples de flux de travail
Flux de travail complet : via CLI
L’exemple suivant illustre comment effectuer une recherche documentaire complète via le CLI :Flux de travail complet : via MCP
Lorsque l’assistant IA appelle les outils via le protocole MCP, le format des requêtes est le suivant :Questions fréquentes
Quels formats de documents sont pris en charge ?
Quels formats de documents sont pris en charge ?
Linkly AI prend actuellement en charge les formats suivants :
La transcription vocale de l’audio et de la vidéo est désactivée par défaut : ces fichiers sont bien enregistrés dans l’index et se retrouvent par leur nom, mais pour chercher « ce qui s’y dit », il faut d’abord activer Transcription audio et Transcription vidéo dans Paramètres → Index. Voir Paramètres d’indexation.
Que faire si le sommaire n'est pas disponible ?
Que faire si le sommaire n'est pas disponible ?
Si le document n’a pas de sommaire disponible (
has_outline: false), vous pouvez :- Utiliser directement l’outil
readpour parcourir le contenu du document page par page - Lire d’abord le début du document (200 lignes par défaut) pour avoir un aperçu du contenu, puis décider si vous souhaitez poursuivre la lecture
Comment traiter les documents longs ?
Comment traiter les documents longs ?
Quel est le port par défaut du service MCP ?
Quel est le port par défaut du service MCP ?
Le port par défaut est 60606. Si ce port est occupé, l’application essaie automatiquement d’autres ports. Vous pouvez vérifier le port réellement utilisé dans les paramètres de Linkly AI Desktop.
Que faire si les résultats de recherche sont imprécis ?
Que faire si les résultats de recherche sont imprécis ?
Vous pouvez essayer :
- Utiliser des mots-clés plus précis
- Utiliser des descriptions en langage naturel (en exploitant la correspondance sémantique vectorielle)
- Combiner mots-clés et synonymes, par exemple
"authentication auth login sign-in" - Utiliser
--typepour filtrer des types de documents spécifiques et affiner le champ de recherche


outline(si un sommaire est disponible)offsetetlimitdereadpour lire précisément les sections cibléesoffsetpour paginer