Référence des Outils MCP
Cette page documente les 77 outils MCP disponibles via le serveur d'analyse Zenovay. Chaque outil inclut ses paramètres, une requête JSON-RPC d'exemple et une réponse d'exemple.
URL du serveur : https://api.zenovay.com/mcp
Transport : HTTP diffusable (JSON-RPC 2.0)
En-tête d'authentification : Authorization: Bearer zv_YOUR_API_KEY
Tous les outils nécessitent une clé API valide avec MCP activé. Les outils d'écriture (marqués avec requires read_write) renvoient une erreur en mode lecture seule. Voir Permissions & Limites pour la liste complète.
Référence Rapide pour les Assistants IA
Utilisez cette section pour comprendre rapidement le serveur MCP Zenovay. Chaque requête utilise cette enveloppe JSON-RPC :
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "TOOL_NAME",
"arguments": { ... }
}
}Première étape de chaque session : Appelez list_websites (sans arguments) pour découvrir les identifiants des sites Web. Presque tous les outils requièrent un paramètre website_id.
Les 77 outils en un coup d'œil :
| # | Outil | Catégorie | Coût | Description |
|---|---|---|---|---|
| 1 | query_analytics | analytics | 3 | Requête d'analyse en langage naturel |
| 2 | get_visitors | analytics | 1 | Statistiques des visiteurs avec comparaison de période facultative |
| 3 | get_top_pages | analytics | 1 | Pages les plus visitées classées par nombre de visiteurs |
| 4 | get_traffic_sources | analytics | 1 | Ventilation des sources / référents de trafic |
| 5 | get_geographic_data | analytics | 1 | Ventilation par pays + ville facultativement |
| 6 | get_technology_breakdown | analytics | 1 | Appareils, navigateurs, systèmes d'exploitation |
| 7 | get_realtime_visitors | analytics | 1 | Visiteurs actuellement actifs (5 dernières minutes) |
| 8 | compare_periods | analytics | 1 | Comparer les métriques entre deux périodes |
| 9 | get_funnel_analysis | advanced | 1 | Données de conversion étape par étape d'entonnoir |
| 10 | get_goals | advanced | 1 | Objectifs actifs avec taux de réalisation |
| 11 | get_session_replays | advanced | 1 | Liste des enregistrements de relecture de session (Pro+) |
| 12 | get_heatmap_data | advanced | 1 | Données d'interaction de heatmap par page (Pro+) |
| 13 | get_errors | advanced | 1 | Suivi des erreurs JavaScript |
| 14 | get_b2b_companies | advanced | 1 | Identification d'entreprises B2B via recherche IP inverse |
| 15 | get_revenue | advanced | 1 | Totaux de revenus + ventilations (Pro+) |
| 16 | get_performance_metrics | advanced | 1 | Core Web Vitals (LCP, CLS, INP, FCP, TTFB) |
| 17 | get_insights | ai_insights | 1 | Insights générés par IA et exploitables |
| 18 | get_anomalies | ai_insights | 1 | Anomalies de métriques détectées |
| 19 | get_weekly_digest | ai_insights | 1 | Résumé de performance hebdomadaire (cette semaine vs semaine dernière) |
| 20 | get_recommendations | ai_insights | 1 | Recommandations d'optimisation alimentées par IA |
| 21 | list_websites | management | 1 | Lister les sites Web accessibles (appelez en premier!) |
| 22 | create_goal | management | 1 | Créer un objectif personnalisé (requires read_write) |
| 23 | manage_funnel | management | 1 | Créer/mettre à jour un entonnoir (requires read_write) |
| 24 | export_data | management | 1 | Exporter l'analyse en JSON ou CSV (Scale+) |
| 25 | get_api_usage | management | 1 | Vérifier le quota quotidien restant |
| 26 | get_website_settings | management | 1 | Obtenir la configuration et les paramètres du site Web |
| 27 | update_website_settings | management | 1 | Mettre à jour les paramètres du site Web (requires read_write) |
| 28 | toggle_public_dashboard | management | 1 | Activer/désactiver le tableau de bord public (requires read_write) |
| 29 | toggle_cookieless_tracking | management | 1 | Activer/désactiver le mode sans cookies (requires read_write, Pro+) |
| 30 | get_tracking_code | management | 1 | Obtenir l'extrait de code de suivi pour un site Web |
| 31 | regenerate_tracking_code | management | 1 | Générer un nouveau code de suivi (requires read_write) |
| 32 | list_goals | management | 1 | Lister tous les objectifs pour un site Web |
| 33 | update_goal | management | 1 | Mettre à jour un objectif existant (requires read_write) |
| 34 | delete_goal | management | 1 | Supprimer un objectif (requires read_write) |
| 35 | toggle_goal | management | 1 | Activer ou désactiver un objectif (requires read_write) |
| 36 | list_funnels | management | 1 | Lister tous les entonnoirs pour un site Web |
| 37 | delete_funnel | management | 1 | Supprimer un entonnoir (requires read_write) |
| 38 | delete_website | management | 1 | Supprimer définitivement un site Web (requires read_write, full_access) |
| 39 | add_ip_exclusion | settings | 1 | Ajouter une IP à la liste d'exclusion (requires read_write) |
| 40 | remove_ip_exclusion | settings | 1 | Retirer une IP de la liste d'exclusion (requires read_write) |
| 41 | add_path_exclusion | settings | 1 | Ajouter un motif de chemin aux exclusions (requires read_write) |
| 42 | remove_path_exclusion | settings | 1 | Retirer un chemin des exclusions (requires read_write) |
| 43 | list_exclusions | settings | 1 | Lister toutes les exclusions d'IP et de chemin |
| 44 | get_notification_settings | settings | 1 | Obtenir les préférences de notification |
| 45 | update_notification_settings | settings | 1 | Mettre à jour les préférences de notification (requires read_write) |
| 46 | get_team_members | team | 1 | Lister les membres de l'équipe (requires full_access) |
| 47 | invite_team_member | team | 1 | Inviter un nouveau membre de l'équipe (requires read_write, full_access, Pro+) |
| 48 | remove_team_member | team | 1 | Retirer un membre de l'équipe (requires read_write, full_access) |
| 49 | create_website | management | 1 | Créer un nouveau site Web (requires read_write, full_access) |
| 50 | list_api_keys | api_keys | 1 | Lister toutes les clés API de l'équipe |
| 51 | create_api_key | api_keys | 1 | Créer une nouvelle clé API (requires read_write) |
| 52 | revoke_api_key | api_keys | 1 | Révoquer une clé API (requires read_write) |
| 53 | get_api_key_details | api_keys | 1 | Obtenir les détails d'une clé API spécifique |
| 54 | update_api_key_permissions | api_keys | 1 | Mettre à jour les permissions de clé API (requires read_write) |
| 55 | list_uptime_monitors | uptime | 1 | Lister tous les moniteurs de disponibilité |
| 56 | get_uptime_status | uptime | 1 | Obtenir l'état actuel d'un moniteur |
| 57 | create_uptime_monitor | uptime | 1 | Créer un nouveau moniteur de disponibilité (requires read_write) |
| 58 | delete_uptime_monitor | uptime | 1 | Supprimer un moniteur de disponibilité (requires read_write) |
| 59 | get_uptime_history | uptime | 1 | Obtenir l'historique de disponibilité et le journal des incidents |
| 60 | update_website_name | management | 1 | Mettre à jour le nom d'affichage du site Web (requires read_write) |
| 61 | update_website_timezone | management | 1 | Mettre à jour le fuseau horaire du site Web (requires read_write) |
| 62 | update_website_domain | management | 1 | Mettre à jour le domaine du site Web (requires read_write) |
| 63 | pause_tracking | management | 1 | Mettre en pause le suivi des analyses (requires read_write) |
| 64 | resume_tracking | management | 1 | Reprendre le suivi des analyses (requires read_write) |
| 65 | schedule_report | management | 1 | Planifier un rapport d'analyse récurrent (requires read_write) |
| 66 | get_report_schedule | management | 1 | Obtenir la configuration du rapport planifié |
| 67 | cancel_report | management | 1 | Annuler un rapport planifié (requires read_write) |
| 68 | get_export_history | management | 1 | Obtenir l'historique d'exportation des données |
| 69 | get_data_retention | management | 1 | Obtenir la politique de rétention des données pour le site Web |
| 70 | set_revenue_currency | settings | 1 | Définir la devise des revenus (requires read_write) |
| 71 | get_revenue_settings | settings | 1 | Obtenir les paramètres de revenus (devise, mappages de champs) |
| 72 | add_allowed_domain | settings | 1 | Ajouter un domaine à la liste blanche CORS (requires read_write) |
| 73 | remove_allowed_domain | settings | 1 | Retirer un domaine de la liste blanche CORS (requires read_write) |
| 74 | list_allowed_domains | settings | 1 | Lister les domaines en liste blanche CORS |
| 75 | request_data_deletion | settings | 1 | Supprimer les données des visiteurs pour le RGPD (requires read_write) |
| 76 | get_retention_data | advanced | 1 | Analyse de cohésion de rétention (Pro+) |
| 77 | get_user_profiles | analytics | 1 | Profils de visiteurs avec historique de session |
Valeurs time_range courantes : 24h, 7d, 30d, 90d, 1y (par défaut : 7d pour la plupart des outils)
Modèles Courants
Avant de plonger dans les outils individuels, voici les workflows multi-outils courants :
Découverte du site Web + analyse :
list_websites— trouver vos identifiants de sites Webget_visitors— obtenir un aperçu du traficget_top_pages— voir quelles pages fonctionnent le mieuxget_traffic_sources— comprendre d'où provient le trafic
Audit de performance :
list_websites— obtenir l'identifiant du site Webget_performance_metrics— vérifier les Core Web Vitalsget_errors— trouver les erreurs JavaScriptget_insights— voir les recommandations générées par IA
Examen hebdomadaire :
get_weekly_digest— comparaison automatique semaine par semaineget_anomalies— vérifier les modèles inhabituelscompare_periods— analyse approfondie de métriques spécifiques
Outils d'Analyse
Tous les outils d'analyse appliquent la fenêtre de rétention des données de votre plan. Les requêtes demandant des données au-delà de votre limite de rétention sont automatiquement limitées, et la réponse inclut un champ retention_note. Voir Application du Plan pour les limites de rétention par plan.
1. query_analytics
Posez une question en langage naturel sur vos données d'analyse. Cet outil est le plus flexible — utilisez-le quand d'autres outils spécifiques ne conviennent pas.
Coût : 3 requêtes
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
website_id | string | Oui | L'UUID du site Web |
question | string | Oui | Question en langage naturel (max 500 caractères) |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "query_analytics",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"question": "How many visitors did I have this week?"
}
}
}{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [{
"type": "text",
"text": {
"intent": "visitor_count",
"confidence": 0.95,
"time_range": "7d",
"results": { "total_visitors": 1250, "unique_visitors": 980 },
"summary": "You had 1,250 total visitors (980 unique) in the last 7 days.",
"suggestions": [
"How many visitors did I have this week?",
"What are my top pages?",
"Where are my visitors from?",
"What devices do visitors use?"
]
}
}]
}
}2. get_visitors
Obtenir les statistiques des visiteurs pour un site Web avec comparaison de période facultative.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Par Défaut | Description |
|---|---|---|---|---|
website_id | string | Oui | — | L'UUID du site Web |
time_range | string | Non | 7d | Plage temporelle : 24h, 7d, 30d, 90d, 1y |
compare_with_previous | boolean | Non | false | Inclure une comparaison avec la période précédente |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_visitors",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"time_range": "7d",
"compare_with_previous": true
}
}
}{
"summary": {
"total_visitors": 1250,
"unique_visitors": 980,
"page_views": 3400,
"bounce_rate": 42.5,
"avg_session_duration": 185.3
},
"daily_stats": [
{ "date": "2026-02-27", "visitors": 180, "unique_visitors": 140, "page_views": 490, "bounce_rate": 41.2 },
{ "date": "2026-02-28", "visitors": 195, "unique_visitors": 155, "page_views": 510, "bounce_rate": 43.1 }
],
"comparison": {
"previous_period": { "start": "2026-02-20", "end": "2026-02-26" },
"previous_summary": {
"total_visitors": 1100,
"unique_visitors": 870,
"page_views": 3100,
"bounce_rate": 44.8
},
"changes": {
"visitors_pct": 13.64,
"unique_visitors_pct": 12.64,
"page_views_pct": 9.68,
"bounce_rate_pct": -5.13
}
}
}3. get_top_pages
Obtenir les pages les plus visitées classées par nombre de visiteurs.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Par Défaut | Description |
|---|---|---|---|---|
website_id | string | Oui | — | L'UUID du site Web |
time_range | string | Non | 7d | Plage temporelle : 24h, 7d, 30d, 90d, 1y |
limit | number | Non | 20 | Max de pages à retourner (1-100) |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_top_pages",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"time_range": "30d",
"limit": 5
}
}
}{
"pages": [
{ "url": "/", "visitors": 520, "percentage": 41.6 },
{ "url": "/pricing", "visitors": 180, "percentage": 14.4 },
{ "url": "/features", "visitors": 145, "percentage": 11.6 },
{ "url": "/docs", "visitors": 110, "percentage": 8.8 },
{ "url": "/blog/analytics-guide", "visitors": 95, "percentage": 7.6 }
],
"total_pages": 47
}4. get_traffic_sources
Obtenir les sources de trafic montrant d'où proviennent les visiteurs.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Par Défaut | Description |
|---|---|---|---|---|
website_id | string | Oui | — | L'UUID du site Web |
time_range | string | Non | 7d | Plage temporelle : 24h, 7d, 30d, 90d, 1y |
limit | number | Non | 20 | Max de sources à retourner (1-100) |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_traffic_sources",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"time_range": "30d"
}
}
}{
"sources": [
{ "source": "Direct", "visitors": 450, "percentage": 36.0 },
{ "source": "google.com", "visitors": 320, "percentage": 25.6 },
{ "source": "twitter.com", "visitors": 85, "percentage": 6.8 },
{ "source": "github.com", "visitors": 60, "percentage": 4.8 }
],
"total_sources": 23
}5. get_geographic_data
Obtenir la ventilation géographique par pays avec détail au niveau de la ville en option.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Par Défaut | Description |
|---|---|---|---|---|
website_id | string | Oui | — | L'UUID du site Web |
time_range | string | Non | 7d | Plage temporelle : 24h, 7d, 30d, 90d, 1y |
limit | number | Non | 20 | Max d'entrées (1-100) |
include_cities | boolean | Non | false | Inclure la ventilation au niveau de la ville par pays |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_geographic_data",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"include_cities": true,
"limit": 3
}
}
}{
"countries": [
{
"country_code": "US",
"country_name": "United States",
"visitors": 520,
"percentage": 41.6,
"cities": [
{ "city": "San Francisco", "visitors": 85 },
{ "city": "New York", "visitors": 72 }
]
},
{
"country_code": "DE",
"country_name": "Germany",
"visitors": 180,
"percentage": 14.4,
"cities": [
{ "city": "Berlin", "visitors": 45 },
{ "city": "Munich", "visitors": 32 }
]
}
],
"total_countries": 28
}6. get_technology_breakdown
Obtenir la ventilation technologique des visiteurs : appareils, navigateurs et systèmes d'exploitation.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Par Défaut | Description |
|---|---|---|---|---|
website_id | string | Oui | — | L'UUID du site Web |
time_range | string | Non | 7d | Plage temporelle : 24h, 7d, 30d, 90d, 1y |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_technology_breakdown",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
}
}{
"devices": [
{ "name": "desktop", "visitors": 780, "percentage": 62.4 },
{ "name": "mobile", "visitors": 390, "percentage": 31.2 },
{ "name": "tablet", "visitors": 80, "percentage": 6.4 }
],
"browsers": [
{ "name": "Chrome", "visitors": 625, "percentage": 50.0 },
{ "name": "Safari", "visitors": 300, "percentage": 24.0 },
{ "name": "Firefox", "visitors": 150, "percentage": 12.0 }
],
"operating_systems": [
{ "name": "Windows", "visitors": 450, "percentage": 36.0 },
{ "name": "macOS", "visitors": 350, "percentage": 28.0 },
{ "name": "iOS", "visitors": 250, "percentage": 20.0 },
{ "name": "Android", "visitors": 140, "percentage": 11.2 }
],
"total_visitors": 1250
}7. get_realtime_visitors
Obtenir les visiteurs actuellement actifs (visiteurs dans les 5 dernières minutes).
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
website_id | string | Oui | L'UUID du site Web |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_realtime_visitors",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
}
}{
"active_visitors": 12,
"recent_visitors": [
{
"country_name": "United States",
"page_url": "/pricing",
"device_type": "desktop",
"browser": "Chrome"
},
{
"country_name": "Germany",
"page_url": "/",
"device_type": "mobile",
"browser": "Safari"
}
]
}8. compare_periods
Comparer les métriques d'analyse entre deux périodes.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Par Défaut | Description |
|---|---|---|---|---|
website_id | string | Oui | — | L'UUID du site Web |
current_period | string | Non | 7d | Période actuelle : 24h, 7d, 30d, 90d |
comparison_period | string | Non | previous | Comparaison : previous, same_period_last_month, same_period_last_year |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "compare_periods",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"current_period": "30d",
"comparison_period": "same_period_last_month"
}
}
}{
"current": {
"period": { "start": "2026-02-04", "end": "2026-03-06" },
"visitors": 3800,
"unique_visitors": 2900,
"page_views": 10200,
"bounce_rate": 42.5,
"avg_session_duration": 185.3,
"days": 30
},
"comparison": {
"period": { "start": "2026-01-05", "end": "2026-02-04" },
"type": "same_period_last_month",
"visitors": 3200,
"unique_visitors": 2500,
"page_views": 8800,
"bounce_rate": 45.1,
"avg_session_duration": 170.8,
"days": 30
},
"changes": {
"visitors_pct": 18.75,
"unique_visitors_pct": 16.0,
"pageviews_pct": 15.91,
"bounce_rate_pct": -5.76,
"avg_session_duration_pct": 8.49
}
}Outils Avancés
9. get_funnel_analysis
Obtenir les données d'analyse d'entonnoir. Sans funnel_id, répertorie tous les entonnoirs. Avec un, renvoie les données de conversion étape par étape.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Par Défaut | Description |
|---|---|---|---|---|
website_id | string | Oui | — | L'UUID du site Web |
funnel_id | string | Non | — | UUID d'entonnoir pour analyse détaillée des étapes |
time_range | string | Non | 30d | Plage temporelle : 24h, 7d, 30d, 90d, 1y |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_funnel_analysis",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
}
}{
"funnels": [
{ "id": "f1a2b3c4-...", "name": "Signup Flow", "created_at": "2026-01-15T10:00:00Z" },
{ "id": "f5d6e7f8-...", "name": "Checkout Flow", "created_at": "2026-02-01T14:30:00Z" }
]
}{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "get_funnel_analysis",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"funnel_id": "f1a2b3c4-..."
}
}
}{
"funnel": { "id": "f1a2b3c4-...", "name": "Signup Flow" },
"steps": [
{ "name": "Landing Page", "order": 1, "visitors": 500, "conversion_rate": 100 },
{ "name": "Signup Form", "order": 2, "visitors": 320, "conversion_rate": 64 },
{ "name": "Email Verification", "order": 3, "visitors": 280, "conversion_rate": 56 },
{ "name": "Onboarding Complete", "order": 4, "visitors": 210, "conversion_rate": 42 }
]
}10. get_goals
Obtenir les objectifs actifs avec les nombres de réalisation et les taux de conversion.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Par Défaut | Description |
|---|---|---|---|---|
website_id | string | Oui | — | L'UUID du site Web |
time_range | string | Non | 30d | Plage temporelle : 24h, 7d, 30d, 90d, 1y |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_goals",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
}
}{
"goals": [
{ "id": "g1...", "name": "Newsletter Signup", "goal_type": "url_match", "is_active": true, "completions": 145, "conversion_rate": 3.82 },
{ "id": "g2...", "name": "Pricing Click", "goal_type": "element_click", "is_active": true, "completions": 89, "conversion_rate": 2.34 }
]
}11. get_session_replays
Lister les enregistrements de relecture de session. Filtrer par appareil ou pays.
Coût : 1 requête | Nécessite : Pro+ (flag de fonctionnalité sessionReplay)
| Paramètre | Type | Obligatoire | Par Défaut | Description |
|---|---|---|---|---|
website_id | string | Oui | — | L'UUID du site Web |
limit | number | Non | 20 | Sessions à retourner (1-50) |
device_type | string | Non | — | Filtre : desktop, mobile, tablet |
country_code | string | Non | — | Code de pays ISO (ex : US, DE) |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_session_replays",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"device_type": "mobile",
"limit": 5
}
}
}{
"sessions": [
{
"id": "sr1...",
"session_id": "sess_abc123",
"visitor_id": "v1...",
"duration_ms": 45200,
"page_count": 4,
"had_interaction": true,
"started_at": "2026-03-05T14:22:00Z"
}
],
"total": 23
}12. get_heatmap_data
Obtenir les données d'interaction de heatmap par page.
Coût : 1 requête | Nécessite : Pro+ (flag de fonctionnalité heatmaps)
| Paramètre | Type | Obligatoire | Par Défaut | Description |
|---|---|---|---|---|
website_id | string | Oui | — | L'UUID du site Web |
page_url | string | Non | — | Filtrer une URL de page spécifique |
limit | number | Non | 20 | Pages à retourner (1-50) |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_heatmap_data",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
}
}{
"pages": [
{ "page_url": "/", "total_interactions": 2340, "unique_visitors": 890, "last_updated": "2026-03-05T18:00:00Z" },
{ "page_url": "/pricing", "total_interactions": 1560, "unique_visitors": 620, "last_updated": "2026-03-05T17:45:00Z" }
]
}13. get_errors
Obtenir les erreurs JavaScript suivies pour un site Web.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Par Défaut | Description |
|---|---|---|---|---|
website_id | string | Oui | — | L'UUID du site Web |
status | string | Non | open | Filtre : open, resolved, ignored |
limit | number | Non | 50 | Erreurs à retourner (1-100) |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_errors",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"status": "open"
}
}
}{
"errors": [
{
"id": "e1...",
"message": "TypeError: Cannot read property 'map' of undefined",
"type": "TypeError",
"occurrence_count": 45,
"first_seen": "2026-02-28T10:15:00Z",
"last_seen": "2026-03-05T22:30:00Z",
"is_resolved": false
}
],
"total": 8
}14. get_b2b_companies
Identifier les entreprises B2B visitant votre site Web via recherche IP inverse.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Par Défaut | Description |
|---|---|---|---|---|
website_id | string | Oui | — | L'UUID du site Web |
limit | number | Non | 20 | Entreprises à retourner (1-100) |
sort_by | string | Non | last_seen | Tri : visits, last_seen, confidence |
industry | string | Non | — | Filtrer par secteur d'activité (ex : Technology) |
min_visits | number | Non | 1 | Nombre minimum de visites |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_b2b_companies",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"sort_by": "visits",
"min_visits": 3
}
}
}{
"companies": [
{
"name": "Acme Corp",
"domain": "acme.com",
"industry": "Technology",
"employee_count": 500,
"visit_count": 12,
"last_visit": "2026-03-05T16:00:00Z",
"confidence_score": 0.92
}
]
}15. get_revenue
Obtenir l'analyse des revenus avec totaux et ventilations.
Coût : 1 requête | Nécessite : Pro+ (flag de fonctionnalité revenueAttribution)
| Paramètre | Type | Obligatoire | Par Défaut | Description |
|---|---|---|---|---|
website_id | string | Oui | — | L'UUID du site Web |
time_range | string | Non | 30d | Plage temporelle : 24h, 7d, 30d, 90d, 1y |
group_by | string | Non | day | Regroupement : day, week, month, source |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_revenue",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"group_by": "source"
}
}
}{
"total_revenue": 12450.00,
"transaction_count": 89,
"avg_order_value": 139.89,
"currency": "USD",
"breakdown": [
{ "source": "google.com", "revenue": 5200.00, "transactions": 38 },
{ "source": "Direct", "revenue": 4100.00, "transactions": 30 },
{ "source": "twitter.com", "revenue": 1850.00, "transactions": 12 }
]
}16. get_performance_metrics
Obtenir les Core Web Vitals et les métriques de performance avec les ventilations de percentile.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Par Défaut | Description |
|---|---|---|---|---|
website_id | string | Oui | — | L'UUID du site Web |
time_range | string | Non | 7d | Plage temporelle : 24h, 7d, 30d, 90d, 1y |
page_url | string | Non | — | Filtrer une page spécifique |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_performance_metrics",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
}
}{
"lcp": { "p50": 1800, "p75": 2200, "p90": 3100, "rating": "good", "sample_count": 450 },
"cls": { "p50": 0.05, "p75": 0.08, "p90": 0.15, "rating": "good", "sample_count": 450 },
"inp": { "p50": 120, "p75": 180, "p90": 280, "rating": "good", "sample_count": 420 },
"fcp": { "p50": 1200, "p75": 1600, "p90": 2400, "rating": "good", "sample_count": 450 },
"ttfb": { "p50": 350, "p75": 600, "p90": 950, "rating": "good", "sample_count": 450 }
}Seuils de notation :
| Métrique | Bon | Nécessite une Amélioration | Mauvais |
|---|---|---|---|
| LCP | ≤ 2500ms | ≤ 4000ms | > 4000ms |
| CLS | ≤ 0.1 | ≤ 0.25 | > 0.25 |
| INP | ≤ 200ms | ≤ 500ms | > 500ms |
| FCP | ≤ 1800ms | ≤ 3000ms | > 3000ms |
| TTFB | ≤ 800ms | ≤ 1800ms | > 1800ms |
Outils Insights IA
17. get_insights
Récupérer les insights générés par IA et exploitables sur la performance du site Web.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Par Défaut | Description |
|---|---|---|---|---|
website_id | string | Oui | — | L'UUID du site Web |
severity | string | Non | — | Filtre : critical, warning, info |
status | string | Non | active | Filtre : active, acknowledged, resolved |
limit | number | Non | 10 | Max d'insights (1-50) |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_insights",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"severity": "critical"
}
}
}{
"website": { "id": "2ea8af07-...", "domain": "example.com" },
"insights": [
{
"id": "i1...",
"title": "Bounce rate spike on /pricing",
"description": "Bounce rate on the pricing page increased by 35% compared to last week. Consider reviewing recent changes.",
"severity": "critical",
"type": "bounce_rate",
"created_at": "2026-03-05T08:00:00Z"
}
],
"summary": { "total": 3, "critical": 1, "warning": 1, "info": 1 }
}18. get_anomalies
Récupérer les anomalies détectées — déviations inhabituelles des métriques.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Par Défaut | Description |
|---|---|---|---|---|
website_id | string | Oui | — | L'UUID du site Web |
severity | string | Non | — | Filtre : critical, warning, info |
metric | string | Non | — | Filtrer par métrique (ex : visitors, bounce_rate) |
limit | number | Non | 10 | Max d'anomalies (1-50) |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_anomalies",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
}
}{
"website": { "id": "2ea8af07-...", "domain": "example.com" },
"anomalies": [
{
"id": "a1...",
"metric_name": "visitors",
"expected_value": 180,
"actual_value": 45,
"deviation_pct": -75.0,
"severity": "critical",
"detected_at": "2026-03-04T00:00:00Z",
"is_resolved": false
}
],
"total": 2
}19. get_weekly_digest
Générer un résumé hebdomadaire de performance comparant cette semaine à la semaine dernière.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
website_id | string | Oui | L'UUID du site Web |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_weekly_digest",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
}
}{
"website": { "id": "2ea8af07-...", "domain": "example.com" },
"this_week": { "visitors": 1250, "pageviews": 3400, "sessions": 980, "bounce_rate": 42.5, "avg_duration": 185 },
"last_week": { "visitors": 1100, "pageviews": 3100, "sessions": 870, "bounce_rate": 44.8, "avg_duration": 170 },
"changes": {
"visitors": 13.64,
"pageviews": 9.68,
"sessions": 12.64,
"bounce_rate": -5.13,
"avg_duration": 8.82
},
"top_pages": [
{ "path": "/", "views": 520 },
{ "path": "/pricing", "views": 180 }
],
"top_countries": [
{ "country": "US", "visitors": 520 },
{ "country": "DE", "visitors": 180 }
]
}20. get_recommendations
Obtenir les recommandations d'optimisation alimentées par IA.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Par Défaut | Description |
|---|---|---|---|---|
website_id | string | Oui | — | L'UUID du site Web |
category | string | Non | — | Filtre : performance, engagement, conversion, seo |
limit | number | Non | 5 | Max de recommandations (1-20) |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_recommendations",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"category": "performance"
}
}
}{
"website": { "id": "2ea8af07-...", "domain": "example.com" },
"recommendations": [
{
"id": "r1...",
"title": "Optimize Largest Contentful Paint",
"description": "Your LCP p75 is 3200ms (needs improvement). Consider lazy-loading below-fold images and preloading critical assets.",
"category": "performance",
"priority": "high",
"impact": "Improving LCP to under 2500ms could reduce bounce rate by ~10%"
}
],
"total": 3
}Outils de gestion
21. list_websites
Lister tous les sites web accessibles par la clé API actuelle.
Coût : 1 requête
Cet outil ne prend aucun paramètre. Les clés d'accès complet voient tous les sites web de l'équipe ; les clés restreintes à un site ne voient que leur site assigné.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_websites",
"arguments": {}
}
}{
"websites": [
{
"id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"domain": "example.com",
"name": "My Website",
"tracking_code": "zv_abc123",
"is_active": true,
"created_at": "2025-06-15T10:00:00Z"
}
],
"total": 1
}22. create_goal
Créer un objectif de conversion personnalisé. Nécessite le mode lecture-écriture.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
website_id | string | Oui | L'UUID du site web |
name | string | Oui | Nom de l'objectif (max 100 caractères) |
goal_type | string | Oui | url_match, element_click, ou custom_event |
url_pattern | string | Pour url_match | Motif d'URL à correspondre |
url_match_type | string | Non | exact, contains, starts_with, ends_with, regex (par défaut : contains) |
css_selector | string | Pour element_click | Sélecteur CSS de l'élément |
event_name | string | Pour custom_event | Nom d'événement personnalisé à suivre |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_goal",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "Newsletter Signup",
"goal_type": "url_match",
"url_pattern": "/thank-you",
"url_match_type": "contains"
}
}
}{
"goal": {
"id": "g1a2b3c4-...",
"name": "Newsletter Signup",
"goal_type": "url_match",
"is_active": true,
"created_at": "2026-03-06T12:00:00Z"
}
}23. manage_funnel
Créer ou mettre à jour un entonnoir de conversion. Nécessite le mode lecture-écriture.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
website_id | string | Oui | L'UUID du site web |
name | string | Oui | Nom de l'entonnoir |
steps | array | Oui | 2-10 étapes ordonnées (voir ci-dessous) |
funnel_id | string | Non | UUID de l'entonnoir existant à mettre à jour |
Objet étape :
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
step_name | string | Oui | Nom à afficher |
step_type | string | Oui | url_match, element_click, custom_event |
url_pattern | string | Non | Motif d'URL (pour url_match) |
url_match_type | string | Non | exact, contains, starts_with, ends_with, regex |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "manage_funnel",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "Checkout Flow",
"steps": [
{ "step_name": "Product Page", "step_type": "url_match", "url_pattern": "/products" },
{ "step_name": "Add to Cart", "step_type": "custom_event", "url_pattern": "add_to_cart" },
{ "step_name": "Checkout", "step_type": "url_match", "url_pattern": "/checkout" },
{ "step_name": "Purchase Complete", "step_type": "url_match", "url_pattern": "/order-confirmation" }
]
}
}
}{
"funnel": {
"id": "f1a2b3c4-...",
"name": "Checkout Flow",
"steps_count": 4,
"created_at": "2026-03-06T12:00:00Z"
}
}24. export_data
Exporter les données analytiques au format JSON ou CSV.
Coût : 1 requête | Nécessite : Scale+ (drapeau de fonctionnalité dataExport)
| Paramètre | Type | Obligatoire | Par défaut | Description |
|---|---|---|---|---|
website_id | string | Oui | — | L'UUID du site web |
format | string | Non | json | Format de sortie : csv, json |
metrics | array | Non | ["visitors","pageviews","unique_visitors"] | Métriques à inclure |
time_range | string | Non | 30d | Période : 7d, 30d, 90d, 1y |
Métriques disponibles : visitors, pageviews, unique_visitors, bounce_rate, avg_session_duration
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "export_data",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"format": "csv",
"metrics": ["visitors", "pageviews", "bounce_rate"],
"time_range": "30d"
}
}
}{
"format": "csv",
"time_range": "30d",
"data": "date,visitors,page_views,bounce_rate\n2026-02-04,120,340,42.5\n2026-02-05,135,380,41.2\n...",
"total_rows": 30
}25. get_api_usage
Vérifier l'utilisation actuelle de la clé API et le quota restant.
Coût : 1 requête
Cet outil ne prend aucun paramètre.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_api_usage",
"arguments": {}
}
}{
"api_key": {
"id": "key_abc123",
"name": "Production Key",
"permission": "full_access"
},
"usage": {
"monthly_requests": 1250,
"total_requests": 8400
},
"mcp": {
"queries_today": 15,
"queries_limit": 500,
"reset_at": "2026-03-07T00:00:00Z"
},
"subscription": {
"tier": "Scale"
}
}26. get_website_settings
Obtenir la configuration et les paramètres pour un site web.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
website_id | string | Oui | L'UUID du site web |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_website_settings",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
}
}{
"website": {
"id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"domain": "example.com",
"name": "My Website",
"is_active": true,
"created_at": "2025-06-15T10:00:00Z"
},
"settings": {
"public_dashboard_enabled": false,
"public_dashboard_url": null,
"cookieless_tracking": false,
"tracking_code": "zv_abc123",
"timezone": "America/New_York",
"data_retention_days": 730,
"allowed_domains": ["example.com", "www.example.com"]
}
}27. update_website_settings
Mettre à jour les paramètres de configuration du site web. Nécessite le mode lecture-écriture.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
website_id | string | Oui | L'UUID du site web |
name | string | Non | Nom à afficher du site web |
timezone | string | Non | Fuseau horaire IANA (par ex. America/New_York) |
allowed_domains | array | Non | Liste des domaines autorisés pour le script de suivi |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "update_website_settings",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "My Updated Website",
"timezone": "Europe/Berlin",
"allowed_domains": ["example.com", "www.example.com", "staging.example.com"]
}
}
}{
"website": {
"id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "My Updated Website",
"timezone": "Europe/Berlin",
"allowed_domains": ["example.com", "www.example.com", "staging.example.com"],
"updated_at": "2026-03-15T10:00:00Z"
}
}28. toggle_public_dashboard
Activer ou désactiver le partage du tableau de bord public pour un site web. Nécessite le mode lecture-écriture.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
website_id | string | Oui | L'UUID du site web |
enabled | boolean | Oui | true pour activer, false pour désactiver |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "toggle_public_dashboard",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"enabled": true
}
}
}{
"public_dashboard": {
"enabled": true,
"url": "https://app.zenovay.com/public/2ea8af07-xxxx",
"globe_url": "https://app.zenovay.com/globe/2ea8af07-xxxx"
}
}29. toggle_cookieless_tracking
Activer ou désactiver le mode de suivi sans cookies. Nécessite le mode lecture-écriture. Plan Pro ou supérieur.
Lorsque activé, le suivi utilise SHA-256(IP_subnet + UA + daily_salt) pour l'identification du visiteur au lieu de cookies ou localStorage.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
website_id | string | Oui | L'UUID du site web |
enabled | boolean | Oui | true pour activer, false pour désactiver |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "toggle_cookieless_tracking",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"enabled": true
}
}
}{
"cookieless_tracking": {
"enabled": true,
"method": "server_side_hashing",
"updated_at": "2026-03-15T10:00:00Z"
}
}Le suivi sans cookies est entièrement conforme au RGPD. Aucun cookie ou localStorage n'est utilisé. L'identification du visiteur est calculée côté serveur à l'aide d'un sel rotatif quotidien.
30. get_tracking_code
Obtenir l'extrait de code de suivi pour un site web. Utilisez cela pour récupérer la balise script à installer sur votre site.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
website_id | string | Oui | L'UUID du site web |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_tracking_code",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
}
}{
"tracking_code": "zv_abc123",
"script_tag": "<script defer data-website-id=\"zv_abc123\" src=\"https://api.zenovay.com/tracker.js\"></script>",
"cookieless_script_tag": "<script defer data-website-id=\"zv_abc123\" data-cookieless=\"true\" src=\"https://api.zenovay.com/tracker.js\"></script>"
}31. regenerate_tracking_code
Générer un nouveau code de suivi pour un site web. Nécessite le mode lecture-écriture.
Cela invalide le code de suivi précédent. Vous devez mettre à jour la balise script sur votre site web après la régénération.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
website_id | string | Oui | L'UUID du site web |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "regenerate_tracking_code",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
}
}{
"tracking_code": "zv_def456",
"previous_code": "zv_abc123",
"script_tag": "<script defer data-website-id=\"zv_def456\" src=\"https://api.zenovay.com/tracker.js\"></script>",
"regenerated_at": "2026-03-15T10:00:00Z"
}32. list_goals
Lister tous les objectifs pour un site web avec leur statut actuel et leurs taux de conversion.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Par défaut | Description |
|---|---|---|---|---|
website_id | string | Oui | — | L'UUID du site web |
include_inactive | boolean | Non | false | Inclure les objectifs désactivés |
time_range | string | Non | 30d | Période pour les statistiques de conversion : 7d, 30d, 90d, 1y |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_goals",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"include_inactive": true
}
}
}{
"goals": [
{
"id": "g1a2b3c4-...",
"name": "Newsletter Signup",
"goal_type": "url_match",
"url_pattern": "/thank-you",
"is_active": true,
"completions": 145,
"conversion_rate": 3.82,
"created_at": "2026-01-15T10:00:00Z"
},
{
"id": "g5d6e7f8-...",
"name": "Old Promo Banner",
"goal_type": "element_click",
"css_selector": "#promo-cta",
"is_active": false,
"completions": 0,
"conversion_rate": 0,
"created_at": "2025-11-01T08:00:00Z"
}
],
"total": 2
}33. update_goal
Mettre à jour la configuration d'un objectif existant. Nécessite le mode lecture-écriture.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
website_id | string | Oui | L'UUID du site web |
goal_id | string | Oui | L'UUID de l'objectif |
name | string | Non | Nom d'objectif mis à jour |
url_pattern | string | Non | Motif d'URL mis à jour |
url_match_type | string | Non | exact, contains, starts_with, ends_with, regex |
css_selector | string | Non | Sélecteur CSS mis à jour |
event_name | string | Non | Nom d'événement mis à jour |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "update_goal",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"goal_id": "g1a2b3c4-...",
"name": "Newsletter Signup v2",
"url_pattern": "/signup-complete"
}
}
}{
"goal": {
"id": "g1a2b3c4-...",
"name": "Newsletter Signup v2",
"goal_type": "url_match",
"url_pattern": "/signup-complete",
"is_active": true,
"updated_at": "2026-03-15T10:00:00Z"
}
}34. delete_goal
Supprimer définitivement un objectif. Nécessite le mode lecture-écriture.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
website_id | string | Oui | L'UUID du site web |
goal_id | string | Oui | L'UUID de l'objectif à supprimer |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "delete_goal",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"goal_id": "g5d6e7f8-..."
}
}
}{
"deleted": true,
"goal_id": "g5d6e7f8-..."
}35. toggle_goal
Activer ou désactiver un objectif sans le supprimer. Nécessite le mode lecture-écriture.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
website_id | string | Oui | L'UUID du site web |
goal_id | string | Oui | L'UUID de l'objectif |
is_active | boolean | Oui | true pour activer, false pour désactiver |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "toggle_goal",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"goal_id": "g1a2b3c4-...",
"is_active": false
}
}
}{
"goal": {
"id": "g1a2b3c4-...",
"name": "Newsletter Signup v2",
"is_active": false,
"updated_at": "2026-03-15T10:00:00Z"
}
}36. list_funnels
Lister tous les entonnoirs pour un site web.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
website_id | string | Oui | L'UUID du site web |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_funnels",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
}
}{
"funnels": [
{
"id": "f1a2b3c4-...",
"name": "Signup Flow",
"steps_count": 4,
"created_at": "2026-01-15T10:00:00Z"
},
{
"id": "f5d6e7f8-...",
"name": "Checkout Flow",
"steps_count": 5,
"created_at": "2026-02-01T14:30:00Z"
}
],
"total": 2
}37. delete_funnel
Supprimer définitivement un entonnoir. Nécessite le mode lecture-écriture.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
website_id | string | Oui | L'UUID du site web |
funnel_id | string | Oui | L'UUID de l'entonnoir à supprimer |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "delete_funnel",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"funnel_id": "f5d6e7f8-..."
}
}
}{
"deleted": true,
"funnel_id": "f5d6e7f8-..."
}38. delete_website
Supprimer définitivement un site web et toutes ses données analytiques. Nécessite le mode lecture-écriture et une clé d'accès complet.
Cette action est irréversible. Toutes les données analytiques, objectifs, entonnoirs et paramètres pour ce site web seront supprimés définitivement.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
website_id | string | Oui | L'UUID du site web à supprimer |
confirm | boolean | Oui | Doit être true pour confirmer la suppression |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "delete_website",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"confirm": true
}
}
}{
"deleted": true,
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"domain": "example.com"
}49. create_website
Créer un nouveau site web à suivre. Nécessite le mode lecture-écriture et une clé d'accès complet.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
domain | string | Oui | Le domaine du site web (par ex. docs.example.com) |
name | string | Non | Nom à afficher (par défaut : le domaine) |
timezone | string | Non | Fuseau horaire IANA (par défaut : UTC) |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_website",
"arguments": {
"domain": "docs.example.com",
"name": "Documentation Site",
"timezone": "America/New_York"
}
}
}{
"website": {
"id": "3fb9bg08-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"domain": "docs.example.com",
"name": "Documentation Site",
"tracking_code": "zv_ghi789",
"is_active": true,
"created_at": "2026-03-15T10:00:00Z"
},
"script_tag": "<script defer data-website-id=\"zv_ghi789\" src=\"https://api.zenovay.com/tracker.js\"></script>"
}Outils de paramètres
39. add_ip_exclusion
Ajouter une adresse IP ou une plage CIDR à la liste d'exclusion. Les visiteurs provenant des IP exclues ne seront pas suivis. Nécessite le mode lecture-écriture.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
website_id | string | Oui | L'UUID du site web |
ip_address | string | Oui | Adresse IP ou plage CIDR (par ex. 192.168.1.0/24) |
label | string | Non | Étiquette descriptive (par ex. « Réseau de bureau ») |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "add_ip_exclusion",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"ip_address": "203.0.113.0/24",
"label": "Office network"
}
}
}{
"exclusion": {
"id": "exc_ip_1...",
"type": "ip",
"ip_address": "203.0.113.0/24",
"label": "Office network",
"created_at": "2026-03-15T10:00:00Z"
}
}40. remove_ip_exclusion
Supprimer une adresse IP de la liste d'exclusion. Nécessite le mode lecture-écriture.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
website_id | string | Oui | L'UUID du site web |
exclusion_id | string | Oui | L'UUID d'exclusion à supprimer |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "remove_ip_exclusion",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"exclusion_id": "exc_ip_1..."
}
}
}{
"deleted": true,
"exclusion_id": "exc_ip_1..."
}41. add_path_exclusion
Ajouter un motif de chemin d'URL à exclure du suivi. Les pages correspondant au motif ne généreront pas d'événements analytiques. Nécessite le mode lecture-écriture.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
website_id | string | Oui | L'UUID du site web |
path_pattern | string | Oui | Motif de chemin d'URL à exclure (par ex. /admin/*, /internal/health) |
match_type | string | Non | exact, starts_with, contains, regex (par défaut : starts_with) |
label | string | Non | Étiquette descriptive |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "add_path_exclusion",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"path_pattern": "/admin",
"match_type": "starts_with",
"label": "Admin panel"
}
}
}{
"exclusion": {
"id": "exc_path_1...",
"type": "path",
"path_pattern": "/admin",
"match_type": "starts_with",
"label": "Admin panel",
"created_at": "2026-03-15T10:00:00Z"
}
}42. remove_path_exclusion
Supprimer une exclusion de chemin. Nécessite le mode lecture-écriture.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
website_id | string | Oui | L'UUID du site web |
exclusion_id | string | Oui | L'UUID d'exclusion à supprimer |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "remove_path_exclusion",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"exclusion_id": "exc_path_1..."
}
}
}{
"deleted": true,
"exclusion_id": "exc_path_1..."
}43. list_exclusions
Lister toutes les exclusions d'IP et de chemin pour un site web.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
website_id | string | Oui | L'UUID du site web |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_exclusions",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
}
}{
"ip_exclusions": [
{
"id": "exc_ip_1...",
"ip_address": "203.0.113.0/24",
"label": "Office network",
"created_at": "2026-03-15T10:00:00Z"
}
],
"path_exclusions": [
{
"id": "exc_path_1...",
"path_pattern": "/admin",
"match_type": "starts_with",
"label": "Admin panel",
"created_at": "2026-03-15T10:00:00Z"
}
],
"total_ip": 1,
"total_path": 1
}44. get_notification_settings
Obtenir les préférences de notification pour l'équipe actuelle.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
website_id | string | Oui | L'UUID du site web |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_notification_settings",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
}
}{
"notifications": {
"weekly_digest_email": true,
"anomaly_alerts": true,
"anomaly_threshold": "warning",
"goal_completion_alerts": false,
"uptime_alerts": true,
"email_recipients": ["[email protected]"]
}
}45. update_notification_settings
Mettre à jour les préférences de notification. Nécessite le mode lecture-écriture.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
website_id | string | Oui | L'UUID du site web |
weekly_digest_email | boolean | Non | Activer/désactiver le résumé hebdomadaire |
anomaly_alerts | boolean | Non | Activer/désactiver les alertes d'anomalie |
anomaly_threshold | string | Non | Sévérité minimale : info, warning, critical |
goal_completion_alerts | boolean | Non | Activer/désactiver les notifications d'achèvement d'objectif |
uptime_alerts | boolean | Non | Activer/désactiver les alertes de surveillance de disponibilité |
email_recipients | array | Non | Liste des adresses e-mail à notifier |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "update_notification_settings",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"anomaly_alerts": true,
"anomaly_threshold": "critical",
"goal_completion_alerts": true,
"email_recipients": ["[email protected]", "[email protected]"]
}
}
}{
"notifications": {
"weekly_digest_email": true,
"anomaly_alerts": true,
"anomaly_threshold": "critical",
"goal_completion_alerts": true,
"uptime_alerts": true,
"email_recipients": ["[email protected]", "[email protected]"],
"updated_at": "2026-03-15T10:00:00Z"
}
}Outils d'équipe
46. get_team_members
Lister tous les membres de votre équipe. Nécessite une clé d'accès complet.
Coût : 1 requête
Cet outil ne prend aucun paramètre.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_team_members",
"arguments": {}
}
}{
"team": {
"id": "team_abc123",
"name": "Acme Corp"
},
"members": [
{
"id": "usr_1...",
"email": "[email protected]",
"name": "Jane Admin",
"role": "owner",
"joined_at": "2025-06-01T10:00:00Z"
},
{
"id": "usr_2...",
"email": "[email protected]",
"name": "John Dev",
"role": "member",
"joined_at": "2025-08-15T14:00:00Z"
}
],
"total": 2
}47. invite_team_member
Inviter un nouveau membre à votre équipe par e-mail. Nécessite le mode lecture-écriture, une clé d'accès complet, et un plan Pro ou supérieur.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
email | string | Oui | Adresse e-mail à inviter |
role | string | Non | Rôle : member (par défaut) ou admin |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "invite_team_member",
"arguments": {
"email": "[email protected]",
"role": "member"
}
}
}{
"invitation": {
"id": "inv_1...",
"email": "[email protected]",
"role": "member",
"status": "pending",
"invited_at": "2026-03-15T10:00:00Z",
"expires_at": "2026-03-22T10:00:00Z"
}
}48. remove_team_member
Supprimer un membre de votre équipe. Nécessite le mode lecture-écriture et une clé d'accès complet.
Vous ne pouvez pas supprimer le propriétaire de l'équipe. Le membre perdra immédiatement l'accès à tous les sites web de l'équipe.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
member_id | string | Oui | L'identifiant utilisateur du membre à supprimer |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "remove_team_member",
"arguments": {
"member_id": "usr_2..."
}
}
}{
"removed": true,
"member_id": "usr_2...",
"email": "[email protected]"
}Outils de clé API
50. list_api_keys
Lister toutes les clés API pour l'équipe actuelle. Renvoie les métadonnées de la clé (pas les valeurs des clés elles-mêmes).
Coût : 1 requête
Cet outil ne prend aucun paramètre.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_api_keys",
"arguments": {}
}
}{
"api_keys": [
{
"id": "key_1...",
"name": "Production Key",
"prefix": "zv_prod_",
"type": "full_access",
"mcp_enabled": true,
"mcp_mode": "read_write",
"created_at": "2026-01-15T10:00:00Z",
"last_used_at": "2026-03-15T09:30:00Z"
}
],
"total": 1
}51. create_api_key
Créer une nouvelle clé API. Nécessite le mode lecture-écriture.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
name | string | Oui | Nom à afficher pour la clé |
type | string | Oui | full_access ou site_access |
website_id | string | Non | Obligatoire pour les clés site_access |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_api_key",
"arguments": {
"name": "Staging Key",
"type": "site_access",
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
}
}{
"api_key": {
"id": "key_2...",
"name": "Staging Key",
"key": "zv_stg_xxxxxxxxxxxxxxxx",
"type": "site_access",
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"created_at": "2026-03-15T10:00:00Z"
},
"message": "Save this key — it will not be shown again."
}La valeur de la clé API complète n'est renvoyée qu'une seule fois au moment de la création. Conservez-la de manière sécurisée.
52. revoke_api_key
Révoquer (supprimer) une clé API. Nécessite le mode lecture-écriture.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
key_id | string | Oui | L'identifiant de la clé API à révoquer |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "revoke_api_key",
"arguments": {
"key_id": "key_2..."
}
}
}{
"revoked": true,
"key_id": "key_2...",
"name": "Staging Key"
}53. get_api_key_details
Obtenir des informations détaillées sur une clé API spécifique.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
key_id | string | Oui | L'identifiant de la clé API |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_api_key_details",
"arguments": {
"key_id": "key_1..."
}
}
}{
"api_key": {
"id": "key_1...",
"name": "Production Key",
"prefix": "zv_prod_",
"type": "full_access",
"mcp_enabled": true,
"mcp_mode": "read_write",
"mcp_permissions": {
"analytics": true,
"advanced": true,
"ai_insights": true,
"management": true,
"settings": true,
"api_keys": false,
"uptime": true
},
"created_at": "2026-01-15T10:00:00Z",
"last_used_at": "2026-03-15T09:30:00Z",
"total_requests": 1247
}
}54. update_api_key_permissions
Mettre à jour les permissions MCP pour une clé API. Nécessite le mode lecture-écriture.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
key_id | string | Oui | L'identifiant de la clé API |
mcp_enabled | boolean | Non | Activer ou désactiver l'accès MCP |
mcp_mode | string | Non | read_only ou read_write |
permissions | object | Non | Bascules de groupe de fonctionnalités (par ex. {"analytics": true, "management": false}) |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "update_api_key_permissions",
"arguments": {
"key_id": "key_1...",
"mcp_mode": "read_write",
"permissions": {
"analytics": true,
"advanced": true,
"ai_insights": true,
"management": true,
"settings": false
}
}
}
}{
"updated": true,
"key_id": "key_1...",
"mcp_mode": "read_write",
"mcp_permissions": {
"analytics": true,
"advanced": true,
"ai_insights": true,
"management": true,
"settings": false
}
}Outils de disponibilité
55. list_uptime_monitors
Lister tous les moniteurs de disponibilité pour l'équipe actuelle.
Coût : 1 requête
Cet outil ne nécessite aucun paramètre.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_uptime_monitors",
"arguments": {}
}
}{
"monitors": [
{
"id": "mon_1...",
"url": "https://example.com",
"name": "Production Site",
"interval": 300,
"status": "up",
"uptime_30d": 99.98,
"last_checked_at": "2026-03-15T09:55:00Z"
}
],
"total": 1
}56. get_uptime_status
Obtenir le statut actuel et le temps de réponse pour un moniteur spécifique.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
monitor_id | string | Oui | L'UUID du moniteur |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_uptime_status",
"arguments": {
"monitor_id": "mon_1..."
}
}
}{
"monitor": {
"id": "mon_1...",
"url": "https://example.com",
"status": "up",
"response_time_ms": 142,
"status_code": 200,
"uptime_24h": 100.0,
"uptime_7d": 99.99,
"uptime_30d": 99.98,
"last_checked_at": "2026-03-15T09:55:00Z",
"last_incident_at": "2026-03-10T03:22:00Z"
}
}57. create_uptime_monitor
Créer un nouveau moniteur de disponibilité. Nécessite le mode lecture_écriture.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
url | string | Oui | L'URL à monitorer |
name | string | Non | Nom d'affichage (par défaut le hostname de l'URL) |
interval | number | Non | Intervalle de vérification en secondes (par défaut : 300) |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_uptime_monitor",
"arguments": {
"url": "https://api.example.com/health",
"name": "API Health",
"interval": 60
}
}
}{
"monitor": {
"id": "mon_2...",
"url": "https://api.example.com/health",
"name": "API Health",
"interval": 60,
"status": "pending",
"created_at": "2026-03-15T10:00:00Z"
}
}58. delete_uptime_monitor
Supprimer un moniteur de disponibilité. Nécessite le mode lecture_écriture.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
monitor_id | string | Oui | L'UUID du moniteur à supprimer |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "delete_uptime_monitor",
"arguments": {
"monitor_id": "mon_2..."
}
}
}{
"deleted": true,
"monitor_id": "mon_2..."
}59. get_uptime_history
Obtenir l'historique de disponibilité et le journal des incidents pour un moniteur.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
monitor_id | string | Oui | L'UUID du moniteur |
time_range | string | Non | Plage temporelle : 24h, 7d, 30d, 90d (par défaut : 30d) |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_uptime_history",
"arguments": {
"monitor_id": "mon_1...",
"time_range": "7d"
}
}
}{
"monitor_id": "mon_1...",
"uptime_percentage": 99.99,
"total_checks": 2016,
"failed_checks": 1,
"incidents": [
{
"id": "inc_1...",
"started_at": "2026-03-10T03:22:00Z",
"resolved_at": "2026-03-10T03:27:00Z",
"duration_seconds": 300,
"status_code": 503,
"reason": "Service Unavailable"
}
],
"avg_response_time_ms": 156
}Outils de gestion de site web (60-64)
60. update_website_name
Mettre à jour le nom d'affichage d'un site web. Nécessite le mode lecture_écriture.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
website_id | string | Oui | L'UUID du site web |
name | string | Oui | Nouveau nom d'affichage |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "update_website_name",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "Production Website"
}
}
}{
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "Production Website",
"updated_at": "2026-03-15T10:00:00Z"
}61. update_website_timezone
Mettre à jour le fuseau horaire d'un site web. Affecte la façon dont les analyses quotidiennes sont agrégées. Nécessite le mode lecture_écriture.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
website_id | string | Oui | L'UUID du site web |
timezone | string | Oui | Fuseau horaire IANA (p. ex. America/New_York, Europe/London) |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "update_website_timezone",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"timezone": "Europe/London"
}
}
}{
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"timezone": "Europe/London",
"updated_at": "2026-03-15T10:00:00Z"
}62. update_website_domain
Mettre à jour le domaine d'un site web. Nécessite le mode lecture_écriture.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
website_id | string | Oui | L'UUID du site web |
domain | string | Oui | Nouveau domaine (p. ex. example.com) |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "update_website_domain",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"domain": "new.example.com"
}
}
}{
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"domain": "new.example.com",
"updated_at": "2026-03-15T10:00:00Z"
}63. pause_tracking
Mettre en pause temporairement le suivi des analyses pour un site web. Aucun nouvel événement ne sera enregistré. Nécessite le mode lecture_écriture.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
website_id | string | Oui | L'UUID du site web |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "pause_tracking",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
}
}{
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"tracking_active": false,
"paused_at": "2026-03-15T10:00:00Z"
}64. resume_tracking
Reprendre le suivi des analyses pour un site web en pause. Nécessite le mode lecture_écriture.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
website_id | string | Oui | L'UUID du site web |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "resume_tracking",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
}
}{
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"tracking_active": true,
"resumed_at": "2026-03-15T10:00:00Z"
}Outils de rapports (65-69)
65. schedule_report
Planifier un rapport d'analyse récurrent à envoyer par e-mail. Nécessite le mode lecture_écriture.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
website_id | string | Oui | L'UUID du site web |
frequency | string | Oui | daily, weekly, ou monthly |
recipients | array | Oui | Liste des adresses e-mail |
metrics | array | Non | Métriques spécifiques à inclure (par défaut : toutes) |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "schedule_report",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"frequency": "weekly",
"recipients": ["[email protected]", "[email protected]"]
}
}
}{
"report": {
"id": "rpt_1...",
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"frequency": "weekly",
"recipients": ["[email protected]", "[email protected]"],
"next_send_at": "2026-03-22T08:00:00Z",
"created_at": "2026-03-15T10:00:00Z"
}
}66. get_report_schedule
Obtenir la configuration du rapport planifié pour un site web.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
website_id | string | Oui | L'UUID du site web |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_report_schedule",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
}
}{
"reports": [
{
"id": "rpt_1...",
"frequency": "weekly",
"recipients": ["[email protected]", "[email protected]"],
"next_send_at": "2026-03-22T08:00:00Z",
"last_sent_at": "2026-03-15T08:00:00Z"
}
],
"total": 1
}67. cancel_report
Annuler un rapport planifié. Nécessite le mode lecture_écriture.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
report_id | string | Oui | L'ID du calendrier de rapport à annuler |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "cancel_report",
"arguments": {
"report_id": "rpt_1..."
}
}
}{
"cancelled": true,
"report_id": "rpt_1..."
}68. get_export_history
Obtenir l'historique des exportations de données pour un site web.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
website_id | string | Oui | L'UUID du site web |
limit | number | Non | Résultats maximum (par défaut : 20) |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_export_history",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"limit": 5
}
}
}{
"exports": [
{
"id": "exp_1...",
"format": "csv",
"time_range": "30d",
"status": "completed",
"file_size_bytes": 245760,
"created_at": "2026-03-14T15:00:00Z"
}
],
"total": 1
}69. get_data_retention
Obtenir la politique de rétention des données pour un site web en fonction du plan actuel.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
website_id | string | Oui | L'UUID du site web |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_data_retention",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
}
}{
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"plan": "pro",
"analytics_retention_days": 730,
"heatmap_retention_days": 60,
"session_replay_retention_days": 60,
"oldest_data_at": "2024-03-15T00:00:00Z"
}Outils de revenu et données (70-75)
70. set_revenue_currency
Définir la devise d'affichage par défaut du revenu pour un site web. Utilise les codes de devise ISO 4217. Nécessite le mode lecture_écriture.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
website_id | string | Oui | L'UUID du site web |
currency | string | Oui | Code de devise ISO 4217 (p. ex. USD, EUR, GBP, CHF, JPY) |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "set_revenue_currency",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"currency": "EUR"
}
}
}{
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"currency": "EUR",
"message": "Revenue currency set to EUR"
}71. get_revenue_settings
Obtenir les paramètres liés aux revenus pour un site web, y compris la devise configurée et les mappages de champs.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
website_id | string | Oui | L'UUID du site web |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_revenue_settings",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
}
}{
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"currency": "EUR",
"revenue_field_mappings": null
}72. add_allowed_domain
Ajouter un domaine à la liste blanche CORS. Seuls les domaines de la liste blanche peuvent envoyer des données de suivi à ce site web. Nécessite le mode lecture_écriture.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
website_id | string | Oui | L'UUID du site web |
domain | string | Oui | Domaine à ajouter à la liste blanche (p. ex. example.com, staging.example.com) |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "add_allowed_domain",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"domain": "staging.example.com"
}
}
}{
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"domain": "staging.example.com",
"allowed_domains": ["example.com", "staging.example.com"],
"total": 2
}73. remove_allowed_domain
Retirer un domaine de la liste blanche CORS. Nécessite le mode lecture_écriture.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
website_id | string | Oui | L'UUID du site web |
domain | string | Oui | Domaine à retirer de la liste blanche |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "remove_allowed_domain",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"domain": "staging.example.com"
}
}
}{
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"removed": "staging.example.com",
"allowed_domains": ["example.com"],
"total": 1
}74. list_allowed_domains
Lister tous les domaines de la liste blanche CORS pour un site web.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
website_id | string | Oui | L'UUID du site web |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_allowed_domains",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
}
}{
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"allowed_domains": ["example.com", "staging.example.com"],
"total": 2
}75. request_data_deletion
Supprimer toutes les données d'un visiteur spécifique sur un site web. Utilisé pour la conformité au RGPD (droit à l'oubli). Cette action est irréversible. Nécessite le mode lecture_écriture.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
website_id | string | Oui | L'UUID du site web |
visitor_id | string | Oui | L'UUID du visiteur dont les données doivent être supprimées |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "request_data_deletion",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"visitor_id": "vis_abc123..."
}
}
}{
"message": "Visitor data deleted successfully",
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"visitor_id": "vis_abc123...",
"records_deleted": 47,
"deleted_at": "2026-03-15T10:00:00Z"
}Cela supprime définitivement toutes les données du visiteur, y compris les pages vues, les sessions et les événements. Cette action ne peut pas être annulée.
Exemples de flux de travail multi-étapes
Ces exemples montrent des chaînes complètes de requête/réponse pour les tâches courantes. Chaque étape utilise le format JSON-RPC ci-dessus.
Rapport de trafic hebdomadaire
Un flux de travail de rapport typique : découvrez les sites web, puis récupérez les statistiques des visiteurs, les pages populaires et les sources de trafic.
Étape 1 — Découvrez vos sites web :
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_websites",
"arguments": {}
}
}{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [{
"type": "text",
"text": "[{"id": "ws_abc123", "domain": "zenovay.com", "name": "Zenovay"}]"
}]
}
}Étape 2 — Obtenir un aperçu des visiteurs :
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "get_visitors",
"arguments": {
"website_id": "ws_abc123",
"time_range": "7d"
}
}
}Étape 3 — Obtenir les pages populaires :
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "get_top_pages",
"arguments": {
"website_id": "ws_abc123",
"time_range": "7d",
"limit": 10
}
}
}Étape 4 — Obtenir les sources de trafic :
{
"jsonrpc": "2.0",
"id": 4,
"method": "tools/call",
"params": {
"name": "get_traffic_sources",
"arguments": {
"website_id": "ws_abc123",
"time_range": "7d"
}
}
}Coût total : 4 requêtes (1 + 1 + 1 + 1)
Audit de performance
Identifiez les problèmes de performance, les erreurs et obtenez des recommandations IA.
Étape 1 — Lister les sites web (même chose que ci-dessus, obtenez website_id)
Étape 2 — Vérifier les Core Web Vitals :
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "get_performance_metrics",
"arguments": {
"website_id": "ws_abc123",
"time_range": "7d"
}
}
}Étape 3 — Vérifier les erreurs :
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "get_errors",
"arguments": {
"website_id": "ws_abc123",
"time_range": "7d",
"limit": 20
}
}
}Étape 4 — Obtenir les recommandations IA :
{
"jsonrpc": "2.0",
"id": 4,
"method": "tools/call",
"params": {
"name": "get_recommendations",
"arguments": {
"website_id": "ws_abc123"
}
}
}Coût total : 4 requêtes (1 + 1 + 1 + 1)
Vérification rapide de l'état
Vérification rapide du quota restant et des visiteurs en direct actuels — idéal au début d'une session.
Étape 1 — Vérifier le quota restant :
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_api_usage",
"arguments": {}
}
}Étape 2 — Vérifier les visiteurs en temps réel :
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "get_realtime_visitors",
"arguments": {
"website_id": "ws_abc123"
}
}
}Coût total : 2 requêtes (1 + 1)
Comparaison semaine contre semaine
Comparez les métriques de cette semaine par rapport à la semaine dernière pour identifier les tendances.
Étape 1 — Lister les sites web (obtenez website_id)
Étape 2 — Comparer les périodes :
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "compare_periods",
"arguments": {
"website_id": "ws_abc123",
"current_period": "7d",
"previous_period": "7d"
}
}
}Étape 3 — Détecter les anomalies :
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "get_anomalies",
"arguments": {
"website_id": "ws_abc123",
"time_range": "7d"
}
}
}Coût total : 3 requêtes (1 + 1 + 1)
Configuration et paramétrage du site web
Configurer un nouveau site web avec exclusions et suivi sans cookies.
Étape 1 — Créer le site web :
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_website",
"arguments": {
"domain": "docs.example.com",
"name": "Documentation"
}
}
}Étape 2 — Activer le suivi sans cookies :
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "toggle_cookieless_tracking",
"arguments": {
"website_id": "NEW_WEBSITE_ID",
"enabled": true
}
}
}Étape 3 — Exclure l'IP du bureau :
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "add_ip_exclusion",
"arguments": {
"website_id": "NEW_WEBSITE_ID",
"ip_address": "203.0.113.0/24",
"label": "Office network"
}
}
}Étape 4 — Obtenir le code de suivi pour l'installation :
{
"jsonrpc": "2.0",
"id": 4,
"method": "tools/call",
"params": {
"name": "get_tracking_code",
"arguments": {
"website_id": "NEW_WEBSITE_ID"
}
}
}Coût total : 4 requêtes (1 + 1 + 1 + 1)
Nouveaux outils
76. get_retention_data
Obtenir une analyse de cohorte de rétention montrant comment votre site web retient les visiteurs au fil du temps. Renvoie les données de cohorte groupées par la période de première visite du visiteur.
Coût : 1 requête | Nécessite : Pro+ (drapeau de fonctionnalité retentionAnalysis)
| Paramètre | Type | Obligatoire | Par défaut | Description |
|---|---|---|---|---|
website_id | string | Oui | — | L'UUID du site web |
time_range | string | Non | 30d | Plage temporelle : 7d, 30d, 90d, 1y |
cohort_size | string | Non | week | Groupement de cohorte : day, week, month |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_retention_data",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"time_range": "30d",
"cohort_size": "week"
}
}
}{
"cohorts": [
{
"period": "2026-02-17",
"visitors": 320,
"retention": [100, 42.5, 28.1, 18.4]
},
{
"period": "2026-02-24",
"visitors": 285,
"retention": [100, 38.9, 25.3]
},
{
"period": "2026-03-03",
"visitors": 310,
"retention": [100, 41.0]
},
{
"period": "2026-03-10",
"visitors": 295,
"retention": [100]
}
],
"cohort_size": "week",
"time_range": "30d",
"summary": {
"avg_week1_retention": 40.8,
"avg_week2_retention": 26.7,
"total_cohort_visitors": 1210
}
}77. get_user_profiles
Obtenir les profils de visiteurs avec l'historique des sessions et les données comportementales. Renvoie les enregistrements de visiteurs individuels avec leur historique de visite, les pages consultées et les métriques d'engagement.
Coût : 1 requête
| Paramètre | Type | Obligatoire | Par défaut | Description |
|---|---|---|---|---|
website_id | string | Oui | — | L'UUID du site web |
limit | number | Non | 20 | Profils à renvoyer (1-50) |
country_code | string | Non | — | Filtrer par code de pays ISO (p. ex. US, DE) |
min_sessions | number | Non | — | Nombre minimum de sessions |
time_range | string | Non | 30d | Plage temporelle : 7d, 30d, 90d, 1y |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_user_profiles",
"arguments": {
"website_id": "2ea8af07-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"min_sessions": 3,
"limit": 10
}
}
}{
"profiles": [
{
"visitor_id": "v_abc123",
"first_seen": "2026-02-15T09:30:00Z",
"last_seen": "2026-03-14T16:45:00Z",
"total_sessions": 8,
"total_pageviews": 34,
"avg_session_duration_ms": 185000,
"country": "US",
"city": "San Francisco",
"device_type": "desktop",
"browser": "Chrome",
"os": "macOS",
"top_pages": ["/", "/pricing", "/docs"],
"referrer": "google.com"
}
],
"total": 156
}Référence du protocole JSON-RPC
Toutes les requêtes MCP utilisent le format JSON-RPC 2.0 :
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "tool_name",
"arguments": { ... }
}
}Méthodes disponibles :
| Méthode | Description |
|---|---|
initialize | Poignée de main — renvoie les informations du serveur et les capacités |
tools/list | Lister tous les outils disponibles avec les schémas |
tools/call | Exécuter un outil |
ping | Vérification de l'état |
Format de réponse d'erreur :
{
"jsonrpc": "2.0",
"id": 1,
"error": {
"code": -32003,
"message": "Daily query limit exceeded. Upgrade at https://app.zenovay.com/settings"
}
}Voir Permissions & Limits pour la référence complète des codes d'erreur.