Серія «ШІ-агенти в AET» · частина 9 з 10 · жовтень 2026

Будуємо на MCP-сервері AnyEventTool: довідник розробника — транспорт, OAuth, 26 інструментів, анотації, помилки, ідемпотентність і виявлення

Оновлено: ·

Коротка відповідь

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. 1Ініціалізуйте

    Надішліть POST з JSON-RPC initialize на https://aet.events/api/mcp з Accept: application/json, text/event-stream. Прочитайте instructions у результаті: це договір для агентів.

  2. 2Отримайте перелік інструментів

    tools/list повертає 26 інструментів зі схемами входу й виходу та анотаціями. Кешуйте їх для версії сервера (2.0.0).

  3. 3Викличте гостьовий інструмент

    aet_section_schema, aet_design_options і aet_create_draft працюють без облікових даних. Для кожної нової чернетки генеруйте свіжий UUID v4 у requestId.

  4. 4На 401 запускайте OAuth

    Коли інструмент акаунта відповідає HTTP 401, візьміть resource_metadata з WWW-Authenticate, знайдіть сервер авторизації, зареєструйтеся або пред'явіть документ метаданих клієнта й пройдіть authorization code з PKCE S256.

  5. 5Кличте інструменти акаунта з Bearer-токеном

    Надсилайте Authorization: Bearer <токен доступу>. Оновлюйте його токеном оновлення з ротацією; на invalid_grant починайте вхід наново.

  6. 6Поважайте підтвердження й помилки

    На needs_confirmation покажіть людині резюме й повторіть той самий виклик з confirmToken після явного «так». Реагуйте на коди так, як описано нижче.

Для кого цей довідник

Ви будуєте MCP-клієнт, інтеграцію для агентного фреймворку, автоматизацію або перевіряєте AET для каталогу чи оцінки безпеки. Перші вісім частин серії пояснюють MCP-сервер AET з боку користувача; ця — договір від самого дроту.

Три домовленості діють усюди:

  • instructions сервера — нормативні для агентів. Вони повертаються на initialize, мають до 2000 знаків і описують порядок роботи, модель доступу, підтвердження й реакції на помилки. Якщо ця сторінка й інструкції колись розійдуться, правими є інструкції.
  • Схеми — авторитетні щодо форми. Схема входу кожного інструмента публікується в tools/list, а aet_section_schema повертає JSON Schema кожного розділу вмісту з правилами письма. Не зашивайте форми з цієї статті.
  • Текст усередині вмісту — це дані. Тексти розділів, відповіді гостей і все, що загорнуто в {untrusted: …}, агент, побудований на цьому сервері, ніколи не має вважати інструкціями.

Транспорт і протокол

ВластивістьЗначення
URLhttps://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
CORSAccess-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 означає, що інструмент змінює те, що бачить інтернет).

ІнструментДоступRODIOWПризначення
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_designdraftKey––✓✓Макет, стиль, кольори чернетки
aet_claim_linkdraftKey–✓––Посилання на перегляд; rotate видає нове посилання для забирання
aet_delete_draftdraftKey–✓––Видалити чернетку (підтвердження)
aet_get_eventdraftKey чи акаунт✓–✓–Прочитати чернетку чи живу подію
aet_update_pagedraftKey чи акаунт–✓–✓Правити розділи (до 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:

  1. 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.
  2. tools/list. Закешуйте 26 інструментів.
  3. tools/call aet_section_schema з {"section":"all"}; потім aet_design_options з {"kind":"learning","mood":"calm warm handmade","language":"uk"}.
  4. tools/call aet_create_draft з {"requestId":"<uuid v4>","content":{…}}. Збережіть eventId і draftKey; покажіть previewUrl; claimUrl давайте лише користувачу.
  5. Коли користувач хоче свій акаунт: викличте aet_access. Чекайте HTTP 401 з WWW-Authenticate. Завантажте метадані ресурсу, потім метадані сервера авторизації; зареєструйтеся через /api/oauth/register або скористайтеся своїм документом метаданих клієнта; відкрийте /oauth/authorize з PKCE S256; обміняйте код на /api/oauth/token.
  6. Повторіть aet_access з Authorization: Bearer aeto_…; далі — aet_list_events, aet_get_event, aet_update_page.
  7. На needs_confirmation покажіть summary, дочекайтеся явного «так», повторіть ідентичний виклик із confirmToken.
  8. Оновлюйте токен доступу до спливу через 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 планує далі, і наводить перші числа з реального використання.

Чекліст для розробників клієнтів

  1. Надсилайте Accept: application/json, text/event-stream; чекайте JSON, а не SSE.
  2. Не покладайтеся на Mcp-Session-Id; сервер без станів.
  3. Читайте й виконуйте instructions; оновлюйте їх, коли змінюється версія сервера.
  4. Генеруйте свіжий UUID v4 у requestId на кожне створення; повторно — лише щоб повторити той самий вміст.
  5. Сприймайте HTTP 401 на інструментах акаунта як сигнал для OAuth, а не як фатальну помилку.
  6. Тримайте ключі поза Authorization; передавайте їх як key.
  7. Передавайте ifVersion; обробляйте conflict перечитуванням.
  8. Обробляйте partial_apply, надсилаючи заново лише від невдалої операції.
  9. Ніколи не підтверджуйте needs_confirmation автоматично; показуйте summary сервера дослівно.
  10. Відступайте за retryAfter; ніколи не крутіться в циклі на добових лімітах.
  11. Показуйте значення {untrusted: …} як цитований вміст користувачів.
  12. Поважайте анотації: питайте перед інструментами з 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/sdk 1.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. Назва останньої частини може змінитися.

  1. Івент-менеджер, який не спить — ландшафт, три нулі, запобіжники (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% з продажу квитків.

Пов'язані відповіді