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

Avant de commencer

  • Un compte Claude, sur claude.ai ou l'app de bureau. L'offre gratuite est limitée à un seul connecteur personnalisé.
  • Un compte Kurra membre d'une organisation.
  • Sur Claude Team ou Enterprise, seul un propriétaire de l'organisation Claude peut ajouter Kurra : voyez l'encadré plus bas.
  1. Étape 1 : Ajoutez Kurra comme connecteur

    Dans Claude
    1. Ouvrez PersonnaliserConnecteurs.
    2. Cliquez sur + Ajouter, puis sur Ajouter un connecteur personnalisé.
    3. Dans Nom, saisissez Kurra. Dans URL, collez l'adresse du serveur :

      https://kurra.ai/api/mcp
    4. Cliquez sur Continuer. Pour Authentification, choisissez Se connecter maintenant ; pour Client OAuth, S'enregistrer automatiquement.
    5. Validez avec Ajouter.
  2. Étape 2 : Autorisez l'accès

    Dans Kurra

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

    Claude renouvelle la connexion tout seul : vous n'aurez pas à refaire cette étape, sauf si vous déconnectez Kurra.

    Autoriser l'accès

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

    Dans une conversation, ouvrez +Connecteurs et activez Kurra. Demandez ensuite : « Qu'est-ce que l'équipe a partagé ces sept derniers jours ? »

    La première fois que Claude utilise un outil de Kurra, il vous demande votre accord : Autoriser une fois pour cette fois, Toujours autoriser pour ne plus être sollicité.

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

    Dans Claude

    Dans PersonnaliserConnecteurs, ouvrez Kurra puis cliquez sur Déconnecter : Claude perd l'accès, le connecteur reste prêt à être reconnecté. Pour le retirer complètement, passez par •••Supprimer.

Votre équipe est sur Claude Team ou Enterprise

Un propriétaire de l'organisation Claude ajoute Kurra une fois pour tous : Paramètres de l'organisationConnecteursAjouterPersonnaliséWeb, avec la même adresse.

Chaque membre retrouve ensuite Kurra dans PersonnaliserConnecteurs et clique sur Connecter : chacun autorise l'accès avec son propre compte Kurra (étape 2).

Sur mobile

Ajoutez Kurra depuis claude.ai ou l'app de bureau : le connecteur apparaît ensuite dans l'app Claude sur iPhone et Android, sous +Connecteurs.

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.