Rivalize
officielIntelligence 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_evidenceetget_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
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).
- Créez un compte sur rivalize.ai.
- 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. - 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ètre | Valeur |
|---|---|
| Commande | npx |
| Arguments | -y @rivalize/mcp |
| Environnement | RIVALIZE_API_KEY=rk_live_... |
| Transport | stdio |
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.
| Outil | Accès | Ce qu'il fait | Arguments clés |
|---|---|---|---|
teardown_competitor | lecture | Dé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ées | domain (obligatoire) |
list_universe_companies | lecture | Recherche dans l'univers Rivalize, l'ensemble de données inter-clients des entreprises suivies | q, category (slug), layer, limit (1-100), offset |
get_universe_company | lecture | Profil complet de l'univers pour une entreprise : identité, prix, fonctionnalités, publicités, avis, financement et recrutement, classements, signaux, dynamique | domain (obligatoire), layers |
list_projects | lecture | Les projets de votre compte ; renvoie les project_id que les autres outils prennent | aucun |
list_reports | lecture | Vos rapports, du plus récent au plus ancien. La lecture ne génère jamais de rapport | project_id, limit (1-100), offset |
get_report | lecture | Un rapport en Markdown, en entier, ou une section, ou un concurrent à la fois | report_id (obligatoire), section, competitor, page |
list_competitors | lecture | Les 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 Brief | project_id, limit (1-100), offset |
get_competitor_intelligence | lecture | Dernières informations stockées pour un concurrent suivi ; un champ n'est présent que s'il a été mesuré | competitor_id (obligatoire) |
get_battlecard | lecture | Battlecard de vente citée pour un concurrent suivi. Nécessite un plan Pro | competitor_id (obligatoire) |
get_strategic_timeline | lecture | Chronologie liée aux preuves des mouvements des concurrents en matière de prix, produit, personnes, financement et contenu/social | project_id (obligatoire), days (30, 90, 180), competitor_id, lanes, format, page |
get_competitive_landscape | lecture | Positions hebdomadaires actuelles ou stockées des concurrents par activité et importance stratégique | project_id (obligatoire), week (YYYY-MM-DD), format, page |
get_freshness | lecture | Quand chaque concurrent suivi dans un projet a été réellement observé pour la dernière fois, et comment | project_id (obligatoire) |
get_evidence | lecture | Les sources derrière les faits pour votre produit ou un concurrent : URL, ce qu'elles soutiennent, et quand elles ont été lues | project_id (obligatoire), competitor_id |
add_competitor | écriture, sur option | Ajouter des URL de concurrents à un projet. Consomme des crédits et met en file l'analyse | project_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 :
| Section | Contenu |
|---|---|
tldr, biggest-threat, blind-spots, actions | Les sections principales du rapport (actions est ce que votre produit devrait faire) |
battlecards | Les battlecards de vente citées |
competitors | La section de chaque concurrent en entier |
pricing, momentum, app-store, strengths, weaknesses, key-findings, creators, ads, tech-stack | Un 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 parPage N of M, combien il reste, et l'appel exact pour la page suivante. - Listes (
list_universe_companies,list_competitors,list_reports) renvoientpagination.next_offset; continuez à partir de là jusqu'à ce qu'il soitnull. - 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_omittedavec 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_reportavecsection: "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
| Variable | Obligatoire | Défaut | Description |
|---|---|---|---|
RIVALIZE_API_KEY | oui | aucun | Votre 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_URL | non | https://rivalize.ai | Origine 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_WRITES | non | dé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_PROXY | non | aucun | Achemine 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 :
RIVALIZE_API_KEYest manquante ou invalide. Le journal indiquerivalize-mcp: RIVALIZE_API_KEY is required, ou dit que la clé ne ressemble pas à une clé API Rivalize (elle doit commencer parrk_live_). Placez la clé dans le blocenvdu serveur et redémarrez le client.- Node.js est plus ancien que 22. Exécutez
node --versionet installez Node.js 22 ou plus récent. Votre client utilise lenodeet lenpxqui viennent en premier dans son proprePATH, ce qui peut différer de ceux de votre terminal. - Pas d'accès réseau.
npxtélécharge le package au premier lancement, et chaque appel d'outil va vershttps://rivalize.ai(ouRIVALIZE_API_URL). Derrière un proxy d'entreprise, définissezHTTPS_PROXY. Une erreur réseau nomme le serveur et le code de cause, commeECONNREFUSEDouENOTFOUND.
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 dansRIVALIZE_API_URL. Une requête transporte votre clé API comme jeton Bearer, unUser-Agentderivalize-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éfinissezHTTPS_PROXYouHTTP_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_competitorsindique 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 parmomentum_score.threat_levelest 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.stateestdeferred),list_competitorsdemande à nouveau la même page, jusqu'à 4 fois, à 1,5 seconde d'intervalle. Contre une API qui ne renvoie pas debrief, 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 dansserver.json.
Licence
MIT, © 2026 Downshift LLC. Voir LICENSE.