Журнал змін
Кожна зміна MCP-сервера на /mcp - інструменти, вхідні параметри, результати, ключі та ліміти, спершу найновіші. Що вважається несумісною зміною, викладено в його політиках.
Відповідь 401 від /mcp тепер містить WWW-Authenticate: ApiKey realm="mcp" замість Bearer realm="mcp", error="invalid_token", через який деякі клієнти починали шукати OAuth-сервер. Ключі, як і раніше, приймаються як Authorization: Bearer або X-API-Key.
Успішні виклики інструментів повертають structuredContent поруч із незміненим JSON-текстом, а tools/list публікує outputSchema для кожного інструмента, відповідь якого описано в контракті OpenAPI. Помилки залишаються простим текстом isError.
tools/list повертав по 15 інструментів на сторінку з nextCursor, тож клієнти, які ігнорують курсор, ніколи не бачили get_coin_markets, get_coin_technicals, get_liquidations_summary і calculate_dca. Тепер усі 19 інструментів надходять на одній сторінці.
get_exchange і get_exchange_trust_score від запуску повертали внутрішню помилку для кожної біржі. Тепер обидва відповідають; вхідні параметри та поля результату не змінилися.
Із 6 вересня вимкнений інструмент відповідав server_error (HTTP 500). Тепер він знову повертає endpoint_unavailable (HTTP 503): This endpoint is temporarily unavailable.
Для days було оголошено значення за замовчуванням і мінімум 0, але 0 завжди відхилявся. Тепер допустимі значення 1-365 без значення за замовчуванням; щоб отримати поточне значення, не передавайте параметр. Опис get_global_history тепер зазначає форму точки ({time, marketcap} або {time, volume}).
Новий /.well-known/mcp/server-card.json без автентифікації, із serverInfo і повними визначеннями інструментів, що кешується на годину, - для реєстрів, які не можуть сканувати сервер, що вимагає ключа. Його та /.well-known/mcp.json тепер можна читати з інших джерел (cross-origin).
/mcp тепер також приймає MCP-ключ як X-API-Key: YOUR_API_KEY - для клієнтів і шлюзів, які резервують Authorization для власного входу. Якщо цей заголовок надіслано, перевіряється лише ключ із нього, а вставлений префікс Bearer допускається.
Раніше невдала автентифікація обмежувалася 30 спробами на хвилину з однієї IP-адреси, після чого кожен ключ за цією IP-адресою відхилявся. Тепер один ключ може помилитися 30 разів на хвилину з однієї IP-адреси, а одна IP-адреса - 300 разів, і ключі, що успішно пройшли автентифікацію приблизно за останні 15 хвилин, не блокуються лімітом за IP-адресою.
get_fear_greed (основне значення та кожен інтервал) і get_global_market (fear_greed) тепер містять index - індекс 0-100, який показує Bitculator, - поруч із сирим score, а описи інструментів вказують моделі наводити саме index.
get_coin повертав повністю розмиту оцінку 0 для монет без обмеженої максимальної пропозиції. Тепер використовується загальна пропозиція, а якщо невідомо ні те, ні інше, значення дорівнює null.
get_top_movers тепер ранжує за самою зміною (раніше фактично за ринковою капіталізацією), а його losers виключають монети без руху на рівні 0,00. get_prices із symbols повертає одну монету на символ - активну з найвищим рейтингом, а get_global_market повідомляє домінування BTC і ETH як null, а не 0, коли ринкової капіталізації немає.
Інструкції initialize тепер кажуть, що ринкова капіталізація та обсяги - це JSON-числа (раніше йшлося про десяткові рядки), опис sort у list_exchanges наводить справжнє значення за замовчуванням -volume, а get_exchange_trust_score зазначає, що в біржі без рангу оцінка та розбивка дорівнюють null.
Сервер указано в /apis.json і /.well-known/api-catalog, у /.well-known/mcp.json з'явилися посилання status і changelog, а /status.json повідомляє про компонент mcp.
Несумісна зміна: /mcp приймає лише ключі, створені в MCP-консолі; ключі Data API та віджетів отримують 401. MCP має власні тарифи Free (2 500 викликів інструментів на місяць), Starter (50 000) і Pro (250 000) із 2, 5 і 10 слотами для ключів, власну оплату та власні обмеження інструментів за тарифами, а кожен обліковий запис починає з Free. Помилки квоти й тарифу тепер називають MCP-тариф.
Кожен JSON-RPC-запит до /mcp - initialize, tools/list, ping і виклики інструментів - тепер враховується в хвилинному ліміті тарифу (30, 60 або 120 на хвилину), а його перевищення повертає HTTP 429. До місячної квоти зараховуються лише виклики інструментів.
Серверні помилки інструментів містили внутрішнє повідомлення про помилку. Тепер вони мають вигляд server_error (HTTP 500): Internal server error.
Від запуску й до цього виправлення кожен виклик інструмента в продакшені повертав server_error, бо сервер відхиляв власний внутрішній запит даних як такий, що надійшов із недовіреного хоста.
/mcp запрацював через Streamable HTTP (лише POST) з 19 інструментами «лише для читання» для Claude, Cursor, VS Code та будь-якого MCP-клієнта - від search_coins і get_coin до calculate_dca, - які повертають ті самі дані, що й REST API. Він використовував ключі, тарифи та квоту Data API, де один виклик інструмента рахувався як один запит, а описував його /.well-known/mcp.json.
Про видалення чи перейменування інструмента або вхідного параметра оголошується тут щонайменше за шість місяців - див. політику застарівання. Картка сервера за адресою /.well-known/mcp.json посилається на цей журнал змін.