gpsem
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GPSEM_API_URL | No | Défaut https://app.gpsem.io/api/v1/external | https://app.gpsem.io/api/v1/external |
| GPSEM_SITE_ID | No | Site par défaut (ID encodé) : plus besoin de préciser siteId | |
| GPSEM_API_TOKEN | Yes | Token gpsem_… de l'entreprise | |
| GPSEM_MAX_CHARS | No | Taille maximale d'une réponse transmise à l'assistant (défaut 60 000 caractères) | 60000 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| getMeA | Vérifier le token — Retourne l'entreprise liée au token, l'abonnement et le quota de sites. — (GET /me) |
| getEntrepriseA | Détail entreprise — L'ID doit correspondre à l'entreprise du token. — (GET /entreprises/{entrepriseId}) |
| updateCompanyInfoA | Modifier les coordonnées de l'entreprise — Champs de getCompanyInfo, tous facultatifs. — (PATCH /entreprises/{entrepriseId}) |
| listSitesA | Lister les sites — Retourne tous les sites de l'entreprise avec ID encodé et URL. — (GET /entreprises/{entrepriseId}/sites) |
| createSiteA | Créer un site — Crée un site si l'abonnement actif le permet (quota non atteint, voir subscription.can_add_site dans GET /me) ; 402 sinon. Renvoie keycms, la clé à saisir dans le plugin CMS pour connecter le site. — (POST /entreprises/{entrepriseId}/sites) |
| getSiteB | Détail d'un site — (GET /sites/{siteId}) |
| getSiteStatsA | Statistiques home du site — Pages publiées, planifiées, taux d'indexation (aligné sur le dashboard GPSEM). — (GET /sites/{siteId}/stats) |
| getHistoriqueCodesA | Catalogue des codes d'historique — À lire avant d'écrire dans l'historique : choisir le code le plus précis (ex. 300-06-003 liens internes ajoutés, 300-06-006 données structurées, 300-07-004 contenu actualisé). Sans code adapté, prendre le code générique de la cible (generic_codes : 100-09-001 site, 300-09-001 page, 310-09-001 catégorie, 320-09-001 archive) et décrire la modification. — (GET /historique/codes) |
| getSiteHistoriqueA | Historique d'un site — Événements du plus récent au plus ancien. Les crawls Google (700-01-003) sont exclus sauf filtre explicite sur ce code. — (GET /sites/{siteId}/historique) |
| addSiteHistoriqueA | Ajouter un événement à l'historique — Pour signaler une modification faite hors de GPSEM (refonte, robots.txt, campagne de liens, contenu retravaillé…). Familles autorisées : 100, 300, 310, 320. — (POST /sites/{siteId}/historique) |
| listPagesB | Lister les pages — Pages du site avec leurs principaux champs SEO et indicateurs (clics, impressions, indexation, liens internes). — (GET /sites/{siteId}/pages) |
| createPageA | Créer une page — Crée une page dans GPSEM (brouillon par défaut) ; push_to_cms=true l'envoie aussitôt au CMS. Inscrit dans l'historique. — (POST /sites/{siteId}/pages) |
| getPageA | Fiche complète d'une page — Champs SEO, catégories, mot-clé, indexation, scores des 4 dernières semaines (click rank, visitor rank, qualité, risque), 20 derniers événements de l'historique, problèmes Screaming Frog. pageId = « url » avec ?url= pour chercher par URL. — (GET /sites/{siteId}/pages/{pageId}) |
| updatePageA | Modifier une page — Modification partielle ; chaque changement est inscrit dans l'historique (statut, titre, contenu, balise title 300-02-004, meta description 300-02-005, H1 300-02-006, slug 300-02-007, catégories, mot-clé, importance). push_to_cms=true envoie ensuite la page au CMS. — (PATCH /sites/{siteId}/pages/{pageId}) |
| listCategoriesA | Lister les catégories — Catégories (taxonomies) avec leur nombre de pages. — (GET /sites/{siteId}/categories) |
| listArchivesA | Lister les archives (CPT) — Types de contenu / archives du site : slug, exclusion de l'import, pages publiées. L'ID sert de cpt_id dans l'historique. — (GET /sites/{siteId}/archives) |
| pushPageToCmsA | Envoyer une page au CMS — Crée ou met à jour l'article dans le CMS (WordPress, plugin GPSEM) ; inscrit 300-05-001 dans l'historique. — (POST /sites/{siteId}/pages/{pageId}/envoyer-cms) |
| pullPageFromCmsB | Réimporter une page depuis le CMS — Écrase la version GPSEM par celle du CMS (titre, contenu, balises, statut, catégories) ; inscrit 300-05-002. — (POST /sites/{siteId}/pages/{pageId}/importer-cms) |
| syncSiteA | Synchroniser tout le site — En tâche de fond : import = importer tous les contenus du CMS dans GPSEM ; push = envoyer au CMS toutes les pages suivies. — (POST /sites/{siteId}/synchronisation) |
| getMybacklinkStatusA | État MyBack.link du site — Achat via l'API autorisé ou non, plafond mensuel, dépense du mois et reste, nombre maximal d'articles par commande, crédit, coût des options, thématiques du site, ancres déjà utilisées. À lire avant toute commande. — (GET /sites/{siteId}/backlinks/mybacklink) |
| listBacklinkOrdersA | Historique des commandes de backlinks — Commandes MyBack.link du site, de la plus récente à la plus ancienne. — (GET /sites/{siteId}/backlinks/commandes) |
| orderBacklinksA | Commander des backlinks (MyBack.link) — ACHAT RÉEL débité sur le crédit MyBack.link : montrer à l'utilisateur les URL, mots-clés, nombre d'articles et options, et attendre son accord explicite avant d'appeler. Un article par entrée de urls. Refusé (403 purchase_refused) si l'achat via l'API est désactivé ou si un plafond de l'entreprise est atteint. Inscrit la commande dans l'historique (100-04-001, 300-08-001). — (POST /sites/{siteId}/backlinks/commandes) |
| getCompanyInfoA | Coordonnées de l'entreprise — Nom, type (1 entreprise, 2 particulier), adresse, pays (ISO 2 lettres), n° de TVA, téléphone, e-mail, site web. — (GET /entreprises/{entrepriseId}/informations) |
| getSiteSettingsB | Paramètres du site — Description, secteur, positionnement, objectif (1 ventes, 2 trafic, 3 services), type (1 vitrine, 2 e-commerce, 3 actualité), liens internes par page, longueur minimale, tests d'indexation, CMS. — (GET /sites/{siteId}/parametres) |
| updateSiteSettingsA | Modifier les paramètres du site — Champs de getSiteSettings, tous facultatifs. — (PATCH /sites/{siteId}/parametres) |
| getLegalNoticeA | Mentions légales du site — Éditeur (raison sociale, forme juridique, capital, SIRET, RCS, NAF, TVA, adresse), directeur de la publication, hébergeur, support, crédits, RGPD (DPO, finalités, bases légales, durées, destinataires, transferts hors UE), CGV, médiation. — (GET /sites/{siteId}/mentions-legales) |
| updateLegalNoticeA | Modifier les mentions légales — Champs de getLegalNotice, tous facultatifs. — (PATCH /sites/{siteId}/mentions-legales) |
| listAuditSectionsB | Catalogue des sections d'audit — Clés des sections disponibles (maillage_interne, scores_pages, indexation_google, sf_crawl_indexation…), chapitre et questions couvertes. — (GET /audit/sections) |
| getAuditSectionA | Collecter une section d'audit — Calcule la section maintenant sur les données à jour : résumé, indicateurs, constats, actions priorisées (1 = urgente) et données détaillées. — (GET /sites/{siteId}/audit/sections/{cle}) |
| listAuditReportsA | Lister les rapports d'audit — Rapports du site, du plus récent au plus ancien, avec liens vers l'aperçu et le PDF. — (GET /sites/{siteId}/audit/rapports) |
| createAuditReportA | Générer l'audit complet — Crée un rapport avec toutes les sections disponibles ; la collecte prend quelques minutes (statut pending puis ready). — (POST /sites/{siteId}/audit/rapports) |
| getAuditReportB | Lire un rapport d'audit — Scores (global, chapitres), synthèse, plan d'action priorisé avec état de suivi, sections (sans données brutes sauf detail=full). — (GET /sites/{siteId}/audit/rapports/{id}) |
| listAuditActionsA | Plan d'action du dernier audit — Actions du dernier rapport collecté, triées par priorité puis gain estimé, avec leur clé stable et leur état de suivi. — (GET /sites/{siteId}/audit/actions) |
| updateAuditActionA | Mettre à jour l'état d'une action — État d'une action du plan (clé de GET …/audit/actions). « fait » inscrit l'action dans l'historique du site (100-09-002). — (PATCH /sites/{siteId}/audit/actions/{cle}) |
| getScreamingFrogDashboardB | Tableau de bord Screaming Frog — Crawl, qualité du crawl, problèmes par catégorie avec priorité et score, 12 actions prioritaires, pages les plus touchées. — (GET /sites/{siteId}/screaming-frog) |
| listScreamingFrogCrawlsA | Lister les crawls — Crawls importés du site. — (GET /sites/{siteId}/screaming-frog/crawls) |
| listScreamingFrogActionsB | Plan d'action Screaming Frog — Actions correctives priorisées (gabarit, contenu, URL très liées). — (GET /sites/{siteId}/screaming-frog/actions) |
| getScreamingFrogIssueA | Rapport d'un problème — Explication, correction, évolution entre crawls, URL ou liens concernés (50 par page), URL résolues. — (GET /sites/{siteId}/screaming-frog/problemes/{code}) |
| getScreamingFrogPageB | Problèmes d'une page — Problèmes propres à la page, liens vers des URL en erreur ou redirigées, pages qui la lient si elle est en erreur. — (GET /sites/{siteId}/screaming-frog/page) |
| listLinkSuggestionsA | Suggestions de maillage interne — Liens à ajouter proposés par GPSEM, page par page. Analyse globale : section d'audit maillage_interne. — (GET /sites/{siteId}/maillage/suggestions) |
| listNavrankReportsB | Catalogue des rapports NavRank / ClickRank — Rapports Navboost disponibles. — (GET /navrank/rapports) |
| getNavrankReportC | Rapport NavRank / ClickRank — Priorité des pages, recommandations, scores ML, anomalies et dérive de trafic calculés sur les stats hebdomadaires (clics, visites, engagement). — (GET /sites/{siteId}/navrank/{rapport}) |
| listKeywordsA | Lister les mots-clés — Mots-clés suivis, par volume décroissant. — (GET /sites/{siteId}/keywords) |
| getKeywordB | Mot-clé et analyse sémantique — Entités, termes saillants, recherches associées, questions posées, articles de la SERP, stratégie et guide rédactionnel. — (GET /sites/{siteId}/keywords/{id}) |
| runKeywordSemanticAnalysisA | Lancer l'analyse sémantique d'un mot-clé — Traitement de quelques minutes : suivre task_id avec getTask, puis lire getKeyword. — (POST /sites/{siteId}/keywords/{id}/analyse-semantique) |
| getSemanticMapA | Cartographie sémantique du site — Radius : par défaut un résumé (clusters, 50 pages les plus hors sujet). Détail par étapes avec cluster, q, page_id, sort, order, limit, page ; full=1 pour tout ; refresh=1 relance le calcul. — (GET /sites/{siteId}/cartographie-semantique) |
| getTaskA | État d'un traitement — Avancement d'un traitement lancé par l'API (finished = true quand terminé). — (GET /sites/{siteId}/taches/{id}) |
| listContentIdeasB | Lister les idées de contenu — Idées avec leur statut (to_write, writing, refused) et la page produite. — (GET /sites/{siteId}/contenus) |
| createContentA | Créer un contenu (rédaction automatique) — Une source parmi expression, url (réécriture d'une page, par exemple d'un concurrent), urls (plusieurs pages fusionnées) ou keyword_id. draft=true crée l'idée sans lancer la rédaction. — (POST /sites/{siteId}/contenus) |
| getContentIdeaA | Lire une idée de contenu — Statut et page produite. — (GET /sites/{siteId}/contenus/{id}) |
| writeContentIdeaA | Lancer la rédaction d'une idée — Lance ou relance la rédaction automatique d'une idée existante. — (POST /sites/{siteId}/contenus/{id}/rediger) |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 51 tools
Most tools are grouped by resource and action, but several overlap: getEntreprise and getCompanyInfo both return company data, and listScreamingFrogActions/listAuditActions both expose prioritized corrective actions. Semantic-analysis tools (getKeyword, runKeywordSemanticAnalysis, getSemanticMap) also have fuzzy boundaries, though the descriptions usually clarify the target.
The dominant pattern is verb + resource (get/list/create/update), and all names are camelCase. However, the set mixes French and English nouns (getEntreprise vs getCompanyInfo), reverses compounds (getSiteHistorique vs getHistoriqueCodes), and uses irregular names like getMe and getMybacklinkStatus, so the convention is only partially consistent.
With 51 tools, the server is at the extreme end of the scale and exceeds the 50-tool threshold. Although the underlying GPSEM API is broad, exposing every endpoint as an MCP tool makes selection harder and likely overwhelms an agent.
Core workflows are well covered: sites, pages, audits, Screaming Frog, backlinks, keywords, and content ideas all have read and many have write operations. However, there are notable lifecycle gaps—no deletion endpoints for sites/pages/content, no keyword list management, and no way to update content-idea status besides launching writing.