Référence des outils
Chaque outil du serveur MCP de Teddit, avec ses paramètres et ce qui est renvoyé. Il y a 30 outils, une ressource et deux modèles de prompt.
Comment les outils se comportent
- Les résultats sont en JSON, renvoyés en texte.
render_chartrenvoie aussi une image. Les dates sont en ISO 8601, en UTC. - Les sites s’appellent des projets. Presque chaque outil prend
projectId, un nombre obtenu aveclist_projects. Les prompts, les concurrents et les analyses ont aussi des identifiants numériques. - Les assistants ont des clés :
openai(ChatGPT),anthropic(Claude),perplexity,gemini,google_aio(AI Overviews),google_ai_mode(AI Mode). - Les rapports décrivent l’état actuel : la dernière réponse par prompt et par assistant, comme expliqué sous Indicateurs et statuts. Dans le JSON, « cité » est
mentioned, « lié » estownCited, votre place estbrandRank, etvisibilityest le score de visibilité. - Les erreurs reviennent comme un résultat d’outil marqué en erreur, avec le texte
Error: …et le même message que l’application afficherait.
L’étiquette à côté de chaque outil est l’accès de clé le plus bas qui peut l’appeler :
| Étiquette | Accès de la clé | Rôle derrière |
|---|---|---|
| Lecture | Lecture, Lecture + édition, Lecture + analyse | viewer et au-dessus |
| Lecture + édition | Lecture + édition, Lecture + analyse | member et au-dessus |
| Lecture + analyse | Lecture + analyse | admin |
Espace de travail et sites
whoami Lecture
Sans paramètres. Renvoie au nom de qui la clé agit : kind (token), tokenName, user (la personne qui a créé la clé), org (l’espace de travail : id, name, plan) et role (viewer, member ou admin).
list_projects Lecture
Sans paramètres. Renvoie l’espace de travail, ses limits (sites, prompts par site, analyses par mois et analyses utilisées ce mois-ci), les connectedAssistants, et une entrée par site : id, name, domain, industry, language, location, les nombres de prompts (total, active, draft), le nombre de concurrents, lastAnsweredAt, scanRunning, les stats actuelles (réponses, mentionRate, citationRate, promptCoverage, avgRank, visibility, décomptes de ton), les quatre premières marques par shareOfVoice, et nextSteps : ce qui manque encore dans la configuration du site.
list_providers Lecture
Sans paramètres. Renvoie les six assistants avec key, label, le model en usage, modelOptions, et si l’assistant est enabled.
create_project Lecture + analyse
Commence à suivre un site. Refusé quand le nombre de sites de l’espace de travail est épuisé, ou quand l’adresse n’est pas un domaine.
name(texte, obligatoire) : le nom de marque tel qu’il apparaît dans les réponses.url(texte, obligatoire) : le site, par exemplebrightloop.example.industry(texte).brandTerms(liste de textes, jusqu’à 50) : d’autres orthographes qui désignent toujours la marque.competitors(liste, jusqu’à 50) : des objets avecnameet undomainoptionnel.language(texte) : la langue dans laquelle les réponses sont demandées. Par défautEnglish.location(texte) : où se trouve le client. Par défautUnited States.
Renvoie le nouveau site.
update_project Lecture + édition
Change un site. Paramètres : projectId (obligatoire) et n’importe lequel de name, industry, brandTerms, language, location, scanFrequencyDays (1 à 365, l’intervalle entre les analyses planifiées).
Renvoie project et reanalysis. Quand le nom ou les termes de marque changent, chaque réponse stockée est relue immédiatement et reanalysis dit combien de réponses ont été lues et combien citent la marque avant et après. Aucun assistant n’est appelé pour cela.
Rapports
get_dashboard Lecture
Le rapport hebdomadaire d’un site, les données derrière le Tableau de bord.
projectId(obligatoire).week(YYYY-MM-DD) : n’importe quelle date dans la semaine voulue. Omis, la dernière semaine.
Les parties principales du résultat :
nowetprevious: décomptes et parts pour la semaine et la semaine précédente (answers,mentioned,mentionRate,ownCited,citationRate,promptCoverage,avgRank,visibility, décomptes de ton).verdict: un titre et un résumé d’un paragraphe de la semaine.leaderboard: vous et chaque concurrent suivi avec les réponses où il est cité, la part de voix et l’évolution.shareOfVoice,sources(les cinq domaines les plus cités, les citations de vos pages),assistants(une ligne par assistant).changes:gainedetlost(les prompts où un assistant a commencé ou cessé de vous citer, au plus 50 chacun), etlinkGainedetlinkLostpour les liens.categories(chiffres par catégorie),activity(les analyses de la semaine, réponses collectées, dépenses) etactions(jusqu’à trois prochaines étapes suggérées).
Avant la première analyse, il renvoie un court texte disant qu’il n’y a rien à rapporter.
get_trends Lecture
Semaine après semaine pour un site : les dix dernières semaines.
projectId(obligatoire).limit(1 à 200, par défaut 25) : le nombre maximal de prompts à renvoyer dans chaque liste.
Renvoie weeks ; weekByWeek (par semaine : réponses, mentionRate, citationRate, promptCoverage et visibility, chacun avec son évolution) ; wonLost (prompts gagnés et perdus par semaine) ; topics (par catégorie, la part de ses prompts qui vous citent, par semaine) ; topPrompts (les prompts avec le plus haut score de visibilité : latest est le score, change1w et change4w son évolution sur une et quatre semaines) ; et stability avec trois listes et leurs counts :
| Liste | Un prompt y figure quand |
|---|---|
held | au moins un assistant vous a cité dans chacune des quatre dernières semaines. |
lost | vous avez été cité dans une semaine antérieure et ne l’avez pas été depuis deux semaines ou plus. |
volatile | il n’est ni tenu ni perdu, et il a basculé entre cité et non cité au moins deux fois. |
Prompts
list_prompts Lecture
Les prompts suivis d’un site avec le verdict actuel de chaque assistant.
projectId(obligatoire).q: recherche de texte dans le prompt.category: un nom de catégorie.status:draft,activeoupaused.verdict:named,lost(un concurrent suivi est cité, et vous n’êtes ni cité ni lié),cited(lié mais pas cité),missing(ni l’un ni l’autre) oufailed. Les règles exactes sont celles du filtre Résultat.competitor: le nom d’un concurrent suivi qu’une réponse actuelle cite.stability:held,volatileoulost, tels que définis sousget_trends.scanned:yesounever.sort:created(par défaut),text,category,rankouscanned.dir:ascoudesc.page(à partir de 1) etperPage(5 à 200, par défaut 20).
Renvoie total, page, lastPage, engines (les assistants qui ont répondu), facets (les catégories, sources et concurrents par lesquels filtrer) et prompts. Chaque prompt a id, text, category, status, intent, source, bestRank, lastScanAt, stability et verdicts : par assistant, l’un de named first, named, linked, not named, not named, failed.
get_prompt Lecture
Un prompt en entier, avec la réponse d’un assistant mot pour mot. La réponse porte surface (app, api ou google : d’où elle a été lue, voir D’où vient une réponse) et askedFrom (pays, langue, recherche web).citedInsteadOfYou liste, sur les dernières réponses, les sites tiers cités là où un concurrent est cité et pas vous, avec les rivaux et les assistants à côté de chacun.
projectId,promptId(obligatoires).engine: l’assistant dont inclure la réponse. Omis, le premier qui a répondu.
Renvoie prompt ; verdicts par assistant (mentioned, brandRank, ownCited, sentiment, error, scannedAt) ; heatmap (par assistant et par semaine, un niveau de 0 à 3 : non visible, lié seulement, cité, cité en premier) ; et answer : provider, model, scannedAt, les verdicts, howDescribed (la phrase qui vous décrit), le text complet, competitorsNamed, searches (les recherches web effectuées par l’assistant, quand il les divulgue) et sources. Les sources viennent en quatre groupes : own (votre site), opportunity (pages tierces), competitor (sites des concurrents) et reference (documentation et sites officiels), chaque page avec son url, son kind et son citedTimes.
add_prompts Lecture + édition
Ajoute des prompts à un site.
projectId(obligatoire).prompts(liste de 1 à 200, obligatoire). Chaque élément :text(3 à 500 caractères, obligatoire),category,intent(informational,commercial,transactional,navigational; par défaut informational),funnel(awareness,consideration,decision; par défaut awareness),status(par défautactive).
Renvoie added (un décompte) et failed : les textes qui n’ont pas été ajoutés, chacun avec la raison. Un texte déjà suivi sur le site, et tout ce qui dépasse la limite de prompts du site, finit là.
update_prompt Lecture + édition
Modifie un prompt. Paramètres : projectId, promptId (obligatoires) et n’importe lequel de text, category, intent, funnel, status. Les réponses collectées restent avec le prompt ; un nouveau texte change ce que les analyses suivantes demandent. category remplace toutes les catégories du prompt par celle-là. Renvoie le prompt.
bulk_update_prompts Lecture + édition
Change plusieurs prompts à la fois. Paramètres : projectId, ids (1 à 5000 identifiants de prompts, obligatoire) et un ou plusieurs parmi status, category (les classe sous cette seule catégorie), addCategory (ajoute une catégorie à celles que chaque prompt a déjà), delete (true supprime les prompts avec leurs réponses et ne peut pas être annulé). Renvoie ok.
import_queries Lecture + édition
Importe une liste de prompts ou de requêtes de recherche en texte, au format décrit sous Importer des prompts.
projectId(obligatoire).contents(texte, obligatoire) : les lignes du fichier.status:draft(par défaut) ouactive.dryRun(true ou false) : compter seulement ce qui se passerait.
Renvoie rows, created, updated (déjà suivis ; leurs catégories sont remplacées quand la ligne en nomme), skipped et categories (lignes par catégorie).
rewrite_queries Lecture + analyse
Réécrit les requêtes de recherche importées (« email automation pricing ») en questions complètes, avec un modèle d’IA. Ce n’est pas facturé, mais exige un solde supérieur à zéro, et peut être appelé jusqu’à 10 fois par heure. Seuls les prompts importés dont le texte est encore la requête d’origine sont touchés ; l’original reste stocké comme mot-clé du prompt. Paramètres : projectId (obligatoire), category (limiter à une catégorie), dryRun (montrer les réécritures sans enregistrer). Renvoie pending, written, skipped et pairs : chaque original avec sa réécriture.
Concurrents et pages
list_competitors Lecture
Paramètre : projectId. Renvoie competitors (id, name, domain, aliases) ; answersCollected ; ownNamedIn et namedIn (dans combien de réponses actuelles vous et chaque concurrent êtes cités) ; board (pour vous et chaque marque suivie, la part des réponses qui la citent, au total et par assistant) ; et suggestions : des noms non suivis qui apparaissent dans au moins trois réponses des 28 derniers jours.
add_competitor Lecture + édition
Paramètres : projectId, name (obligatoire), domain, aliases (jusqu’à 30 autres orthographes). Les réponses stockées sont relues immédiatement pour la nouvelle marque, sans appeler aucun assistant. Renvoie competitor et reanalysis.
update_competitor Lecture + édition
Paramètres : projectId, competitorId (tous deux obligatoires), name, domain, aliases. Renvoie competitor et reanalysis.
Seul ce que vous envoyez change. Une valeur omise garde ce qui est stocké ; aliases remplace toute la liste ; domain: null retire le domaine.
remove_competitor Lecture + édition
Paramètres : projectId, competitorId. La marque cesse d’être suivie et les réponses stockées sont relues sans elle. Les réponses elles-mêmes sont conservées.
get_competitor_report Lecture
Paramètres : projectId, competitorId. Un concurrent face à vous : des chiffres appariés avec leurs évolutions (tiles), par assistant (assistants), par catégorie (topics), les prompts où seul lui est cité, les deux, ou seulement vous (prompts), les pages de son site que les assistants citent (pages), et les sites tiers cités dans les réponses qui le citent et pas vous (sources : domaine, type, réponses, prompts, assistants). Avant la première analyse, il renvoie empty: true.
list_pages Lecture
Les pages de votre site, lues depuis son sitemap, et si une réponse actuelle pointe vers chacune. Le sitemap est lu quand le site est ajouté puis chaque semaine ; import_sitemap le lit maintenant.
projectId(obligatoire).shown:yespour les pages vers lesquelles une réponse actuelle pointe,nopour le reste.q: recherche dans l’adresse et le titre.page,perPage(5 à 200, par défaut 50).
Renvoie items (id, url, title, path, section, shownBy : les assistants qui pointent vers elle, prompts : combien de prompts y mènent), total, siteTotal, shown et sections.
get_crawler_access Lecture
Ce que votre robots.txt laisse lire à chaque robot IA. Paramètres : projectId (obligatoire), check (true relit d’abord le robots.txt et le llms.txt ; exige une clé Lecture + édition).
Renvoie checkedAt, robots (status : found, missing ou unreachable ; url, httpStatus, error), llmsTxt (present, url), crawlers (chacun avec token, operator, purpose, access : allowed, partial, blocked ou unknown, la line décisive et was quand il a changé) et history. Voir Accès des robots IA.
list_search_queries Lecture
Les recherches web effectuées par les assistants en répondant aux prompts actifs du site, à partir de la dernière réponse par prompt et par assistant, les plus fréquentes en premier (jusqu’à 500). Paramètre : projectId.
Chaque élément : query, answers (les réponses qui l’ont effectuée), named (parmi elles, celles qui vous ont cité), providers, prompts (id, text) et tracked (un prompt avec exactement ce texte existe).
import_sitemap Lecture + édition
Paramètre : projectId. Lit le sitemap du site maintenant (/sitemap.xml et les sitemaps nommés par le robots.txt, en suivant un index de sitemaps) et ajoute chaque page de votre propre domaine pas encore listée, jusqu’à 5 000 adresses. Renvoie seen et added. Échoue avec un message quand aucune page n’y est trouvée.
Analyses
get_scan_options Lecture
Paramètre : projectId. Ce avec quoi une analyse peut être configurée : engines (les assistants connectés), models (par assistant : le modèle par défaut et les autres options, chacune avec un label, un costPerAnswer estimé, une note et, quand elle ne peut pas être choisie, la raison dans unavailable ; pour ChatGPT et Gemini, les options incluent les réponses de l’application chatgpt-app / gemini-app (rapide, immédiat) et chatgpt-app-queue / gemini-app-queue (lent et moins cher, quelques minutes) : la réponse telle que l’application l’affiche), activePrompts, categories (prompts actifs par catégorie), scansThisMonth et scansPerMonth (la limite de l’espace de travail), et spentThisMonth (le coût des analyses du site ce mois civil).
estimate_scan Lecture
Ce qu’une analyse coûterait, avant qu’elle tourne. Prend les mêmes choix que start_scan :
projectId(obligatoire).providers(liste de clés d’assistant) : quels assistants interroger. Omis, chaque assistant connecté.promptIds(liste d’identifiants) : un ensemble choisi à la main. Omis, chaque prompt actif. Les prompts qui ne sont pas actifs sont ignorés.category: analyser une seule catégorie.sample(nombre) : analyser seulement ce nombre de prompts, tirés au hasard.repeats(1–5) : poser chaque question ce nombre de fois à chaque assistant ; les réponses, et le prix, suivent (voir Plusieurs réponses à une question).models(objet) : clé d’assistant vers modèle, par exemple{"openai": "gpt-5.4-mini"}. Le modèle doit être l’une des options de cet assistant dansget_scan_options.
Renvoie prompts, answers, cost (dollars américains) et formatted. Ce que le chiffre comprend : Estimation du coût d’une analyse.
start_scan Lecture + analyse
Lance une analyse. Paramètres : tout ce que prend estimate_scan, plus budgetUsd (arrêter l’analyse dès qu’elle a coûté ce montant ; 0 ou omis signifie le double de son estimation) et label (jusqu’à 60 caractères). Renvoie l’analyse : id, status, providers, total, completed, failed, costUsd, budgetUsd, startedAt.
L’appel revient dès que l’analyse est mise en file ; suivez-la avec get_live_scan. Une analyse est refusée, avec la raison comme erreur, quand une autre analyse du site est en cours, qu’aucun prompt actif ne correspond, qu’un nom de modèle est inconnu, que le solde ne couvre pas l’analyse, que le site a atteint son plafond mensuel, ou que les analyses du mois de l’espace de travail sont épuisées.
get_live_scan Lecture
Paramètre : projectId. Renvoie run : null quand rien ne tourne, sinon l’analyse avec progress (elapsed, lastAnswer, secondes perAnswer, eta) et stalled (true quand des réponses sont en file et qu’aucune n’est arrivée après 20 secondes).
cancel_scan Lecture + analyse
Paramètres : projectId, runId. Arrête une analyse en cours. Les réponses encore en file sont abandonnées ; une réponse déjà en route peut encore arriver. Renvoie cancelled : false quand l’analyse était déjà terminée.
list_scans Lecture
Paramètre : projectId. Les 30 dernières analyses du site, les plus récentes en premier, chacune avec son statut, ses assistants, ses modèles, ses nombres de réponses et costUsd. Statuts : queued, running, cancelling, cancelled, done, failed.
Graphiques
render_chart Lecture
Dessine un graphique et le renvoie en image, suivi des valeurs tracées en texte.
Demandez l’un des graphiques propres au site avec projectId et chart :
chart | Montre |
|---|---|
report.assistants.mentionRate | La part des réponses qui vous citent, une courbe par assistant, dix semaines. |
report.assistants.citationRate | La part des réponses qui pointent vers votre site, une courbe par assistant. |
report.assistants.visibility | Le score de visibilité (0 à 100), une courbe par assistant. |
report.competitors | La part des réponses qui citent chaque marque, cette semaine face à la précédente. |
report.changes | Sur combien de prompts chaque assistant a commencé et cessé de vous citer. |
trends.rates | Les réponses qui vous citent et pointent vers vous, semaine après semaine. |
trends.promptCoverage | La part des prompts où vous êtes cité, semaine après semaine. |
trends.visibility | Le score de visibilité du site, semaine après semaine. |
trends.wonLost | Les prompts gagnés et perdus par semaine. |
competitors.trend | Vous et les marques suivies dans le temps. |
competitors.headToHead | Par concurrent, les prompts où un seul de vous deux est cité. |
competitor.trend | Vous face à un concurrent. Exige competitorId. |
Ou dessinez vos propres données avec custom :
{
"custom": {
"type": "bar",
"labels": ["Brightloop", "Mailora", "Quillsend"],
"series": [{ "label": "Named in", "points": [12, 20, 16] }],
"suffix": " answers",
"horizontal": true
},
"title": "Answers naming each brand"
}custom.type:lineoubar.labelsetseriessont obligatoires ;suffix,horizontaletstackedsont optionnels.week(YYYY-MM-DD) : pour les graphiquesreport.*, une semaine passée.title(jusqu’à 120 caractères),width(300 à 2000, par défaut 900),height(200 à 1500),dark(true pour un fond sombre).
Ressource et modèles de prompt
Les clients qui prennent en charge les ressources et les prompts MCP voient aussi :
| Nom | Type | Ce que c’est |
|---|---|---|
teddit://projects | Ressource | Les sites de l’espace de travail avec leurs chiffres actuels, en JSON. |
weekly_review | Prompt | Prend projectId. Demande à votre IA de faire le bilan de la semaine du site : ce qui a bougé, la raison probable, trois actions, et un graphique. Il utilise get_dashboard, get_trends, list_prompts et render_chart. |
grow_prompt_set | Prompt | Prend projectId et en option count (par défaut 10). Demande à votre IA de proposer de nouvelles questions pour les catégories les plus faibles, de vous les montrer, et de les ajouter en brouillons avec add_prompts une fois que vous êtes d’accord. |
Les modèles ne font que remettre une instruction toute prête à votre IA. Les propositions et le bilan sont écrits par votre IA, pas par Teddit.
Chaque outil sauf render_chart a des endpoints REST qui renvoient les mêmes données ; voir Endpoints.