Changelog
Chaque changement apporté au serveur MCP sur /mcp - outils, entrées, résultats, clés et limites - du plus récent au plus ancien. Ce qui constitue un changement cassant est défini dans ses politiques.
Une réponse 401 de /mcp porte désormais WWW-Authenticate: ApiKey realm="mcp" au lieu de Bearer realm="mcp", error="invalid_token", qui poussait certains clients à chercher un serveur OAuth. Les clés sont toujours acceptées sous la forme Authorization: Bearer ou X-API-Key.
Les appels d'outils réussis renvoient structuredContent à côté du texte JSON inchangé, et tools/list publie un outputSchema pour chaque outil dont la réponse est documentée dans le contrat OpenAPI. Les erreurs restent du simple texte isError.
tools/list renvoyait 15 outils par page avec un nextCursor, si bien que les clients qui ignorent le curseur ne voyaient jamais get_coin_markets, get_coin_technicals, get_liquidations_summary ni calculate_dca. Les 19 outils arrivent désormais sur une seule page.
get_exchange et get_exchange_trust_score renvoyaient une erreur interne pour chaque exchange depuis le lancement. Les deux répondent désormais ; les entrées et les champs de résultat sont inchangés.
Depuis le 6 septembre, un outil désactivé répondait server_error (HTTP 500). Il renvoie de nouveau endpoint_unavailable (HTTP 503): This endpoint is temporarily unavailable.
days était annoncé avec une valeur par défaut et un minimum de 0, mais 0 a toujours été refusé. Il va désormais de 1 à 365, sans valeur par défaut ; omettez-le pour obtenir la lecture actuelle. La description de get_global_history indique désormais la forme des points ({time, marketcap} ou {time, volume}).
Nouveau : /.well-known/mcp/server-card.json, sans authentification, avec serverInfo et les définitions complètes des outils, mis en cache pendant une heure, pour les annuaires qui ne peuvent pas analyser un serveur protégé par clé. Ce fichier et /.well-known/mcp.json peuvent désormais être lus en cross-origin.
/mcp accepte désormais aussi la clé MCP sous la forme X-API-Key: YOUR_API_KEY, pour les clients et les passerelles qui réservent Authorization à leur propre connexion. Lorsque cet en-tête est envoyé, c'est la seule clé vérifiée, et un préfixe Bearer collé par erreur est toléré.
Les échecs d'authentification étaient plafonnés à 30 tentatives par minute et par IP, après quoi chaque clé derrière cette IP était refusée. Désormais, une clé peut échouer 30 fois par minute depuis une même IP, et une IP 300 fois, et les clés authentifiées au cours des 15 dernières minutes environ ne sont pas bloquées par le plafond par IP.
get_fear_greed (la lecture principale et chaque intervalle) et get_global_market (fear_greed) incluent désormais index - l'indice de 0 à 100 affiché sur Bitculator - à côté du score brut, et les descriptions des outils demandent au modèle de citer index.
get_coin renvoyait une valorisation entièrement diluée de 0 pour les coins sans offre maximale plafonnée. Elle se rabat désormais sur l'offre totale et vaut null lorsqu'aucune des deux n'est connue.
get_top_movers classe désormais selon la variation elle-même (auparavant, de fait, selon la capitalisation) et ses losers excluent les coins restés à 0,00. get_prices avec symbols renvoie un coin par symbole, l'actif le mieux classé, et get_global_market indique la dominance BTC et ETH à null plutôt qu'à 0 lorsqu'il n'y a pas de capitalisation.
Les instructions d'initialize indiquent désormais que les capitalisations et les volumes sont des nombres JSON (elles parlaient de chaînes décimales), la description de sort de list_exchanges donne la vraie valeur par défaut -volume, et get_exchange_trust_score précise qu'un exchange non classé a un score et une décomposition à null.
Le serveur est référencé dans /apis.json et /.well-known/api-catalog, /.well-known/mcp.json a gagné les liens status et changelog, et /status.json rapporte un composant mcp.
Changement cassant : /mcp n'accepte que les clés créées dans la console MCP ; les clés Data API et widget reçoivent 401. MCP a ses propres forfaits Free (2 500 appels d'outils par mois), Starter (50 000) et Pro (250 000) avec 2, 5 et 10 emplacements de clés, sa propre facturation et ses propres restrictions de forfait par outil, et chaque compte démarre sur Free. Les erreurs de quota et de forfait nomment désormais le forfait MCP.
Chaque requête JSON-RPC vers /mcp - initialize, tools/list, ping et les appels d'outils - compte désormais dans la limite de rafale du forfait, de 30, 60 ou 120 par minute, et la dépasser renvoie HTTP 429. Seuls les appels d'outils comptent dans le quota mensuel.
Les erreurs serveur des outils incluaient le message d'erreur interne. Elles indiquent désormais server_error (HTTP 500): Internal server error.
Du lancement jusqu'à ce correctif, chaque appel d'outil en production renvoyait server_error, car le serveur rejetait sa propre requête de données interne comme provenant d'un hôte non fiable.
/mcp a été mis en ligne via Streamable HTTP (POST uniquement) avec 19 outils en lecture seule pour Claude, Cursor, VS Code et tout client MCP, de search_coins et get_coin à calculate_dca, renvoyant les mêmes données que l'API REST. Il utilisait les clés, les forfaits et le quota de la Data API, un appel d'outil comptant pour une requête, et /.well-known/mcp.json le décrivait.
La suppression ou le renommage d'un outil ou d'une entrée est annoncé ici au moins six mois à l'avance - voir la politique de dépréciation. La carte de serveur sur /.well-known/mcp.json renvoie vers ce changelog.