Rejoindre la liste d’attente bêta

Connecter Kurra à votre client MCP

Votre veille devient un outil de votre assistant : il y ajoute des contenus et l'interroge sans quitter la conversation. La connexion se fait en OAuth — aucune clé à copier, aucun mot de passe à stocker.

L'adresse du serveur

C'est la seule information à donner à votre assistant, quel qu'il soit :

https://kurra.ai/api/mcp

Connecter votre client

Chaque procédure suit les mêmes quatre temps : ajouter Kurra, autoriser l'accès, l'utiliser, puis le retirer quand vous le souhaitez. Seuls les clients dont la connexion a été vérifiée de bout en bout ont leur procédure.

Grand public

Développeurs

L'interface de ChatGPT évolue

Le menu Apps est devenu Plugins en juillet 2026, et les anciens tutoriels qui passent par le mode développeur ne sont plus à jour. Si un libellé ne correspond plus à votre écran, cherchez l'option la plus proche : le principe ne change pas, une adresse et une authentification OAuth.

Libellés vérifiés le 8 octobre 2026.

Web uniquementTout se fait sur chatgpt.com, dans un navigateur.

Avant de commencer

  • Un compte ChatGPT, utilisé sur chatgpt.com.
  • Un compte Kurra membre d'une organisation.
  • Sur ChatGPT Business, Enterprise ou Edu, l'administrateur de l'espace doit d'abord vous y autoriser : voyez l'encadré plus bas.
  1. Étape 1 : Ajoutez Kurra comme plugin

    Dans ChatGPT
    1. Ouvrez chatgpt.com/plugins, ou ParamètresPlugins.
    2. Cliquez sur +, puis sur Ajouter un serveur MCP personnalisé.
    3. Dans Nom, saisissez Kurra ; dans Description, par exemple « La veille de mon équipe ». Dans URL, collez l'adresse du serveur :

      https://kurra.ai/api/mcp
    4. Pour Authentification, choisissez OAuth.
    5. Cochez Je comprends et je souhaite continuer, puis cliquez sur Créer.
  2. Étape 2 : Autorisez l'accès

    Dans Kurra

    ChatGPT ouvre Kurra dans une nouvelle fenêtre. Connectez-vous si besoin : l'écran Autoriser l'accès rappelle le client demandeur et les permissions. Cliquez sur Autoriser, la fenêtre vous ramène dans ChatGPT.

    De retour dans ChatGPT, terminez avec Installer.

    Autoriser l'accès

    ChatGPT souhaite accéder à votre compte Kurra.

    Permissions demandées

    • Vérifier votre identité
    • Accéder à votre adresse email
    • Rester connecté sans vous reconnecter
  3. Étape 3 : Utilisez Kurra dans une conversation

    Dans ChatGPT

    Dans une conversation, tapez @ puis choisissez Kurra, ou passez par +PluginsKurra. Demandez ensuite : « Qu'est-ce que l'équipe a partagé ces sept derniers jours ? »

  4. Étape 4 : Déconnectez ou retirez Kurra

    Dans ChatGPT

    Pour couper l'accès sans retirer le plugin, passez par ParamètresPluginsKurraComptes connectés•••Déconnecter. Pour le retirer complètement, ouvrez Kurra dans ParamètresPlugins et cliquez sur Désinstaller.

Votre espace est sur ChatGPT Business, Enterprise ou Edu

L'administrateur de l'espace de travail autorise d'abord les serveurs MCP personnalisés, dans Paramètres de l'espace de travailPermissions et rôles.

Chaque membre suit ensuite les étapes ci-dessus et autorise l'accès avec son propre compte Kurra (étape 2).

Pas encore sur mobile

Les apps ChatGPT pour iPhone et Android ne permettent pas encore d'ajouter ni d'utiliser un serveur MCP personnalisé. Passez par chatgpt.com, dans le navigateur d'un ordinateur.

Que demander à votre assistant ?

Parlez-lui normalement : il choisit lui-même l'outil Kurra qui convient. Quelques exemples, avec l'outil que chacun déclenche.

Capturer
« Ajoute cet article à la veille de l'équipe : https://exemple.com/un-article »add_content
Retrouver
« Qu'a-t-on partagé sur l'IA générative dans le service client ? »search_contents
« Qu'est-ce que l'équipe a partagé ces sept derniers jours ? »list_recent_contents
Lire
« Résume-moi les trois contenus les plus récents sur la cybersécurité. »get_content
Produire
« Propose-moi trois angles de post LinkedIn sur l'automatisation des achats. »suggest_linkedin_angles
« Quelles idées de post me suggère ma synthèse de la semaine ? »get_linkedin_ideas
NewsletterRéservé aux administrateurs de l'organisation.
« Prépare le brouillon de la newsletter avec les contenus de la semaine. »generate_newsletter_draft

Un contenu ajouté est enrichi (extraction, résumé, tags) en arrière-plan : il apparaît tout de suite, son résumé quelques instants plus tard.

Ce que le serveur voit de vous

  • Les outils s'exécutent sous votre identité, avec exactement les droits que vous avez dans l'application. Rien n'est accessible au serveur MCP que vous ne puissiez déjà voir.
  • Ils travaillent dans votre organisation active, celle affichée dans le dashboard. Changez-en et le MCP suit : elle est relue à chaque appel.
  • Certains outils exigent d'être administrateur de l'organisation — la référence ci-dessous le précise outil par outil.
  • Vous pouvez révoquer l'accès à tout moment : c'est la dernière étape de la procédure de votre client.

Les 14 outils

Contrats extraits du serveur lui-même : nom, paramètres, résultat, droits requis.

Curation (6 outils)

Alimenter la veille de votre équipe et l'interroger.

  • add_contentAjouter du contenu

    Partage une URL dans la veille de votre organisation active. Le type est auto-détecté et l'enrichissement (extraction, résumé, tags, embeddings) est asynchrone : l'outil rend la main immédiatement.

    Paramètres
    • url — string (URL) requisAdresse du contenu à partager.
    • comment — string (500 caractères max) optionnelCommentaire personnel joint au partage.
    • contentType — enum : linkedin | youtube | article | x optionnelForce le type au lieu de le laisser détecter depuis l'URL.
    Retourne
    { id, status: "pending" } — suivre l'enrichissement avec get_content_status.
    Droits requis
    Membre de l'organisation
    Codes d'erreur
    CONTENT_DUPLICATE · RATE_LIMIT · CONTENT_INSERT_FAILED
  • get_content_statusStatut d'un contenu

    État d'ingestion d'un contenu partagé (pending → processing → processed | failed).

    Paramètres
    • id — string (UUID) requisIdentifiant renvoyé par add_content.
    Retourne
    { id, status, title, tags, has_embeddings, error_details }
    Droits requis
    Membre de l'organisation
    Codes d'erreur
    CONTENT_NOT_FOUND
  • get_contentLire un ou plusieurs contenus

    Charge le détail (résumé IA, tags, dates, auteur) de 1 à 25 contenus de l'organisation active, par id — la brique « lire » de la chaîne chercher → lire → dater → proposer un angle.

    Paramètres
    • ids — tableau de string (UUID), 1 à 25 éléments requisIdentifiants des contenus à charger (trouvés via search_contents ou list_recent_contents).
    • includeText — booléen optionnel (défaut : false)Ajoute un extrait de extracted_text, tronqué à 4000 caractères.
    Retourne
    { count, items: [{ id, url, title, content_type, author, created_at, published_date, tags, status, llm_summary, llm_summary_points, llm_why_it_matters, llm_detail, extracted_text? }], notFoundIds }
    Droits requis
    Membre de l'organisation
    Codes d'erreur
    CONTENT_ORG_REQUIRED · CONTENT_GET_FAILED
  • list_recent_contentsContenus récents

    Liste les contenus partagés dans l'organisation active sur les N derniers jours, tous contributeurs confondus.

    Paramètres
    • days — entier (1-90) optionnel (défaut : 7)Profondeur de la fenêtre, en jours.
    • status — enum : pending | processing | processed | failed optionnelNe garde que les contenus dans cet état d'ingestion.
    • limit — entier (1-100) optionnel (défaut : 50)Nombre maximum de contenus renvoyés.
    • tags — tableau de string optionnelIntersection : ne garde que les contenus qui portent TOUS ces tags.
    • contentType — enum : linkedin | youtube | article | x optionnelNe garde que les contenus de ce type.
    • includeSummary — booléen optionnel (défaut : false)Ajoute llm_summary et author à chaque item (la liste reste légère par défaut).
    Retourne
    { count, items: [{ id, url, title, content_type, status, tags, created_at, llm_summary?, author? }] }
    Droits requis
    Membre de l'organisation
    Codes d'erreur
    CONTENT_ORG_REQUIRED · CONTENT_LIST_FAILED
  • search_contentsRecherche sémantique

    Retrouve les contenus proches d'une question, par le sens et non par les mots (embeddings Voyage + pgvector), dans l'organisation active — avec résumé et date pour dater ce qu'elle trouve.

    Paramètres
    • query — string (non vide) requisQuestion ou sujet recherché.
    • limit — entier (1-50) optionnel (défaut : 10)Nombre maximum de contenus renvoyés.
    • similarityThreshold — nombre (0-1) optionnel (défaut : 0.35)Seuil de similarité ; monter vers 0.5 pour ne garder que les correspondances fortes.
    • since — string (date-heure ISO 8601) optionnelBorne basse sur contents.created_at (date de partage) ; sans borne par défaut.
    • until — string (date-heure ISO 8601) optionnelBorne haute sur contents.created_at.
    Retourne
    { count, matches: [{ similarity, id, title, url, content_type, author, created_at, published_date, tags, llm_summary }] }
    Droits requis
    Membre de l'organisation — nécessite aussi que l'instance soit configurée : VOYAGE_API_KEY
    Codes d'erreur
    CONTENT_SEARCH_UNAVAILABLE · CONTENT_ORG_REQUIRED · CONTENT_EMBEDDING_FAILED · CONTENT_SEARCH_FAILED
  • suggest_linkedin_anglesProposer des angles de post LinkedIn

    Propose 2 à 3 angles de post LinkedIn (accroche + 3 points clés + sources) sur un sujet, à partir des contenus de toute l'organisation active — la brique « proposer un angle » de la chaîne, distincte du digest personnel.

    Paramètres
    • topic — string (non vide) requisSujet des angles recherchés (sert aussi de requête de recherche sémantique).
    • days — entier (1-90) optionnel (défaut : 60)Profondeur de la fenêtre de recherche, en jours.
    • contentIds — tableau de string (UUID), 25 éléments max optionnelContenus à inclure explicitement dans le corpus, en plus de la recherche sémantique.
    • count — entier (2-3) optionnel (défaut : 3)Nombre d'angles souhaité.
    Retourne
    { suggestions: [{ hook, keyPoints: [3 items], sourceContentIds }], consideredContentIds }
    Droits requis
    Membre de l'organisation — nécessite aussi que l'instance soit configurée : VOYAGE_API_KEY, ANTHROPIC_API_KEY
    Codes d'erreur
    AUTH_UNAUTHORIZED · VALIDATION_ORG_REQUIRED · VALIDATION_INVALID_INPUT · CONTENT_EMBEDDING_FAILED · CONTENT_NO_MATCH · CONTENT_SUGGESTION_FAILED

Diffusion (6 outils)

Transformer la veille en newsletter et en campagne d'emailing.

  • generate_newsletter_draftGénérer un brouillon de newsletter

    Génère un brouillon (sélection « À ne pas rater » par sujet + angle éditorial RAG) à partir des contenus de la période.

    Paramètres
    • days — entier (1-90) optionnel (défaut : 7)Fenêtre de contenus analysée, en jours.
    Retourne
    { newsletterId, topicsCount, contentsCount, hasEditorialAngle }
    Droits requis
    Administrateur de l'organisation
    Codes d'erreur
    AUTH_UNAUTHORIZED · PERMISSION_ORG_FORBIDDEN · VALIDATION_ORG_REQUIRED · NEWSLETTER_NO_CONTENT · NEWSLETTER_GENERATION_FAILED
  • regenerate_editorial_angleRégénérer l'angle éditorial

    Recalcule (RAG + LLM) la seule section « angle éditorial » d'un brouillon existant.

    Paramètres
    • newsletterId — string (UUID) requisBrouillon dont l'angle est recalculé.
    Retourne
    { sectionId, title, body, sourceContentIds, model, query }
    Droits requis
    Administrateur de l'organisation
    Codes d'erreur
    AUTH_UNAUTHORIZED · PERMISSION_ORG_FORBIDDEN · VALIDATION_NOT_FOUND
  • get_newsletterRelire une newsletter

    Charge une newsletter et ses sections pour relecture. Sans identifiant, prend le dernier brouillon de l'organisation active. Un membre ne voit que les numéros déjà envoyés ; les brouillons sont réservés aux administrateurs de l'organisation.

    Paramètres
    • id — string (UUID) optionnelNewsletter à relire ; à défaut, le dernier brouillon.
    Retourne
    { newsletter, sections: [...], contents: [...] }
    Droits requis
    Membre de l'organisation
    Codes d'erreur
    VALIDATION_ORG_REQUIRED · NEWSLETTER_LIST_FAILED · NEWSLETTER_NOT_FOUND
  • schedule_newsletterPlanifier l'envoi

    Passe un brouillon en « planifié » à la date fournie ; l'envoi réel est déclenché par pg_cron.

    Paramètres
    • newsletterId — string (UUID) requisBrouillon à planifier.
    • scheduledAt — string (date-heure ISO 8601) requisDate d'envoi souhaitée, par exemple 2026-09-01T08:00:00Z.
    Retourne
    { id, status: "scheduled", scheduled_at }
    Droits requis
    Administrateur de l'organisation
    Codes d'erreur
    NEWSLETTER_SCHEDULE_FAILED
  • sync_subscribers_to_brevoSynchroniser les abonnés vers Brevo

    Recopie les abonnés confirmés de l'organisation dans la liste Brevo cible (idempotent). Supabase reste la source de vérité de l'opt-in.

    Paramètres
    • listId — entier positif optionnelListe Brevo visée ; à défaut, la valeur de BREVO_LIST_ID.
    Retourne
    { listId, submitted, processId } — l'import Brevo est asynchrone.
    Droits requis
    Administrateur de l'organisation — nécessite aussi que l'instance soit configurée : BREVO_API_KEY, BREVO_LIST_ID
    Codes d'erreur
    BREVO_NOT_CONFIGURED · BREVO_LIST_MISSING · SUBSCRIBER_LIST_FAILED · BREVO_IMPORT_FAILED
  • create_brevo_campaignCréer une campagne Brevo (brouillon)

    Rend le HTML de la newsletter puis crée une campagne Brevo en brouillon. N'envoie jamais : la relecture et l'envoi restent manuels dans Brevo.

    Paramètres
    • newsletterId — string (UUID) requisNewsletter à mettre en campagne.
    • listId — entier positif optionnelListe Brevo visée ; à défaut, la valeur de BREVO_LIST_ID.
    • scheduledAt — string (date-heure ISO 8601) optionnelDate de programmation posée sur la campagne Brevo.
    Retourne
    { campaignId, status: "draft", listId, brevoDashboardUrl }
    Droits requis
    Administrateur de l'organisation — nécessite aussi que l'instance soit configurée : BREVO_API_KEY, BREVO_LIST_ID, NEWSLETTER_FROM_EMAIL
    Codes d'erreur
    BREVO_NOT_CONFIGURED · BREVO_LIST_MISSING · BREVO_SENDER_MISSING · NEWSLETTER_RENDER_EMPTY · BREVO_CAMPAIGN_FAILED

Contributeur (2 outils)

Votre activité personnelle et les angles de publication qui en découlent.

  • generate_digestGénérer un digest

    Produit la synthèse personnelle d'un contributeur (statistiques, thèmes, angles LinkedIn). Un administrateur d'organisation la génère pour tous les membres, un membre pour lui seul.

    Paramètres
    • type — enum : daily | weekly optionnel (défaut : daily)Périodicité du digest.
    • periodStart — string (date-heure ISO 8601) optionnelDébut de période ; sans bornes, la période est calculée en Europe/Paris.
    • periodEnd — string (date-heure ISO 8601) optionnelFin de période.
    Retourne
    { digestType, periodStart, periodEnd, usersProcessed, usersSkipped, usersFailed, digests, orgsProcessed }
    Droits requis
    Membre de l'organisation
    Codes d'erreur
    AUTH_UNAUTHORIZED · VALIDATION_ORG_REQUIRED
  • get_linkedin_ideasIdées de post LinkedIn

    Relit les angles LinkedIn (accroche, points clés, sources) du dernier digest de l'utilisateur connecté, dans l'organisation active.

    Paramètres
    • type — enum : daily | weekly optionnelRestreint au dernier digest de cette périodicité.
    Retourne
    { digestId, digestType, period, suggestionsCount, suggestions }
    Droits requis
    Membre de l'organisation
    Codes d'erreur
    VALIDATION_ORG_REQUIRED · DIGEST_READ_FAILED · DIGEST_NOT_FOUND

Si ça ne marche pas

Votre assistant ne propose pas de vous connecter à Kurra
Vérifiez que l'adresse saisie est exactement https://kurra.ai/api/mcp, puis reprenez l'étape « Autorisez l'accès » de votre client. Si votre client n'a pas d'onglet, vérifiez qu'il remplit les exigences de l'onglet « Autre client MCP ».
Les outils répondent « non autorisé » après un moment
La connexion a expiré sans pouvoir se renouveler. Reconnectez Kurra en reprenant l'étape « Autorisez l'accès » de votre client.
« Autorisation impossible » au moment d'autoriser l'accès
Votre client rejoue un enregistrement que Kurra ne connaît plus — c'est le cas après une restauration de sauvegarde ou un changement d'instance. Se reconnecter ne suffit pas : retirez Kurra de votre client (dernière étape de sa procédure), puis ajoutez-le de nouveau.
CONTENT_ORG_REQUIRED ou VALIDATION_ORG_REQUIRED
Votre compte n'a pas d'organisation active. Ouvrez le dashboard et sélectionnez une organisation, puis relancez l'outil.
CONTENT_SEARCH_UNAVAILABLE
La recherche sémantique n'est pas configurée sur cette instance. Les autres outils de curation restent utilisables.
BREVO_NOT_CONFIGURED ou BREVO_LIST_MISSING
Les outils de campagne exigent une configuration d'emailing côté instance. Voyez avec l'administrateur de votre espace.
RATE_LIMIT
Votre organisation a atteint son plafond mensuel d'ingestion. Les ajouts reprennent au début du mois suivant.
CONTENT_DUPLICATE
L'URL est déjà dans la veille de l'organisation. C'est voulu : un contenu n'y entre qu'une fois.