Rivalize

officiel

Intelligence concurrentielle pour agents : démantèlements de concurrents, tarification, publicités, avis et dynamique. Lecture seule par défaut.

Que pouvez-vous faire avec Rivalize MCP ?

  • Analyse concurrentielle — Demandez une analyse stratégique en un appel du positionnement, des prix, des publicités, de la présence sociale, des avis, des recrutements et de la dynamique de tout concurrent via teardown_competitor.
  • Recherche dans l’univers — Recherchez dans le jeu de données intersociétés de Rivalize les entreprises suivies par mot-clé, catégorie ou couche avec list_universe_companies.
  • Navigation dans les rapports — Extrayez des sections spécifiques ou des détails sur les concurrents de vos rapports stockés, comme les prix ou les battlecards, à l’aide de get_report.
  • Suivi des concurrents — Consultez les scores de dynamique, les niveaux de menace et les classements Brief de vos concurrents suivis avec list_competitors.
  • Vérification des preuves — Vérifiez les sources derrière toute affirmation et la fraîcheur des observations de chaque concurrent avec get_evidence et get_freshness.
  • Ajouter des concurrents — Optez pour l’ajout d’URLs de concurrents à un projet, ce qui consomme des crédits et met en file d’attente l’analyse, via add_competitor.

Documentation

Serveur MCP Rivalize

npm License: MIT

Intelligence concurrentielle sourcée et datée pour votre assistant IA, via le Model Context Protocol.

Ce qu'il fait

Ce serveur connecte Claude, Cursor ou tout autre client MCP à Rivalize. Votre assistant peut déconstruire le positionnement, les prix, les publicités, la présence sociale, les avis, le recrutement et la dynamique d'un concurrent en un seul appel, rechercher dans l'univers Rivalize des entreprises suivies, et lire les projets, rapports, battlecards, chronologies et preuves de votre propre compte Rivalize. Chaque réponse provient de données collectées par Rivalize, avec dates et sources, plutôt que de la mémoire d'un modèle.

Le serveur est en lecture seule par défaut. Un outil d'écriture, add_competitor, est disponible si vous l'activez avec RIVALIZE_MCP_ALLOW_WRITES=1.

Démarrage rapide

Nécessite Node.js 22 ou plus récent (node --version).

  1. Créez un compte sur rivalize.ai.
  2. Créez une clé API sous Tableau de bord → Paramètres → Clés API. Les clés commencent par rk_live_. Une clé de n'importe quel plan fonctionne, y compris le plan gratuit, qui bénéficie de lectures limitées en débit.
  3. Ajoutez le serveur à votre client en utilisant l'un des blocs ci-dessous.

Claude Desktop

Modifiez ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) ou %APPDATA%\Claude\claude_desktop_config.json (Windows), puis redémarrez Claude Desktop :

{
  "mcpServers": {
    "rivalize": {
      "command": "npx",
      "args": ["-y", "@rivalize/mcp"],
      "env": { "RIVALIZE_API_KEY": "rk_live_..." }
    }
  }
}

Claude Code

claude mcp add rivalize -e RIVALIZE_API_KEY=rk_live_... -- npx -y @rivalize/mcp

Cursor

Ajoutez à .cursor/mcp.json dans votre projet, ou ~/.cursor/mcp.json pour tous les projets :

{
  "mcpServers": {
    "rivalize": {
      "command": "npx",
      "args": ["-y", "@rivalize/mcp"],
      "env": { "RIVALIZE_API_KEY": "rk_live_..." }
    }
  }
}

Cline

Dans Cline, ouvrez le panneau Serveurs MCP, choisissez Configurer, puis Configurer les serveurs MCP. Cela ouvre cline_mcp_settings.json. Ajoutez :

{
  "mcpServers": {
    "rivalize": {
      "command": "npx",
      "args": ["-y", "@rivalize/mcp"],
      "env": { "RIVALIZE_API_KEY": "rk_live_..." }
    }
  }
}

Enregistrez le fichier. Le serveur rivalize apparaît avec un point vert après environ 10 à 15 secondes (le premier démarrage télécharge le package). Sous Windows, s'il ne démarre pas, utilisez "command": "cmd" et "args": ["/c", "npx", "-y", "@rivalize/mcp"].

Si vous demandez à Cline de l'installer pour vous, pointez-le vers llms-install.md.

Tout client MCP (stdio)

Le serveur parle MCP via stdin et stdout. Configurez votre client pour lancer :

ParamètreValeur
Commandenpx
Arguments-y @rivalize/mcp
EnvironnementRIVALIZE_API_KEY=rk_live_...
Transportstdio

Sous Windows, certains clients ne peuvent pas lancer npx directement car il s'agit de npx.cmd. Utilisez cmd comme commande et /c npx -y @rivalize/mcp comme arguments à la place.

Outils

Treize outils en lecture seule sont toujours disponibles. add_competitor est enregistré uniquement lorsque RIVALIZE_MCP_ALLOW_WRITES est défini sur 1, true ou yes ; sans cela, l'outil n'existe pas pour le client.

OutilAccèsCe qu'il faitArguments clés
teardown_competitorlectureDéconstruction stratégique en un appel d'un concurrent en Markdown : positionnement, prix, publicités, avis, recrutement, dynamique et faiblesses à attaquer, avec la date de dernière actualisation des donnéesdomain (obligatoire)
list_universe_companieslectureRecherche dans l'univers Rivalize, l'ensemble de données inter-clients des entreprises suiviesq, category (slug), layer, limit (1-100), offset
get_universe_companylectureProfil complet de l'univers pour une entreprise : identité, prix, fonctionnalités, publicités, avis, financement et recrutement, classements, signaux, dynamiquedomain (obligatoire), layers
list_projectslectureLes projets de votre compte ; renvoie les project_id que les autres outils prennentaucun
list_reportslectureVos rapports, du plus récent au plus ancien. La lecture ne génère jamais de rapportproject_id, limit (1-100), offset
get_reportlectureUn rapport en Markdown, en entier, ou une section, ou un concurrent à la foisreport_id (obligatoire), section, competitor, page
list_competitorslectureLes concurrents que vous suivez, avec le score de dynamique, sa bande de niveau de menace et, lorsque l'API le fournit, la position de chaque rival sur votre Briefproject_id, limit (1-100), offset
get_competitor_intelligencelectureDernières informations stockées pour un concurrent suivi ; un champ n'est présent que s'il a été mesurécompetitor_id (obligatoire)
get_battlecardlectureBattlecard de vente citée pour un concurrent suivi. Nécessite un plan Procompetitor_id (obligatoire)
get_strategic_timelinelectureChronologie liée aux preuves des mouvements des concurrents en matière de prix, produit, personnes, financement et contenu/socialproject_id (obligatoire), days (30, 90, 180), competitor_id, lanes, format, page
get_competitive_landscapelecturePositions hebdomadaires actuelles ou stockées des concurrents par activité et importance stratégiqueproject_id (obligatoire), week (YYYY-MM-DD), format, page
get_freshnesslectureQuand chaque concurrent suivi dans un projet a été réellement observé pour la dernière fois, et commentproject_id (obligatoire)
get_evidencelectureLes sources derrière les faits pour votre produit ou un concurrent : URL, ce qu'elles soutiennent, et quand elles ont été luesproject_id (obligatoire), competitor_id
add_competitorécriture, sur optionAjouter des URL de concurrents à un projet. Consomme des crédits et met en file l'analyseproject_id (obligatoire), urls (1-10, obligatoire)

project_id et competitor_id sont des UUID provenant de list_projects et list_competitors. Les outils qui lisent votre compte ne voient que vos propres données.

Sections de rapport

get_report prend un section pour que votre assistant puisse lire la partie dont une question a besoin au lieu de tout le rapport :

SectionContenu
tldr, biggest-threat, blind-spots, actionsLes sections principales du rapport (actions est ce que votre produit devrait faire)
battlecardsLes battlecards de vente citées
competitorsLa section de chaque concurrent en entier
pricing, momentum, app-store, strengths, weaknesses, key-findings, creators, ads, tech-stackUn sujet rassemblé depuis la section de chaque concurrent

Un rapport ne contient que les sections pour lesquelles il a des données ; demander tout autre nom renvoie une erreur qui liste les sections disponibles. section se combine avec competitor, donc section: "pricing" avec competitor: "Acme" renvoie les prix d'Acme. Les affirmations que le contrôle de fabrication du rapport a supprimées apparaissent comme [removed — unverified], exactement comme dans le rapport.

Réponses longues

Chaque réponse reste sous 25 000 caractères, et rien n'est coupé silencieusement :

  • Markdown (get_report, get_strategic_timeline, get_competitive_landscape) est divisé en pages aux limites de sections. Chaque page commence par Page N of M, combien il reste, et l'appel exact pour la page suivante.
  • Listes (list_universe_companies, list_competitors, list_reports) renvoient pagination.next_offset ; continuez à partir de là jusqu'à ce qu'il soit null.
  • Objets (get_universe_company, et JSON de chronologie ou de paysage) plafonnent les tableaux longs et enregistrent le plafond dans _capped. Un champ qui ne tient toujours pas est listé dans _omitted avec l'appel qui le récupère.

Exemples de prompts

  • « Déconstruis linear.app. » (teardown_competitor)
  • « Qui sont les acteurs des outils de développement IA ? » (list_universe_companies)
  • « Résume mon dernier rapport, puis montre-moi ce que facturent mes concurrents. » (list_reports, get_report avec section: "pricing")
  • « Lequel de mes concurrents a le plus bougé ce trimestre, et qu'ont-ils fait ? » (get_competitive_landscape, get_strategic_timeline)
  • « Donne-moi des arguments de vente contre mon principal concurrent. » (list_competitors, get_battlecard)
  • « D'où vient cette affirmation de prix, et quelle est sa fraîcheur ? » (get_evidence, get_freshness)

Configuration

VariableObligatoireDéfautDescription
RIVALIZE_API_KEYouiaucunVotre clé API Rivalize. Doit commencer par rk_live_ ; le serveur se ferme au démarrage avec un message si elle est manquante ou malformée.
RIVALIZE_API_URLnonhttps://rivalize.aiOrigine de l'API Rivalize. Une clé ne fonctionne que sur le serveur qui l'a émise : laissez ceci non défini pour rivalize.ai, et pour un serveur Rivalize auto-hébergé ou non-production, définissez-le sur l'origine de ce serveur, sinon chaque appel renvoie 401.
RIVALIZE_MCP_ALLOW_WRITESnondésactivé1, true ou yes (toute casse) enregistre add_competitor. Toute autre valeur, ou non défini, maintient le serveur en lecture seule.
HTTPS_PROXY / HTTP_PROXYnonaucunAchemine les requêtes via un proxy d'entreprise. Les formes en minuscules sont également lues, et HTTPS_PROXY gagne lorsque les deux sont définis. NO_PROXY est honoré. Les erreurs nomment l'hôte du proxy, jamais ses identifiants.

Dépannage

« Connexion fermée »

Lorsque le serveur ne peut pas démarrer, de nombreux clients n'affichent que « Connexion fermée » ou un statut d'échec. Le serveur imprime la raison comme première ligne de sa stderr, préfixée rivalize-mcp:, et la plupart des clients conservent stderr dans leur journal MCP. Les causes habituelles :

  1. RIVALIZE_API_KEY est manquante ou invalide. Le journal indique rivalize-mcp: RIVALIZE_API_KEY is required, ou dit que la clé ne ressemble pas à une clé API Rivalize (elle doit commencer par rk_live_). Placez la clé dans le bloc env du serveur et redémarrez le client.
  2. Node.js est plus ancien que 22. Exécutez node --version et installez Node.js 22 ou plus récent. Votre client utilise le node et le npx qui viennent en premier dans son propre PATH, ce qui peut différer de ceux de votre terminal.
  3. Pas d'accès réseau. npx télécharge le package au premier lancement, et chaque appel d'outil va vers https://rivalize.ai (ou RIVALIZE_API_URL). Derrière un proxy d'entreprise, définissez HTTPS_PROXY. Une erreur réseau nomme le serveur et le code de cause, comme ECONNREFUSED ou ENOTFOUND.

Pour voir le message directement, exécutez le serveur dans un terminal avec la même clé :

RIVALIZE_API_KEY=rk_live_... npx -y @rivalize/mcp

Un serveur sain imprime rivalize-mcp-server connected via stdio sur stderr et attend une entrée (appuyez sur Ctrl+C pour arrêter). Tout le reste est la raison pour laquelle votre client n'a pas pu se connecter.

Chaque appel renvoie 401

La clé a été rejetée par le serveur auquel elle a été envoyée, et l'erreur nomme ce serveur. Vérifiez que la clé n'a pas été révoquée, et que RIVALIZE_API_URL est non défini sauf si la clé a été émise par un autre serveur Rivalize.

Un outil indique qu'il nécessite un plan supérieur

Les lectures sont disponibles sur tous les plans. Certaines capacités, comme les battlecards et l'historique complet de chronologie ou de paysage, nécessitent un plan supérieur ; l'erreur indique lequel et renvoie vers rivalize.ai/pricing.

Docker

Le dépôt inclut un Dockerfile qui construit le même serveur stdio sur Node 22 et l'exécute en tant qu'utilisateur non-root.

docker build -t rivalize-mcp .
{
  "mcpServers": {
    "rivalize": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "-e", "RIVALIZE_API_KEY", "rivalize-mcp"],
      "env": { "RIVALIZE_API_KEY": "rk_live_..." }
    }
  }
}

Exécutez le conteneur avec -i et sans TTY, car MCP utilise stdin et stdout. -e RIVALIZE_API_KEY sans valeur transmet la clé depuis l'environnement du client, donc elle n'apparaît jamais sur la ligne de commande docker run. Ajoutez -e RIVALIZE_API_URL ou -e RIVALIZE_MCP_ALLOW_WRITES de la même manière si vous en avez besoin.

Politique de confidentialité

Ce serveur est un client léger pour l'API Rivalize.

  • Ce qu'il envoie, et où. Chaque appel d'outil devient une requête HTTPS vers l'API Rivalize à https://rivalize.ai, ou l'origine que vous définissez dans RIVALIZE_API_URL. Une requête transporte votre clé API comme jeton Bearer, un User-Agent de rivalize-mcp/<version>, et les arguments de l'outil : par exemple un domaine d'entreprise, un terme de recherche, un projet, un rapport ou un identifiant de concurrent, et, si les écritures sont activées, les URL de concurrents que vous ajoutez. Si vous définissez HTTPS_PROXY ou HTTP_PROXY, les requêtes passent par ce proxy. Rien n'est envoyé ailleurs.
  • Ce qu'il n'envoie pas. Aucune télémétrie, analytique ou rapport d'erreur. Il ne lit pas les fichiers sur votre machine, votre conversation, ni la sortie d'autres outils ; il ne voit que les arguments que votre client MCP passe à ses propres outils.
  • Ce qu'il stocke localement. Rien. Il n'écrit aucun fichier, ne conserve aucun cache et ne garde aucun état entre les exécutions. Votre clé vit dans la configuration de votre client MCP, pas dans ce serveur. Les messages de diagnostic vont vers stderr, que votre client MCP peut journaliser ; ils n'incluent jamais votre clé API.
  • Ce que Rivalize fait avec les requêtes. L'API les traite conformément à la politique de confidentialité de Rivalize à rivalize.ai/privacy. Rivalize est exploité par Downshift LLC, le responsable du traitement de ces données. Les questions de confidentialité vont à privacy@rivalize.ai.

Sécurité

Veuillez signaler les vulnérabilités en privé à support@rivalize.ai avec « security » dans l'objet, pas dans un problème public. Incluez la version du paquet (npm view @rivalize/mcp version, ou le User-Agent ci-dessus), ce que vous avez fait, et ce qui s'est passé. Nous accuserons réception de votre rapport et vous tiendrons informé jusqu'à sa résolution.

Traitez votre clé API comme une information d'identification. Gardez-la dans le bloc env de votre client ou dans votre environnement shell, jamais dans un fichier partagé ou versionné, et révoquez une clé divulguée sous Tableau de bord → Paramètres → Clés API.

Contribution

Les rapports de bogues et les demandes de fonctionnalités sont les bienvenus sur github.com/Downshift/rivalize-mcp/issues. Pour les questions de compte et de facturation, écrivez à support@rivalize.ai.

Pour travailler sur le serveur localement :

npm ci
npm run typecheck
npm run build      # emits dist/, which the rivalize-mcp bin runs
npm test           # offline: every API call is mocked or served by a local fixture

server.json est l'entrée du registre MCP. Les tests la valident contre le schéma officiel (fourni dans schema/) et vérifient que son nom, sa version et son paquet correspondent à package.json.

Journal des modifications

0.3.2

  • list_competitors indique désormais à votre assistant comment choisir un concurrent principal : par le classement du rival sur votre Brief (brief.standing) lorsque l'API le renvoie, sinon par momentum_score. threat_level est décrit pour ce qu'il est, la bande du score de dynamique, et n'est plus proposé comme classement.
  • Lorsque le classement d'une ligne est encore en cours de lecture (brief.state est deferred), list_competitors demande à nouveau la même page, jusqu'à 4 fois, à 1,5 seconde d'intervalle. Contre une API qui ne renvoie pas de brief, elle fait une requête par appel comme avant.
  • Formulation plus claire dans l'indice 401 pour un serveur Rivalize auto-hébergé ou hors production, et dans la description de add_competitor.

0.3.1

  • La version à partir de laquelle l'historique de ce dépôt commence : treize outils en lecture seule, l'outil d'écriture optionnel add_competitor, des réponses maintenues sous 25 000 caractères avec pagination explicite, prise en charge des proxys, et l'entrée du registre MCP dans server.json.

Licence

MIT, © 2026 Downshift LLC. Voir LICENSE.