Довідник MCP-сервера
Revolink підтримує Model Context Protocol (MCP): відкритий стандарт, що дає AI-асистентам (Claude, Cursor, Windsurf та іншим) змогу працювати із зовнішніми сервісами як з інструментами.
Після налаштування ваш AI-асистент зможе створювати посилання, змінювати правила маршрутизації й отримувати аналітику, а вам не доведеться виходити з чату.
Ендпоінт
POST https://api.revolink.link/apiv1/mcp
Транспорт: Streamable HTTP (без стану, один запит на виклик інструмента).
Автентифікація
MCP Revolink підтримує два способи підключення. Оберіть той, що вам підходить:
| API-ключ | OAuth 2.0 | |
|---|---|---|
| Найкраще для | Скриптів, інструментів розробника, автоматизації | claude.ai у вебі, застосунків, команд |
| Налаштування | Згенеруйте ключ і вставте в конфігурацію | Просто вставте URL і підтвердьте доступ |
| Керування ключем | Ви керуєте ключем | Не потрібне: усе відбувається автоматично |
Спосіб 1 — API-ключ
Згенеруйте ключ у Профіль → Інтеграції, увімкніть потрібні дозволи (scopes) MCP і передайте його в конфігурації клієнта. Інструкції для кожного клієнта дивіться нижче в розділі Налаштування.
Помилки:
| HTTP | Причина |
|---|---|
401 | Відсутній або недійсний API-ключ, або термін дії ключа минув |
403 | Ключ існує, але для нього не ввімкнено жодного дозволу MCP |
Спосіб 2 — OAuth 2.0
Для клієнтів на кшталт claude.ai (веб), що підтримують OAuth: ключ не потрібен. Ви один раз підтверджуєте доступ, а клієнт робить усе решту автоматично.
Як підключитися (claude.ai у вебі):
- Перейдіть у Settings → Integrations у claude.ai.
- Натисніть Add MCP server.
- Вставте:
https://api.revolink.link/apiv1/mcp - Натисніть Connect: вас буде перенаправлено до Revolink, щоб підтвердити доступ.
- Готово. Інструменти Revolink тепер доступні у вашому чаті.
Щоб будь-коли скасувати доступ: Профіль → Підключені застосунки → Скасувати.
Дозволи MCP
Дозволи MCP відокремлені від звичайних дозволів API. Ключ може мати повний доступ до API, але нульовий доступ до MCP, або навпаки. Доступні дозволи (scopes):
| Дозвіл | Що відкриває |
|---|---|
links:read | list_links, get_link |
links:write | create_link, update_link |
links:delete | delete_link |
links:bulk | bulk_create_links |
analytics:read | get_link_analytics, get_workspace_analytics |
Для автентифікації за API-ключем дозволи налаштовуються для кожного ключа в застосунку: Профіль → Інтеграції → MCP.
Для OAuth дозволи запитує клієнт, а користувач підтверджує їх під час процесу надання згоди.
Налаштування
API-ключ: крок за кроком
- Перейдіть у Профіль → Інтеграції в застосунку Revolink.
- Натисніть Створити API-ключ.
- Дайте ключу назву (наприклад,
Claude MCP). - У розділі MCP увімкніть дозволи, які хочете надати. Кожен дозвіл вмикається окремо.
- Натисніть Створити й скопіюйте ключ: він показується лише один раз.
Ключ із увімкненим MCP, але без вибраних дозволів MCP, буде відхилено на ендпоінті MCP з помилкою
403.
Налаштування AI-клієнта (API-ключ)
Claude Desktop (claude_desktop_config.json)
Claude Desktop використовує транспорт stdio. Скористайтеся мостом mcp-remote, щоб підключитися до HTTP-ендпоінта Revolink.
{
"mcpServers": {
"revolink": {
"command": "npx",
"args": [
"mcp-remote",
"https://api.revolink.link/apiv1/mcp",
"--header",
"X-Api-Key:YOUR_API_KEY"
]
}
}
}
Відкрийте через: меню Claude → Settings → Developer → Edit Config. Після збереження перезапустіть Claude Desktop.
Claude Code (CLI)
claude mcp add --transport http revolink https://api.revolink.link/apiv1/mcp \
--header "X-Api-Key: YOUR_API_KEY"
Або додайте до .claude/settings.json:
{
"mcpServers": {
"revolink": {
"type": "http",
"url": "https://api.revolink.link/apiv1/mcp",
"headers": {
"X-Api-Key": "YOUR_API_KEY"
}
}
}
}
Cursor / Windsurf (.cursor/mcp.json or .codeium/windsurf/mcp_config.json)
{
"mcpServers": {
"revolink": {
"url": "https://api.revolink.link/apiv1/mcp",
"headers": {
"X-Api-Key": "YOUR_API_KEY"
}
}
}
}
VS Code (.vscode/mcp.json)
{
"servers": {
"revolink": {
"type": "http",
"url": "https://api.revolink.link/apiv1/mcp",
"headers": {
"X-Api-Key": "${input:revolinkApiKey}"
}
}
},
"inputs": [
{
"id": "revolinkApiKey",
"type": "promptString",
"description": "Revolink API Key",
"password": true
}
]
}
Потрібен VS Code 1.99+ з GitHub Copilot. Запит ${input:revolinkApiKey} попросить ваш ключ під час першого використання.
Zed (~/.config/zed/settings.json)
{
"context_servers": {
"revolink": {
"settings": {
"url": "https://api.revolink.link/apiv1/mcp",
"api_key": "YOUR_API_KEY"
}
}
}
}
Налаштування AI-клієнта (OAuth)
claude.ai (web)
Конфігурація не потрібна. Коли ви додаєте новий MCP-сервер у claude.ai → Settings → Integrations, введіть:
https://api.revolink.link/apiv1/mcp
Claude автоматично перенаправить вас на сторінку згоди Revolink.
Робочі простори: автоматичний вибір
Вам ніколи не потрібно вказувати ID робочого простору вручну. Якщо ви надсилаєте запит без вибраного робочого простору, сервер повертає список ваших доступних робочих просторів. AI вибирає потрібний за контекстом, а потім автоматично продовжує операцію. Для вас це непомітно: просто опишіть звичайною мовою, що вам потрібно.
Доступні інструменти
list_links
Повертає список посилань робочого простору з розбиттям на сторінки.
Потрібний дозвіл: links:read
| Параметр | Тип | Обов'язковий | Опис |
|---|---|---|---|
page | integer | — | Номер сторінки (за замовчуванням: 1) |
limit | integer | — | Посилань на сторінці, 1–100 (за замовчуванням: 20) |
search | string | — | Фільтр за назвою або slug |
tagIds | string[] | — | Фільтр за ID тегів |
get_link
Повертає повну інформацію про одне посилання, зокрема його правила маршрутизації.
Потрібний дозвіл: links:read
| Параметр | Тип | Обов'язковий | Опис |
|---|---|---|---|
linkId | string | ✅ | ID посилання |
create_link
Створює нове смарт-посилання з правилами маршрутизації.
Потрібний дозвіл: links:write
| Параметр | Тип | Обов'язковий | Опис |
|---|---|---|---|
name | string | ✅ | Назва посилання (до 255 символів) |
rules | Rule[] | ✅ | Правила маршрутизації: див. Об'єкт правила нижче. Рівно одне має мати isDefault: true |
slug | string | — | Власний slug (малі літери, дозволені дефіси). Якщо не вказано, генерується автоматично |
domain | string | — | Власний домен. За замовчуванням домен робочого простору |
description | string | — | Внутрішня примітка (до 1000 символів) |
active | boolean | — | Чи активне посилання (за замовчуванням: true) |
tagIds | string[] | — | ID тегів, які потрібно прикріпити |
clicksLimit | integer | — | Деактивувати посилання після N кліків. 0 = без обмежень |
expirationDate | string | — | Дата й час ISO 8601. Після цієї дати посилання деактивується |
conversionTracking | boolean | — | Увімкнути піксель конверсій |
gpsTracking | boolean | — | Увімкнути запис GPS-розташування при кліку |
abTest | AbTest | — | Конфігурація A/B-тесту: див. Об'єкт A/B-тесту нижче |
Приклад запиту:
«Створи посилання "Product Hunt Launch", яке відправляє відвідувачів із комп'ютерів на десктопну лендінг-сторінку, а відвідувачів із телефонів на мобільну.»
update_link
Оновлює наявне посилання. Вказуйте лише ті поля, які хочете змінити.
Потрібний дозвіл: links:write
Ті самі параметри, що й у create_link, а також:
| Параметр | Тип | Обов'язковий | Опис |
|---|---|---|---|
linkId | string | ✅ | ID посилання, яке потрібно оновити |
ogTitle | string | — | OG-заголовок, що показується, коли посиланням діляться в соцмережах (до 255 символів) |
ogDescription | string | — | OG-опис для прев'ю в соцмережах (до 500 символів) |
appearanceColor | string | — | Брендовий колір у hex (наприклад, #FF5733) |
Коли передано
rules, увесь масив правил замінюється. Вказуйте всі правила, які хочете залишити, а не лише змінені. AI внутрішньо отримує наявні ID правил перед оновленням.
delete_link
Остаточно видаляє посилання.
Потрібний дозвіл: links:delete
| Параметр | Тип | Обов'язковий | Опис |
|---|---|---|---|
linkId | string | ✅ | ID посилання, яке потрібно видалити |
bulk_create_links
Створює кілька посилань одним запитом. Підпадає під квоту тарифу на посилання.
Потрібний дозвіл: links:bulk
| Параметр | Тип | Обов'язковий | Опис |
|---|---|---|---|
links | LinkInput[] | ✅ | Масив об'єктів посилань (1–100). Кожен має ті самі поля, що й create_link |
Відповідь містить масиви created (успішні) і failed (невдалі, із причиною), тож можливий частковий успіх.
get_link_analytics
Повертає аналітику кліків для одного посилання за країною, пристроєм, браузером, ОС, правилом маршрутизації та A/B-варіантом.
Потрібний дозвіл: analytics:read
| Параметр | Тип | Обов'язковий | Опис |
|---|---|---|---|
linkId | string | ✅ | ID посилання |
from | string | — | Початкова дата YYYY-MM-DD (за замовчуванням: увесь час) |
to | string | — | Кінцева дата YYYY-MM-DD (за замовчуванням: сьогодні) |
get_workspace_analytics
Повертає зведену аналітику кліків по всіх посиланнях робочого простору.
Потрібний дозвіл: analytics:read
| Параметр | Тип | Обов'язковий | Опис |
|---|---|---|---|
from | string | — | Початкова дата YYYY-MM-DD (за замовчуванням: увесь час) |
to | string | — | Кінцева дата YYYY-MM-DD (за замовчуванням: сьогодні) |
Об'єкт правила
Кожне посилання має мати щонайменше одне правило. Рівно одне правило має мати isDefault: true: це резервне правило, коли умови жодного іншого не збігаються. Правило за замовчуванням не може мати жодних умов.
| Поле | Тип | Опис |
|---|---|---|
targetUrl | string | Цільовий URL (обов'язково) |
isDefault | boolean | true для резервного правила (обов'язково) |
country | string[] | Коди ISO 3166-1 alpha-2, наприклад ["UA", "DE"] |
city | string[] | Назви міст. Потрібно вказати country |
device | string[] | "desktop" "mobile" "tablet" "console" "smarttv" "wearable" "embedded" |
os | string[] | "Windows" "macOS" "Linux" "iOS" "Android" |
browser | string[] | "Chrome" "Firefox" "Safari" "Edge" "Opera" "Brave" |
timeStart | string | Початок активного вікна "HH:MM" UTC. Має бути в парі з timeEnd |
timeEnd | string | Кінець активного вікна "HH:MM" UTC. Має бути в парі з timeStart |
daysOfWeek | integer[] | Дні: 0 = неділя … 6 = субота |
locale | string[] | Коди мов браузера, наприклад ["uk", "en"] |
name | string | Необов'язкова мітка цього правила |
Об'єкт A/B-тесту
Коли abTest.enabled має значення true, кліки діляться між варіантами відповідно до їхніх ваг. Правила маршрутизації все одно застосовуються першими: A/B-поділ відбувається лише для відвідувачів, яких підібрало певне правило.
| Поле | Тип | Опис |
|---|---|---|
enabled | boolean | true, щоб активувати A/B-тестування |
variants | Variant[] | Потрібно щонайменше 2 варіанти, коли тест увімкнено |
Варіант:
| Поле | Тип | Опис |
|---|---|---|
url | string | Цільовий URL цього варіанта |
weight | number | Відносна частка трафіку. Наприклад, 70 і 30 означає розподіл 70 %/30 % |
Обробка помилок
MCP-сервер повертає стандартні помилки JSON-RPC. Помилки рівня інструмента використовують такі коди:
| Код | Значення |
|---|---|
-32602 | Недійсні параметри: некоректні вхідні дані (помилка валідації, зайнятий slug тощо) |
-32603 | Внутрішня помилка: збій на боці сервера |
Помилки рівня HTTP (до виклику інструмента):
| HTTP | Причина |
|---|---|
401 | Відсутній або недійсний API-ключ / Bearer-токен |
403 | Для ключа не ввімкнено дозволів MCP, або власник ключа не має доступу до робочого простору |
404 | Робочий простір не знайдено |
Приклади викликів інструментів
Список ваших посилань:
«Покажи всі посилання в моєму робочому просторі з тегом
summer-sale.»
Створення посилання з геотаргетингом:
«Створи посилання "App Download". iOS-користувачів відправ в App Store, користувачів Android у Google Play, а всіх інших на сайт.»
Зміна правил маршрутизації:
«Онови посилання
664a1b2c…: додай правило, що перенаправляє відвідувачів із Німеччини наhttps://de.example.com.»
Аналітика за минулий тиждень:
«Які країни були в топі для посилання
664a1b2c…минулого тижня?»