Серія «ШІ-агенти в AET» · частина 9 з 10 · жовтень 2026
Будуємо на MCP-сервері AnyEventTool: довідник розробника — транспорт, OAuth, 26 інструментів, анотації, помилки, ідемпотентність і виявлення
Оновлено: · Alex Ryk, засновник AnyEventTool
Коротка відповідь
MCP-сервер AnyEventTool — це публічний ендпоінт Streamable HTTP без станів за адресою https://aet.events/api/mcp. Він приймає лише POST і відповідає JSON; ідентифікатора сесії немає, а запит може пакувати до 5 повідомлень у межах 256 КБ. Сервер працює на офіційному TypeScript SDK для MCP версії 1.32 і узгоджує ревізії протоколу до 2025-11-25. Він віддає 26 інструментів. П'ятнадцять — лише для читання, одинадцять — для запису, і кожен має назву й усі чотири анотації MCP. Шістнадцять інструментів працюють без входу, зокрема гостьові чернетки. Десять інструментів акаунта повертають HTTP 401 із заголовком WWW-Authenticate, що вказує на метадані захищеного ресурсу, тож MCP-клієнти запускають OAuth 2.1 лише тоді, коли це потрібно. Вхід — це PKCE S256, публічні клієнти, динамічна реєстрація або документи метаданих клієнта, токен доступу на годину й 30-денний токен оновлення з ротацією. Альтернативою працює вставлений ключ aetk_ в аргументі key. Результати інструментів несуть структурований вміст плюс той самий JSON текстом. Помилки мають один спільний об'єкт — code, message, hint, field і retryAfter, — а інструкції сервера кажуть агентам, як реагувати на кожен код. Нові чернетки й події потребують свіжого UUID v4 у requestId, який усуває дублікати під час повторів протягом 10 хвилин. Незворотні дії повертають needs_confirmation і одноразовий токен, який має відпустити лише «так» людини. Файли виявлення: /.well-known/mcp.json, метадані OAuth, llms.txt, pricing.md і Markdown-версія кожної сторінки Learn.
Ключові факти
- Розкриття: опубліковано AnyEventTool (AET). Факти — з коду AET на 25 жовтня 2026 і з запитів до робочого ендпоінта того самого дня.
- Ендпоінт: https://aet.events/api/mcp — Streamable HTTP, без станів (без Mcp-Session-Id), відповіді JSON, лише POST; GET повертає 405. Тіло до 256 КБ, пакети до 5 повідомлень, близько 120 запитів на хвилину з однієї IP-адреси.
- Сервер: офіційний TypeScript SDK 1.32 (назва сервера anyeventtool, версія 2.0.0); ревізії протоколу узгоджуються до 2025-11-25. На initialize з 2025-06-18 робочий сервер відповів 2025-06-18.
- 26 інструментів: 15 лише для читання, 11 для запису; 16 без входу, 10 інструментів акаунта. Кожен оголошує title і readOnlyHint, destructiveHint, idempotentHint, openWorldHint.
- Лінива автентифікація: інструмент акаунта без облікових даних повертає HTTP 401 з WWW-Authenticate: Bearer resource_metadata="https://aet.events/.well-known/oauth-protected-resource", scope="events".
- OAuth 2.1: лише PKCE S256, публічні клієнти, DCR на /api/oauth/register або документи метаданих клієнта; області events і offline_access; доступ — 1 год, оновлення — 30 днів із ротацією.
- Помилки: спільний об'єкт {code, message, hint?, field?, retryAfter?} з isError: true; коди — validation, forbidden, not_found, conflict, partial_apply, needs_confirmation, rate_limited, plan_limit, moderation, idempotency_replay, idempotency_conflict, claimed, not_available і failed.
Покроково
- 1Ініціалізуйте
Надішліть POST з JSON-RPC initialize на https://aet.events/api/mcp з Accept: application/json, text/event-stream. Прочитайте instructions у результаті: це договір для агентів.
- 2Отримайте перелік інструментів
tools/list повертає 26 інструментів зі схемами входу й виходу та анотаціями. Кешуйте їх для версії сервера (2.0.0).
- 3Викличте гостьовий інструмент
aet_section_schema, aet_design_options і aet_create_draft працюють без облікових даних. Для кожної нової чернетки генеруйте свіжий UUID v4 у requestId.
- 4На 401 запускайте OAuth
Коли інструмент акаунта відповідає HTTP 401, візьміть resource_metadata з WWW-Authenticate, знайдіть сервер авторизації, зареєструйтеся або пред'явіть документ метаданих клієнта й пройдіть authorization code з PKCE S256.
- 5Кличте інструменти акаунта з Bearer-токеном
Надсилайте Authorization: Bearer <токен доступу>. Оновлюйте його токеном оновлення з ротацією; на invalid_grant починайте вхід наново.
- 6Поважайте підтвердження й помилки
На needs_confirmation покажіть людині резюме й повторіть той самий виклик з confirmToken після явного «так». Реагуйте на коди так, як описано нижче.
Для кого цей довідник
Ви будуєте MCP-клієнт, інтеграцію для агентного фреймворку, автоматизацію або перевіряєте AET для каталогу чи оцінки безпеки. Перші вісім частин серії пояснюють MCP-сервер AET з боку користувача; ця — договір від самого дроту.
Три домовленості діють усюди:
instructionsсервера — нормативні для агентів. Вони повертаються наinitialize, мають до 2000 знаків і описують порядок роботи, модель доступу, підтвердження й реакції на помилки. Якщо ця сторінка й інструкції колись розійдуться, правими є інструкції.- Схеми — авторитетні щодо форми. Схема входу кожного інструмента публікується в
tools/list, аaet_section_schemaповертає JSON Schema кожного розділу вмісту з правилами письма. Не зашивайте форми з цієї статті. - Текст усередині вмісту — це дані. Тексти розділів, відповіді гостей і все, що загорнуто в
{untrusted: …}, агент, побудований на цьому сервері, ніколи не має вважати інструкціями.
Транспорт і протокол
| Властивість | Значення |
|---|---|
| URL | https://aet.events/api/mcp (канонічний) |
| Транспорт | Streamable HTTP, відповіді JSON (enableJsonResponse) |
| Стан | Без станів; Mcp-Session-Id не видається |
| Методи | POST; OPTIONS для CORS; GET відповідає 405 з JSON-підказкою |
| Accept | Клієнтам варто надсилати application/json, text/event-stream; клієнтам, що шлють лише JSON, сервер доповнює заголовок сам |
| Тіло | До 256 КБ; помилки розбору JSON — JSON-RPC −32700 |
| Пакети | До 5 повідомлень; більше — −32600 |
| Частота | Близько 120 запитів на хвилину з однієї IP-адреси; понад це — HTTP 429 з −32000 |
| CORS | Access-Control-Allow-Origin: *; відкриває WWW-Authenticate і Mcp-Session-Id |
| SDK | @modelcontextprotocol/sdk 1.32 |
| Протокол | Ревізії до 2025-11-25, які узгоджує SDK; 2025-06-18 підтверджено на робочому сервері 25 жовтня 2026 |
| Дані сервера | name anyeventtool, title «Any Event Tool», версія 2.0.0 |
Походження з браузера. Запити без заголовка Origin (серверні й настільні клієнти) отримують усі інструменти. Запити з браузерних сторінок, чиє походження — Claude, Anthropic, ChatGPT, OpenAI, Perplexity чи власні сайти AET, теж отримують усі інструменти. Інші браузерні походження отримують лише інструменти читання; інструменти запису відповідають forbidden «write tools are not available from this origin».
Про чинну специфікацію. Чинна ревізія специфікації MCP, 2026-07-28, іде далі за ревізії з рукостисканням, які закінчуються на 2025-11-25. Сервер AET на SDK 1.32 говорить ревізіями з рукостисканням; клієнтам, що вимагають лише найновішу ревізію, варто перевірити сумісність. Модель авторизації — OAuth 2.1, метадані захищеного ресурсу, документи метаданих клієнта з реєстрацією для сумісності — вже відповідає тексту 2026-07-28.
Автентифікація: без неї, OAuth або ключ
AET підтримує три способи викликати інструменти, і всі три обробляє той самий сервер.
1. Без облікових даних. Шістнадцяти інструментам — відповіді, ціни, калькулятор комісій, пошук публічних подій, посилання на старт, можливості, бриф, плейбук, схема розділів, варіанти дизайну й інструменти гостьових чернеток — нічого не треба. Інструменти для чернеток приймають аргумент draftKey, який повертає aet_create_draft.
2. OAuth 2.1 (рекомендовано для акаунтів користувачів).
- Виявлення:
/.well-known/oauth-protected-resource(RFC 9728) повертаєresource: https://aet.events/api/mcp,authorization_servers: [https://aet.events], областіeventsіoffline_access, bearer лише в заголовку./.well-known/oauth-authorization-server(RFC 8414) перелічує ендпоінт авторизаціїhttps://aet.events/oauth/authorize, ендпоінт токенів/api/oauth/token, ендпоінт реєстрації/api/oauth/register,code_challenge_methods_supported: [S256],token_endpoint_auth_methods_supported: [none],client_id_metadata_document_supported: trueі мови інтерфейсу uk та en. - Реєстрація: динамічна реєстрація клієнта з
redirect_uris(https, loopback на будь-якому порту, схема застосунку відомого редактора чи схема у зворотному доменному записі), лише публічні клієнти; або документ метаданих клієнта — https-адреса якclient_id, яку завантажують з тайм-аутом 5 секунд, обмеженням 64 КБ і без переадресацій, і чийclient_idмає збігатися з адресою. - Авторизація: потік authorization code, обов'язковий PKCE S256,
stateдо 4096 знаків іredirect_uriдо 2048, областіeventsі за бажаннямoffline_access. Користувач входить в AET і обирає рівень доступу на екрані згоди AET. - Токени: коди авторизації — 10 хвилин, одноразові; токени доступу (
aeto_…) — 1 година; токени оновлення (aetr_…) — 30 днів, змінюються при кожному використанні; повторно використаний токен оновлення відкликає родину токенів; повторне використання коду відкликає токени, видані для цього гранту. Помилки — за RFC 6749 (invalid_grant,invalid_client,invalid_request,unsupported_grant_type). - Виклики:
Authorization: Bearer aeto_…. Сервер підставляє токен якkeyінструментів акаунта; передавати його аргументом не треба.
3. Вставлений ключ. Користувачі можуть створювати ключі (aetk_d_, aetk_s_, aetk_o_, aetk_a_ — за рівнем доступу) в AET і вставляти їх у чат. Передавайте ключ в аргументі key інструментів акаунта. Не кладіть його в Authorization: цей заголовок приймає лише токени доступу OAuth від AET, а все інше вважається відсутністю облікових даних.
Лінива автентифікація. Інструмент акаунта, викликаний без ключа чи чинного Bearer-токена, повертає HTTP 401 з WWW-Authenticate: Bearer resource_metadata="https://aet.events/.well-known/oauth-protected-resource", scope="events" і помилкою JSON-RPC −32001. Прострочений чи відкликаний токен отримує той самий 401 з повідомленням «The AET connection token is expired or revoked — reconnect AET.» Інструменти також оголошують securitySchemes у _meta: noauth для гостьових, noauth плюс oauth2 з областю events — для інструментів акаунта.
26 інструментів та їхні анотації
RO = readOnlyHint, D = destructiveHint, I = idempotentHint, OW = openWorldHint (true означає, що інструмент змінює те, що бачить інтернет).
| Інструмент | Доступ | RO | D | I | OW | Призначення |
|---|---|---|---|---|---|---|
aet_answer | без входу | ✓ | – | ✓ | – | Відповіді з AET Learn з джерелами |
aet_pricing | без входу | ✓ | – | ✓ | – | Плани й комісії |
aet_fee_calc | без входу | ✓ | – | ✓ | – | Порівняння комісій за квитки (ринок USD чи UAH) |
aet_search_events | без входу | ✓ | – | ✓ | – | Публічні майбутні події; чернетки виключено |
aet_start_event | без входу | ✓ | – | ✓ | – | Посилання, щоб створити подію вручну |
aet_capabilities | без входу | ✓ | – | ✓ | – | Що AET уміє й не вміє |
aet_brief | без входу | ✓ | – | ✓ | – | Що спитати перед збиранням (≤2 питання) |
aet_page_playbook | без входу | ✓ | – | ✓ | – | Плейбук для типу події |
aet_section_schema | без входу | ✓ | – | ✓ | – | JSON Schema й правила письма розділу |
aet_design_options | без входу | ✓ | – | ✓ | – | Три доречні макети з прев'ю |
aet_create_draft | без входу | – | – | – | ✓ | Створити гостьову чернетку |
aet_set_design | draftKey | – | – | ✓ | ✓ | Макет, стиль, кольори чернетки |
aet_claim_link | draftKey | – | ✓ | – | – | Посилання на перегляд; rotate видає нове посилання для забирання |
aet_delete_draft | draftKey | – | ✓ | – | – | Видалити чернетку (підтвердження) |
aet_get_event | draftKey чи акаунт | ✓ | – | ✓ | – | Прочитати чернетку чи живу подію |
aet_update_page | draftKey чи акаунт | – | ✓ | – | ✓ | Правити розділи (до 12 чи 40 операцій) |
aet_access | акаунт | ✓ | – | ✓ | – | Рівень цього підключення і його події |
aet_list_events | акаунт | ✓ | – | ✓ | – | Усі події з access true/false, по 50 на сторінку |
aet_create_event | акаунт | – | – | – | – | Створити приховану подію в акаунті |
aet_publish | акаунт | – | ✓ | – | ✓ | Опублікувати чи сховати (підтвердження) |
aet_set_event_design | акаунт | – | ✓ | ✓ | ✓ | Будь-яке налаштування дизайну, зображення за URL |
aet_undo | акаунт | – | ✓ | – | ✓ | Скасувати останню правку розділу |
aet_event_stats | акаунт | ✓ | – | ✓ | – | 22 метрики без персональних даних |
aet_dashboard_save | акаунт | – | ✓ | ✓ | – | Створити чи оновити дашборд |
aet_dashboard_list | акаунт | ✓ | – | ✓ | – | Дашборди події |
aet_dashboard_delete | акаунт | – | ✓ | – | – | Видалити дашборд (підтвердження) |
Анотації звірено зі сканером каталогу ChatGPT 20 жовтня 2026: openWorldHint позначає інструменти, що змінюють побачене відвідувачами; destructiveHint — інструменти, що можуть стерти чи перезаписати дані, зокрема ротацію посилання для забирання й перезапис дашборда. Більшість інструментів також оголошує outputSchema; п'ять публічних інструментів читання, старших за структурований вихід, повертають текст.
Результати й модель помилок
Успіх. Інструменти зі схемою виходу повертають structuredContent і той самий JSON, серіалізований у content[0].text, тож клієнти, що читають будь-що з цього, отримують ті самі дані.
Помилки. Збій на рівні інструмента повертає isError: true і об'єкт error:
{ "error": { "code": "rate_limited", "message": "too many changes with this connection", "hint": "Limit: 30 changes per minute…", "retryAfter": 60 } }
| Код | Що означає | Реакція клієнта |
|---|---|---|
validation | Значення не відповідає схемі; field його називає | Виправити значення; прочитати hint |
moderation | Текст не пройшов модерацію; field його називає | Переписати цей текст |
forbidden | Немає облікових даних для цього інструмента, неправильний формат ключа чи рівень доступу його не покриває | Викликати aet_access; попросити людину змінити рівень |
not_found | Такої чернетки чи події для цього викликача немає, або чернетка спливла | Перелічити події; запропонувати нову чернетку |
conflict | Подія чи чернетка змінилися після читання | Перечитати й повторити на свіжих даних |
partial_apply | Частину операцій пакета збережено; stoppedAt дає збій | Надіслати лише невдалу операцію й наступні |
needs_confirmation | Незворотна чи зовнішня дія; додано summary і confirmToken | Показати резюме; повторити той самий виклик із токеном після явного «так» |
rate_limited | Вичерпано ліміт; retryAfter у секундах | Повторити один раз, якщо ≤120 с; інакше зупинитися й сказати людині |
plan_limit | Місячний ліміт подій чи дашбордів | Сказати людині; підказка веде на ціни |
idempotency_replay | Той самий requestId і вміст протягом 10 хвилин (чернетки) | Скористатися поверненим посиланням на перегляд |
idempotency_conflict | Той самий requestId з іншим вмістом | Згенерувати новий UUID v4 |
claimed | Людина забрала чернетку у свій акаунт | Перейти на інструменти акаунта |
not_available | Операція, якої подія не підтримує, чи скасування, що вже небезпечне | Зробити зміну новою правкою |
failed | Тимчасова помилка; часто з retryAfter | Зачекати й повторити один раз |
Помилки транспорту — JSON-RPC: −32700 помилка розбору, −32600 завеликий пакет, −32000 перевищення частоти (HTTP 429), −32001 потрібна автентифікація (HTTP 401), −32603 внутрішня помилка.
Ідемпотентність, версії й атомарні пакети
Створення. aet_create_draft і aet_create_event вимагають requestId у форматі UUID v4. Повтор протягом 10 хвилин із тим самим id і вмістом не створює другого об'єкта: для подій відповідь — наявна подія з позначкою replay: true; для чернеток — помилка idempotency_replay з посиланням на перегляд. Ключ чернетки під час повтору не повертається, тож клієнту, що його загубив, варто створити нову чернетку з новим id. Дедуплікація чернеток прив'язана до адреси викликача, подій — до підключення.
Версії. Живі події мають rev, чернетки — version. Передавайте останнє прочитане значення як ifVersion в aet_update_page. Якщо об'єкт змінився, відповідь — conflict, і нічого не записується. Без ifVersion AET однаково записує лише якщо поля, які він зачіпає, не змінилися від його власного читання, і кілька разів повторює всередині.
Пакети. aet_update_page приймає 1–40 операцій для живих подій і до 12 для чернеток. Для живих подій кожна операція атомарна, а пакет зупиняється на першій невдачі, зберігаючи попередні операції; модерація проходить по всіх текстах до будь-якого застосування; підтвердження оцінюються до запису; лендинг перевіряється після пакета. Операції мають вигляд {section, op, id?, after?, value?}, де op — set, clear, addItem, updateItem, removeItem чи move. Нові елементи списків отримують id під час першого запису й повертаються в applied.
Підтвердження. needs_confirmation повертає confirmToken — HMAC-SHA256 над строком дії, інструментом, подією, відбитком точних операцій і підключенням, — чинний 10 хвилин і одноразовий. Повторіть ідентичний виклик із токеном. Токен витрачається лише тоді, коли незворотна зміна записується, тож повтор після конфлікту з тими самими операціями працює.
Ліміти, які має поважати клієнт
| Ліміт | Значення |
|---|---|
| Записи в акаунт | 30 на хвилину і 1000 на добу на підключення (закриті за замовчуванням) |
| Операцій за виклик | 40 для живих подій, 12 для чернеток |
| Гостьові чернетки | Типово 20 на добу на людину чи IP; 500 на перевірену платформу; 2000 загалом |
| Правки чернетки | 30 на хвилину, 200 на добу на чернетку |
| Ендпоінт | близько 120 запитів на хвилину з однієї IP-адреси |
| Дашборди | 20 на подію, по 12 віджетів |
| Список подій | 50 на сторінку з nextOffset |
| Реєстрації клієнтів | 30 на годину з IP поза перевіреними платформами |
| Ендпоінт токенів | 120 на хвилину з IP поза перевіреними платформами |
| Ключі | 10 активних, 20 створених на добу на акаунт |
Коли вичерпано добовий ліміт, retryAfter відраховує до півночі UTC. Будуйте відступ за retryAfter, а не за фіксованим розкладом, і ніколи не крутіться в циклі на добовому ліміті.
Машиночитне виявлення
| Ресурс | Що містить |
|---|---|
/.well-known/mcp.json | Картку сервера у форматі офіційного реєстру MCP: name com.anyeventtool/aet, назву, опис, версію 2.0.0, віддалений streamable-http на ендпоінті |
/.well-known/oauth-protected-resource | Метадані RFC 9728 |
/.well-known/oauth-authorization-server | Метадані RFC 8414 |
/llms.txt | Стислий опис продукту, плани, коли AET доречний, і розділ для ШІ-асистентів з MCP-ендпоінтом |
/llms-full.txt, /llms-full-uk.txt | Увесь вміст Learn текстом, англійською й українською |
/pricing.md | Плани, ліміти й комісії в Markdown з датою оновлення |
/{en,uk}/learn/{slug}.md | Кожна сторінка Learn, зокрема ця серія, у Markdown з канонічною адресою й датою оновлення |
В офіційному реєстрі MCP сервер поки не опубліковано; картка сервера для нього готова. AET подано в каталог конекторів Claude 19 жовтня 2026 і на рецензію застосунків ChatGPT 20 жовтня 2026; на дату статті обидві заявки чекали рецензії.
Мінімальний клієнт крок за кроком
Простими HTTP-кроками — послідовність, яку MCP-клієнт проходить з AET:
POST /api/mcpз{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"my-client","version":"1"}}}іAccept: application/json, text/event-stream. Збережітьinstructions.tools/list. Закешуйте 26 інструментів.tools/callaet_section_schemaз{"section":"all"}; потімaet_design_optionsз{"kind":"learning","mood":"calm warm handmade","language":"uk"}.tools/callaet_create_draftз{"requestId":"<uuid v4>","content":{…}}. ЗбережітьeventIdіdraftKey; покажітьpreviewUrl;claimUrlдавайте лише користувачу.- Коли користувач хоче свій акаунт: викличте
aet_access. Чекайте HTTP 401 зWWW-Authenticate. Завантажте метадані ресурсу, потім метадані сервера авторизації; зареєструйтеся через/api/oauth/registerабо скористайтеся своїм документом метаданих клієнта; відкрийте/oauth/authorizeз PKCE S256; обміняйте код на/api/oauth/token. - Повторіть
aet_accessзAuthorization: Bearer aeto_…; далі —aet_list_events,aet_get_event,aet_update_page. - На
needs_confirmationпокажітьsummary, дочекайтеся явного «так», повторіть ідентичний виклик ізconfirmToken. - Оновлюйте токен доступу до спливу через
grant_type=refresh_token; щоразу зберігайте новий токен оновлення.
Офіційні SDK для MCP роблять кроки 1, 2 і 5 за вас; Claude, ChatGPT, Claude Code, Cursor і Gemini CLI самі обробляють вхід (частина 2).
Рішення, які варто перейняти
Деякі рішення в сервері AET корисні й поза подіями:
- Платформа не генерує вміст. Пише асистент; сервер перевіряє, модерує й верстає. Гранична вартість сторінки для вендора — виклик модерації й кілька записів, і саме це робить гостьові чернетки доступними (частина 3).
- Лінива автентифікація. Більша частина цінності досяжна без входу; 401 з'являється лише на першому інструменті акаунта, тож онбординг — це одна адреса.
- Підтвердження, написані сервером. Резюме, яке схвалює людина, сервер будує з самої зміни, а токен прив'язаний до точних операцій, тож клієнт не може переказати небезпечну дію як безневинну.
- Поелементні операції з версіями. Списки правляться за id з
ifVersion, тож агенти й люди можуть правити ту саму сторінку, не перезаписуючи одне одного. - Позначка недовірених даних у самих даних, а не лише в тексті. Значення, написані гостями, приходять загорнутими, тож модель бачить межу в структурі, а не лише в системній підказці.
- Один об'єкт помилки, одна реакція на код. Інструкції зіставляють кожен код з однією правильною реакцією, і обробка помилок стає пошуком у таблиці, а не здогадками.
- Усе, що потрібно клієнту, — у
tools/listтаinstructions. Для правильного агента не потрібна жодна зовнішня документація.
Відомі прогалини й сигнали дорожньої карти
Чесно, станом на 25 жовтня 2026:
- Немає вебхуків чи підписок на події; клієнти опитують через
aet_get_eventчиaet_event_stats. - Не відкрито MCP prompts чи resources; усе — інструменти.
- Немає потокового прогресу; відповіді — окремі JSON-об'єкти.
- Немає часу завершення подій;
datetime.endповертає попередження. - Зображення приймаються лише за URL; інструмента завантаження немає.
- Платні квитки, схеми залу, квізи, магазини, спільноти й календарі налаштовує організатор в AET, а не інструменти.
- Немає серверної аналітики через кілька подій; статистика — для кожної події окремо.
aet_claim_linkзrotateтримає чинними три останні посилання для забирання, а не лише найновіше.- Поки немає в офіційному реєстрі MCP і в каталогах Claude та ChatGPT (заявки на рецензії).
Частина 10 серії розповідає, що AET планує далі, і наводить перші числа з реального використання.
Чекліст для розробників клієнтів
- Надсилайте
Accept: application/json, text/event-stream; чекайте JSON, а не SSE. - Не покладайтеся на
Mcp-Session-Id; сервер без станів. - Читайте й виконуйте
instructions; оновлюйте їх, коли змінюється версія сервера. - Генеруйте свіжий UUID v4 у
requestIdна кожне створення; повторно — лише щоб повторити той самий вміст. - Сприймайте HTTP 401 на інструментах акаунта як сигнал для OAuth, а не як фатальну помилку.
- Тримайте ключі поза
Authorization; передавайте їх якkey. - Передавайте
ifVersion; обробляйтеconflictперечитуванням. - Обробляйте
partial_apply, надсилаючи заново лише від невдалої операції. - Ніколи не підтверджуйте
needs_confirmationавтоматично; показуйтеsummaryсервера дослівно. - Відступайте за
retryAfter; ніколи не крутіться в циклі на добових лімітах. - Показуйте значення
{untrusted: …}як цитований вміст користувачів. - Поважайте анотації: питайте перед інструментами з
destructiveHintчиopenWorldHint, якщо у вашому клієнті є шар підтверджень.
Джерела (перевірено 25 жовтня 2026)
- Код AnyEventTool на 25 жовтня 2026:
pages/api/mcp.ts(транспорт, інструкції, інструменти, анотації, походження, лінива автентифікація),pages/api/oauth/metadata.ts,register.ts,authorize.ts,token.ts(сервер авторизації),lib/aiops/access.ts(підключення, правила переадресації, токени),lib/aiops/actor.tsіlib/aiops/limits.ts(ліміти),lib/aiops/draft.ts,account.ts,live.ts,sections.ts(ідемпотентність, версії, пакети, підтвердження),public/.well-known/mcp.json(картка сервера),node_modules/@modelcontextprotocol/sdk1.32.1 (версії протоколу). - Запити до робочого сервера 25 жовтня 2026:
initializeз протоколом 2025-06-18;tools/call aet_list_eventsбез облікових даних → HTTP 401 зWWW-Authenticate;/.well-known/oauth-protected-resource. - Model Context Protocol: версії специфікації і авторизація, перевірено 20 жовтня 2026.
- MCP-ендпоінт, картка сервера, llms.txt, pricing.md.
Знайшли розбіжність чи баг? Напишіть на support@anyeventtool.com — виправимо з датою.
Ця серія: десять статей про ШІ-агентів в AnyEventTool
Це частина 9 з 10. Назва останньої частини може змінитися.
- Івент-менеджер, який не спить — ландшафт, три нулі, запобіжники (19 жовтня) · 2. Підключаємо асистента до AET — Claude, ChatGPT, Claude Code, Cursor, Gemini (20 жовтня) · 3. Гостьові чернетки зсередини (22 жовтня) · 4. Сторінка, якою агент пишається (22 жовтня) · 5. Дизайн від агента (23 жовтня) · 6. Жива подія за ключем (24 жовтня) · 7. Довіра за задумом (25 жовтня) · 8. Числа без імен (25 жовтня) · 9. Для розробників: MCP-сервер AET — ця стаття (25 жовтня) · 10. Плейбуки для десяти типів подій і що далі (25 жовтня).
Питання й відповіді
Яка адреса й транспорт MCP-сервера AnyEventTool?
https://aet.events/api/mcp — Streamable HTTP з відповідями JSON, без станів (без ідентифікатора сесії), лише POST. Запит може пакувати до 5 повідомлень у межах 256 КБ.
Які версії протоколу MCP підтримує AET?
Сервер працює на офіційному TypeScript SDK 1.32 і узгоджує ревізії з рукостисканням до 2025-11-25; 2025-06-18 підтверджено на робочому сервері 25 жовтня 2026.
Як працює автентифікація на MCP-сервері AET?
Гостьовим інструментам вона не потрібна. Інструменти акаунта використовують OAuth 2.1 з PKCE S256, публічні клієнти, динамічну реєстрацію чи документи метаданих клієнта — або вставлений ключ aetk_ в аргументі key. Без облікових даних вони повертають HTTP 401 з WWW-Authenticate, що вказує на метадані захищеного ресурсу.
Скільки інструментів відкриває MCP-сервер AET?
26: 15 лише для читання і 11 для запису. 16 працюють без входу (зокрема гостьові чернетки); 10 потребують акаунта користувача. Кожен інструмент оголошує назву й усі чотири анотації MCP.
Як уникнути дублікатів чернеток чи подій під час повторів?
Надсилайте свіжий UUID v4 у requestId з кожним створенням. Повтор із тим самим id і вмістом протягом 10 хвилин повертає наявний об'єкт замість створення нового.
Як клієнту обробляти needs_confirmation?
Показати людині резюме сервера, дочекатися явного «так» і повторити ідентичний виклик із поверненим confirmToken. Токен прив'язаний до точних операцій, діє 10 хвилин і використовується один раз.
Чи підтримує MCP-сервер AET вебхуки чи потокову передачу?
Станом на 25 жовтня 2026 — ні. Відповіді — окремі JSON-об'єкти, а клієнти опитують через aet_get_event чи aet_event_stats. MCP prompts чи resources немає; усе — інструменти.
Чи є AET в офіційному реєстрі MCP?
Поки ні. Картку сервера у форматі реєстру опубліковано на /.well-known/mcp.json. Заявки в каталоги Claude (19 жовтня 2026) і ChatGPT (20 жовтня 2026) на 25 жовтня 2026 чекали рецензії.
Спробувати AET на своїй події
Безкоштовно: сторінка події, реєстрація, QR-квитки й чек-ін. 0% з продажу квитків.
Пов'язані відповіді
- Довіра за задумом: як AnyEventTool тримає ШІ-агентів у безпеці на ваших сторінках подій
- Плейбуки ШІ-агента для десяти типів подій — і що далі для ШІ-агентів в AnyEventTool
- Як підключити Claude, ChatGPT, Claude Code, Cursor чи Gemini до AnyEventTool — для людей і їхніх ШІ-агентів
- Жива подія в руках ШІ-агента: поелементні правки, реєстрація, матеріали, підтвердження і скасування в AnyEventTool
- Числа без імен: статистика й дашборди події, які ШІ-агент читає в AnyEventTool, — без персональних даних гостей
- Івент-менеджер, який не спить: що змінюється, коли ваш ШІ-асистент може зібрати, оформити й вести сторінку події