Ви — AI-агент? Точки входу для машин:/llms.txt/llms-full.txt/catalog.json

MCP-сервер

Одна адреса для всіх асистентів. Ви входите в UniLink і дозволяєте — асистент отримує 22 інструменти у вашому акаунті.

https://unilink.us/mcp

Підключіть асистента

Claude (claude.ai і Claude Desktop)

  1. Відкрийте Settings → Connectors → Add custom connector.
  2. Вставте https://unilink.us/mcp і додайте.
  3. Увійдіть у UniLink і натисніть «Дозволити».

ChatGPT

  1. Увімкніть режим розробника й додайте власний конектор.
  2. Адреса та сама: https://unilink.us/mcp.
  3. Увійдіть у UniLink і натисніть «Дозволити».

Claude Code

claude mcp add --transport http unilink https://unilink.us/mcp
  1. Виконайте команду вище.
  2. У Claude Code запустіть /mcp, оберіть unilink і увійдіть у UniLink.
  3. Натисніть «Дозволити».

Cursor

Не підтримується

Cursor потребує Dynamic Client Registration, а UniLink її не пропонує.

Вхід і безпека

  • OAuth 2.1: код авторизації з PKCE (лише S256).
  • Дозвіл ви даєте на екрані UniLink; без «Дозволити» нічого не станеться.
  • Токен доступу діє 1 годину. Токени оновлення ротуються: кожен спрацьовує один раз.
  • Зміна пароля, вихід на всіх пристроях чи зміна MFA закривають доступ.
  • Відключити можна будь-коли: Налаштування облікового запису → Підключені застосунки.
  • Discovery: https://unilink.us/.well-known/oauth-protected-resource/mcp і https://unilink.us/.well-known/oauth-authorization-server.
  • Реєстрація клієнтів: Client ID Metadata Documents із claude.ai і chatgpt.com. Dynamic Client Registration не підтримується.

Транспорт

Адреса
POST https://unilink.us/mcp
Транспорт
Streamable HTTP, JSON-RPC 2.0
Відповіді
application/json, одна на запит (без SSE-потоку)
Сесії
Без стану — без Mcp-Session-Id
Версії протоколу
2025-06-18, 2025-03-26
Пакетні запити
Не підтримуються
Тіло запиту
До 1 МБ
Метадані ресурсу
https://unilink.us/.well-known/oauth-protected-resource/mcp
Сервер авторизації
https://unilink.us/.well-known/oauth-authorization-server
Реєстрація клієнтів
Client ID Metadata Documents (claude.ai, chatgpt.com); Dynamic Client Registration не підтримується

Перший виклик

Для тих, хто пише MCP-клієнт: що відповідає сервер до входу і що робити далі.

curl -i -X POST https://unilink.us/mcp
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer resource_metadata="https://unilink.us/.well-known/oauth-protected-resource/mcp", Bearer
  1. Прочитайте resource_metadata: там указано сервер авторизації, https://unilink.us.
  2. Отримайте https://unilink.us/.well-known/oauth-authorization-server — там адреси authorize і token.
  3. Пройдіть authorization code з PKCE (S256); людина входить і натискає «Дозволити».
  4. Надсилайте токен доступу в Authorization: Bearer у кожному POST.

Приймаються лише client ID з claude.ai і chatgpt.com. Пишете власний клієнт? Беріть REST API з API-ключем.

Довідник інструментів

22 інструментів, 10 з них — на платному тарифі. Назви, описи й аргументи — дослівно з tools/list, тому англійською.

Читання (13)Зміни (9)

Читання

get_account_info

Лише читання

Get account and profiles

Акаунт, тариф і список профілів з їхніми profileId.

Get current user account info including list of profiles, plan info. Call this first to discover available profileId values.

Аргументи

Без аргументів.

readOnlyHint: truedestructiveHint: falseidempotentHint: trueopenWorldHint: false

get_profile_analytics

Лише читанняПлатний тариф

Get profile analytics

Перегляди, унікальні відвідувачі, кліки, підписки, топ джерел і країн — для всієї сторінки.

Get analytics for a profile: views, unique visitors, clicks, signups, top referrers and countries.

Аргументи

  • profileIdintegerобовʼязковий

    Profile ID (get from get_account_info)

  • periodintegerнеобовʼязковийтипово: 5

    1=Today, 2=Yesterday, 3=Week, 4=Month, 5=AllTime, 6=Custom

  • startDatestringнеобовʼязковий

    Start date ISO 8601 (only for period=6)

  • endDatestringнеобовʼязковий

    End date ISO 8601 (only for period=6)

readOnlyHint: truedestructiveHint: falseidempotentHint: trueopenWorldHint: false

list_blocks

Лише читання

List blocks

Усі блоки профілю: тип, назва, видимість, позиція, UID; для блоків посилань — id кожного посилання.

List all blocks on a profile. Shows type, title, visibility, position, and for link blocks each link's ID (the itemId update_link_item takes), title and URL.

Аргументи

  • profileIdintegerобовʼязковий

    Profile ID

readOnlyHint: truedestructiveHint: falseidempotentHint: trueopenWorldHint: false

list_orders

Лише читанняПлатний тариф

List orders

Замовлення профілю посторінково.

List orders for a profile with pagination.

Аргументи

  • profileIdintegerобовʼязковий

    Profile ID

  • takeintegerнеобовʼязковийтипово: 20

    Number of orders (default 20)

  • skipintegerнеобовʼязковийтипово: 0

    Offset (default 0)

readOnlyHint: truedestructiveHint: falseidempotentHint: trueopenWorldHint: false

list_audience

Лише читанняПлатний тариф

List audience

Контакти аудиторії з пошуком за іменем, email чи телефоном.

List audience members (contacts). Supports search and pagination.

Аргументи

  • profileIdintegerобовʼязковий

    Profile ID

  • searchstringнеобовʼязковий

    Search by name, email, phone

  • takeintegerнеобовʼязковийтипово: 50

    Limit (default 50)

  • skipintegerнеобовʼязковийтипово: 0

    Offset (default 0)

readOnlyHint: truedestructiveHint: falseidempotentHint: trueopenWorldHint: false

get_audience_stats

Лише читанняПлатний тариф

Get audience stats

Скільки контактів, відповідей на форми, підписників і покупців.

Get audience stats: contacts, forms, subscribers, customers counts.

Аргументи

  • profileIdintegerобовʼязковий

    Profile ID

readOnlyHint: truedestructiveHint: falseidempotentHint: trueopenWorldHint: false

list_products

Лише читанняПлатний тариф

List products

Товари магазину профілю посторінково.

List products for a profile store with pagination.

Аргументи

  • profileIdintegerобовʼязковий

    Profile ID

  • takeintegerнеобовʼязковийтипово: 20

    Limit (default 20)

  • skipintegerнеобовʼязковийтипово: 0

    Offset (default 0)

readOnlyHint: truedestructiveHint: falseidempotentHint: trueopenWorldHint: false

get_product_details

Лише читанняПлатний тариф

Get product details

Ціна, опис, медіа й статус одного товару.

Get detailed info about a product: price, description, media, status.

Аргументи

  • profileIdintegerобовʼязковий

    Profile ID

  • productIdintegerобовʼязковий

    Product ID (from list_products)

readOnlyHint: truedestructiveHint: falseidempotentHint: trueopenWorldHint: false

get_revenue_summary

Лише читанняПлатний тариф

Get revenue summary

Виручка з оплачених замовлень у кожній валюті, за потреби — за період.

Get revenue from paid orders, grouped by currency, optionally within a date range on the order's creation time (UTC). A paid order is one with status paid, confirmed, processing, in-progress, packed, shipped, delivered or completed. Not included: orders not yet paid, failed, cancelled, refunded or on hold. This differs from the Revenue figure on the UniLink Analytics screen, which counts only orders still in status 'paid'.

Аргументи

  • profileIdintegerобовʼязковий

    Profile ID

  • startDatestringнеобовʼязковий

    Start date ISO 8601, UTC (optional)

  • endDatestringнеобовʼязковий

    End date ISO 8601, UTC (optional). A date alone (2026-01-31) includes that whole day; a full timestamp is inclusive of that exact instant.

readOnlyHint: truedestructiveHint: falseidempotentHint: trueopenWorldHint: false

list_repeat_customers

Лише читанняПлатний тариф

List repeat customers

Покупці, які купили щонайменше minOrders разів: кількість замовлень, сума в кожній валюті, дати.

List customers (audience contacts) who bought at least minOrders times, most purchases first, with order count, total spent per currency, and first/last purchase dates. A purchase is a paid order (status paid, confirmed, processing, in-progress, packed, shipped, delivered or completed) - the same definition as get_revenue_summary, and wider than the UniLink Analytics screen, which counts only 'paid'. Orders not linked to a contact cannot be attributed and are reported as a count only.

Аргументи

  • profileIdintegerобовʼязковий

    Profile ID

  • minOrdersintegerнеобовʼязковийтипово: 2

    Minimum number of purchases (default 2, at least 2)

  • takeintegerнеобовʼязковийтипово: 20

    Number of customers (default 20, max 100)

  • skipintegerнеобовʼязковийтипово: 0

    Offset (default 0)

readOnlyHint: truedestructiveHint: falseidempotentHint: trueopenWorldHint: false

smm_list_connected_accounts

Лише читання

List connected social accounts

Які соцмережі підключено до профілю і в який акаунт кожної піде пост. Викликайте перед публікацією.

List the social media accounts connected to a profile, per platform (facebook, instagram, twitter, linkedin, telegram, pinterest, threads, discord, youtube), marking the account publish_to_social and schedule_social_post post to. Accounts are connected in the UniLink Dashboard, not here. Call this before publishing. Not paginated.

Аргументи

  • profileIdintegerобовʼязковий

    Profile ID

readOnlyHint: truedestructiveHint: falseidempotentHint: trueopenWorldHint: false

list_smm_campaigns

Лише читання

List social campaigns

Кампанії профілю, від найновіших: статус, мережі, статус і посилання поста в кожній. Посторінково.

List the profile's social media campaigns, newest first, with each campaign's status and platforms and each platform's post status and link. Paginated with take/skip: the text ends with a line Pagination: {"hasMore":true|false,"nextSkip":n|null}; while hasMore is true, call again with skip = nextSkip.

Аргументи

  • profileIdintegerобовʼязковий

    Profile ID

  • takeintegerнеобовʼязковийтипово: 20

    Number of campaigns (default 20, max 100)

  • skipintegerнеобовʼязковийтипово: 0

    Offset (default 0)

readOnlyHint: truedestructiveHint: falseidempotentHint: trueopenWorldHint: false

get_campaign_details

Лише читання

Get social campaign details

Одна кампанія: статус, розклад, текст і для кожної мережі статус поста, посилання, помилка й показники залученості.

Get one social media campaign: status, schedule, text, and per platform the post status, link, error and engagement metrics. campaignId comes from list_smm_campaigns or from publish_to_social's result.

Аргументи

  • profileIdintegerобовʼязковий

    Profile ID

  • campaignIdintegerобовʼязковий

    Campaign ID (from list_smm_campaigns)

readOnlyHint: truedestructiveHint: falseidempotentHint: trueopenWorldHint: false

Зміни

create_block

Змінює сторінку

Create a block

Новий блок на сторінці. UID нового блоку — через list_blocks.

Create a new block on a profile page. Common types: link, text, faq, contact, html, video, map, timer, gallery, banner, shop, digital, appointment, event, course, donation, tip. A new link block starts with no links; add them with add_link_item. A new text block starts with placeholder text under a "Text" heading; replace both with update_text_block. Call list_blocks to get the new block's UID.

Аргументи

  • profileIdintegerобовʼязковий

    Profile ID

  • pageIdintegerнеобовʼязковий

    Page ID (the Page shown by list_blocks). Omit or 0 for the profile's main page.

  • typestringобовʼязковий

    Block type (e.g. link, text, faq, shop, video)

  • positionintegerнеобовʼязковийтипово: 0

    Position index (0 = top)

readOnlyHint: falsedestructiveHint: falseidempotentHint: falseopenWorldHint: true

update_block

Перезаписує вміст

Rename a block

Перейменовує блок. Більше нічого не змінює.

Rename a block (its name/title). It changes nothing else: to change a block's content use add_link_item / update_link_item (link blocks) or update_text_block (text blocks).

Аргументи

  • profileIdintegerобовʼязковий

    Profile ID

  • blockUIDstringобовʼязковий

    Block UID (from list_blocks)

  • namestringобовʼязковий

    New block name/title

readOnlyHint: falsedestructiveHint: trueidempotentHint: trueopenWorldHint: true

toggle_block_visibility

Змінює сторінку

Show or hide a block

Показує або ховає блок на сторінці.

Show or hide a block on the profile page.

Аргументи

  • profileIdintegerобовʼязковий

    Profile ID

  • blockUIDstringобовʼязковий

    Block UID (from list_blocks)

  • isActivebooleanобовʼязковий

    true=visible, false=hidden

readOnlyHint: falsedestructiveHint: falseidempotentHint: trueopenWorldHint: true

reorder_blocks

Змінює сторінку

Reorder blocks

Новий порядок блоків — передайте UID у потрібній послідовності.

Change the order of blocks on a profile page. Pass block UIDs in the desired order.

Аргументи

  • profileIdintegerобовʼязковий

    Profile ID

  • blockUIDsarray of stringобовʼязковий

    Array of block UIDs in desired order

readOnlyHint: falsedestructiveHint: falseidempotentHint: trueopenWorldHint: true

update_text_block

Перезаписує вміст

Set the text of a text block

Замінює текст текстового блоку (простий текст, без HTML).

Set the text of an existing TEXT block (type 'text' in list_blocks), replacing what is there. A text block shows one tab unless its owner turned tabs on; this always writes the first tab. text is plain text; line breaks become paragraphs. HTML or other markup is not interpreted: it shows as typed.

Аргументи

  • profileIdintegerобовʼязковий

    Profile ID

  • blockUIDstringобовʼязковий

    UID of a text block (from list_blocks)

  • textstringобовʼязковий

    The new text, at most 10000 characters

  • titlestringнеобовʼязковий

    Heading shown above the text (optional), at most 512 characters

readOnlyHint: falsedestructiveHint: trueidempotentHint: trueopenWorldHint: true

publish_to_social

Публікує в соцмережахПлатний тариф

Publish a social post

Публікує пост одразу в одній чи кількох підключених мережах; непідключені пропускає.

Publish a post now to one or more of the profile's connected social accounts: one account per platform, the one smm_list_connected_accounts marks. It creates a campaign (see list_smm_campaigns) and sends it to each platform. Platforms that are not connected are skipped; if none is connected the call fails with NOT_CONNECTED. The text lists each platform as SUCCESS, FAILED or SKIPPED; for Instagram, SUCCESS means accepted and still processing, not yet live. Each platform applies its own rules (e.g. X allows 280 characters, Instagram needs an image or video, YouTube needs a video). Paid UniLink plans only, up to the profile's daily social post limit (10 by default) per 24 hours.

Аргументи

  • profileIdintegerобовʼязковий

    Profile ID

  • contentstringобовʼязковий

    Post text, at most 5000 characters

  • platformsarray of stringобовʼязковий

    Platforms to post to, each at most once: facebook, instagram, twitter, linkedin, telegram, pinterest, threads, discord, youtube

  • mediaUrlsarray of stringнеобовʼязковий

    Optional public https:// image or video URLs to attach, at most 10, each at most 2048 characters. A URL whose path ends in .mp4, .mov, .avi or .webm is sent as a video, any other as an image.

  • titlestringнеобовʼязковий

    Optional campaign title shown in list_smm_campaigns, at most 512 characters (default: the start of content)

readOnlyHint: falsedestructiveHint: falseidempotentHint: falseopenWorldHint: true

schedule_social_post

Публікує в соцмережахПлатний тариф

Schedule a social post

Як publish_to_social, але в заданий час (ISO 8601, UTC, у майбутньому). Ліміт рахується в момент планування.

Schedule a post to go out later to one or more of the profile's connected social accounts. Same as publish_to_social, but nothing is sent now: at scheduleAt UniLink publishes to each platform; follow it with list_smm_campaigns. Platforms that are not connected are skipped; if none is connected the call fails with NOT_CONNECTED. Paid UniLink plans only, up to the profile's daily social post limit (10 by default) per 24 hours, counted when the post is scheduled.

Аргументи

  • profileIdintegerобовʼязковий

    Profile ID

  • contentstringобовʼязковий

    Post text, at most 5000 characters

  • platformsarray of stringобовʼязковий

    Platforms to post to, each at most once: facebook, instagram, twitter, linkedin, telegram, pinterest, threads, discord, youtube

  • scheduleAtstringобовʼязковий

    When to publish: ISO 8601 in UTC, e.g. 2026-03-01T10:00:00Z (a time without an offset is taken as UTC). Must be in the future.

  • mediaUrlsarray of stringнеобовʼязковий

    Optional public https:// image or video URLs to attach, at most 10, each at most 2048 characters. A URL whose path ends in .mp4, .mov, .avi or .webm is sent as a video, any other as an image.

  • titlestringнеобовʼязковий

    Optional campaign title shown in list_smm_campaigns, at most 512 characters (default: the start of content)

readOnlyHint: falsedestructiveHint: falseidempotentHint: falseopenWorldHint: true

Помилки

  • Кожна помилка інструмента приходить з isError: true і текстом {"success":false,"errorCode":…,"message":…,"retryable":…} (плюс "field", коли проблема в одному аргументі). errorCode — один із INVALID_ARGUMENT, NOT_FOUND, PAID_PLAN_REQUIRED, LIMIT_REACHED, NOT_ALLOWED, NOT_CONNECTED, INTERNAL. Повторювати має сенс лише INTERNAL. Передавайте повідомлення людині.
  • publish_to_social і schedule_social_post пропускають непідключені мережі й повертають NOT_CONNECTED, коли не підключено жодної (спершу підключіть акаунт у UniLink Dashboard; вхід у Facebook без сторінки чи Discord без каналу вважаються непідключеними). На денному ліміті постів вони повертають LIMIT_REACHED.
  • На невідомий інструмент чи метод сервер відповідає помилкою JSON-RPC.

Пагінація

Ці інструменти приймають take і skip. Решта повертає все за один виклик.

Ліміти

  • add_link_item рахує активні посилання профілю й звіряє з лімітом тарифу; на межі відповідає "Link limit for your plan reached."
  • Посилання на onlyfans.com, fansly.com і fanvue.com — лише на платному тарифі.
  • Адреса посилання — до 511 символів. Назва посилання — до 512.
  • Текст блоку — до 10 000 символів, простий текст. Заголовок — до 512.
  • list_repeat_customers віддає щонайбільше 100 записів на сторінку.
  • publish_to_social і schedule_social_post: текст до 5000 символів, до 10 медіа (публічні https-адреси, до 2048 символів кожна) і денний ліміт постів профілю (типово 10) за 24 години.
  • Тіло запиту — до 1 МБ.

Як читати позначки

Без позначки
Працює вже зараз, можна викликати.
Незабаром
Задумано, але ще не працює. Поки не покладайтеся.
Не підтримується
UniLink цього не пропонує. Причина — поруч.
Платний тариф
Працює вже зараз, але лише на платному тарифі. На Free відповідає "This is available on a paid UniLink plan."