MCP

Справочник по инструментам

Полный список инструментов сервера MCP PostNext с описанием входных параметров, структуры ответа и готовым примером для каждого.

Аутентификация

Каждый запрос к https://mcp.postnext.io/api требует заголовок Authorization с Bearer-токеном. Получить токен можно двумя способами.

OAuth (рекомендуется для ИИ-клиентов)

ИИ-клиенты при первом подключении выполняют Dynamic Client Registration и проводят пользователя через экран согласия OAuth. Страница /mcp/connect делает это автоматически, и клиент получает токен доступа на 30 дней.

API-ключ

Для скриптов и CI создайте персональный API-ключ в приложении PostNext в разделе Аккаунт → API-ключи. Ключ начинается с apikey_ и передаётся как обычный Bearer-токен.

Endpoint

Все вызовы инструментов идут на один JSON-RPC 2.0 endpoint по HTTPS POST.

POST https://mcp.postnext.io/api

Инструменты

list_scheduled_posts

Список ваших запланированных публикаций (поставленных в очередь на публикацию, но ещё не отправленных).

Аргументы

limitnumber ·необязательный · default 20
Максимальное количество возвращаемых результатов (1-100, по умолчанию 20).
fromstring (ISO 8601) ·необязательный
ISO-метка времени: возвращать только публикации, запланированные не ранее этого момента.

Возвращает

Объект с posts: [{id, platform, content, scheduledAt, status}]. До limit результатов.

Пример

curl -X POST https://mcp.postnext.io/api \
  -H "Authorization: Bearer apikey_xxx" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"tools/call","id":1,
       "params":{"name":"list_scheduled_posts",
                 "arguments":{"limit":5}}}'

list_drafts

Список ваших черновиков (ещё не запланированных).

Аргументы

limitnumber ·необязательный · default 20
Максимальное количество возвращаемых результатов (1-100, по умолчанию 20).

Возвращает

Объект с drafts: [{id, platform, content, updatedAt}]. До limit результатов.

Пример

{"jsonrpc":"2.0","method":"tools/call","id":2,
 "params":{"name":"list_drafts","arguments":{"limit":10}}}

list_connected_accounts

Список социальных аккаунтов, подключённых к вашей команде.

Аргументы

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

Возвращает

Объект с accounts: [{platform, handle, connected, lastSyncAt}].

Пример

{"jsonrpc":"2.0","method":"tools/call","id":3,
 "params":{"name":"list_connected_accounts","arguments":{}}}

get_account_healthПлатный план

Сводка состояния по всем подключённым платформам.

Аргументы

platformenum ·необязательный
Социальная платформа: twitter, instagram, linkedin, threads или tiktok.
windowDays7 | 30 | 90 ·необязательный · default 30
Период анализа в днях: 7, 30 или 90 (по умолчанию 30).

Возвращает

Объект с windowDays, postsScheduled, postsPublished, postsFailed, разбивкой byPlatform и topErrors[].

Пример

{"jsonrpc":"2.0","method":"tools/call","id":4,
 "params":{"name":"get_account_health",
           "arguments":{"windowDays":30}}}

create_post_draft

Создание нового черновика публикации. Черновики не публикуются автоматически.

Аргументы

platformenum ·обязательный
Социальная платформа: twitter, instagram, linkedin, threads или tiktok.
contentstring ·обязательный
Текст публикации (1-2200 символов).
mediaUrlsarray<string> ·необязательный
До 10 URL-адресов изображений или видео.
clientRequestIdstring ·необязательный
Необязательный ключ идемпотентности. Одинаковый ключ в течение 5 минут возвращает кэшированный результат.

Возвращает

Объект с новым черновиком: {id, platform, content, status: "DRAFT", createdAt}.

Пример

{"jsonrpc":"2.0","method":"tools/call","id":5,
 "params":{"name":"create_post_draft",
           "arguments":{"platform":"twitter",
                        "content":"Hello from MCP"}}}

update_post_draft

Обновление существующего черновика. Необходимо указать хотя бы одно из полей: content или mediaUrls.

Аргументы

postIdstring ·обязательный
Идентификатор публикации PostNext из результатов запроса списка.
contentstring ·необязательный
Текст публикации (1-2200 символов).
mediaUrlsarray<string> ·необязательный
До 10 URL-адресов изображений или видео.
clientRequestIdstring ·необязательный
Необязательный ключ идемпотентности. Одинаковый ключ в течение 5 минут возвращает кэшированный результат.

Возвращает

Объект с обновлённым черновиком: {id, platform, content, mediaUrls, status, updatedAt}.

Пример

{"jsonrpc":"2.0","method":"tools/call","id":6,
 "params":{"name":"update_post_draft",
           "arguments":{"postId":"",
                        "content":"Updated copy"}}}

connect_channel

Генерация одноразового URL, который пользователь может открыть для авторизации подключения новой платформы.

Аргументы

platformenum ·обязательный
Социальная платформа: twitter, instagram, linkedin, threads или tiktok.

Возвращает

Объект с authUrl (одноразовая ссылка, которую пользователь открывает для авторизации), expiresAt и platform.

Пример

{"jsonrpc":"2.0","method":"tools/call","id":7,
 "params":{"name":"connect_channel",
           "arguments":{"platform":"linkedin"}}}

schedule_post

Перемещает черновик (статус DRAFT) в очередь публикации BullMQ на будущий timestamp. Идемпотентен в пределах дрейфа ±60 секунд; отклоняет попытки перепланирования на другое время без явной отмены.

Аргументы

postIdstring ·обязательный
Идентификатор публикации PostNext из результатов запроса списка.
scheduledAtstring (ISO 8601) ·обязательный
ISO 8601 timestamp; не может быть более чем на 5 минут в прошлом.

Возвращает

Объект с postId, scheduledAt (ISO), status: SCHEDULED.

Пример

{"jsonrpc":"2.0","method":"tools/call","id":8,
 "params":{"name":"schedule_post",
           "arguments":{"postId":"",
                        "scheduledAt":"2026-05-10T09:00:00Z"}}}

cancel_scheduled_post

Отменяет запланированный пост и удаляет его из очереди публикации. Базовый черновик сохраняется.

Аргументы

postIdstring ·обязательный
Идентификатор публикации PostNext из результатов запроса списка.

Возвращает

Объект с postId и status: CANCELLED.

Пример

{"jsonrpc":"2.0","method":"tools/call","id":9,
 "params":{"name":"cancel_scheduled_post",
           "arguments":{"postId":""}}}

delete_draft

Окончательно удаляет черновик. Отклоняет посты не в статусе DRAFT (используйте cancel_scheduled_post для SCHEDULED).

Аргументы

postIdstring ·обязательный
Идентификатор публикации PostNext из результатов запроса списка.

Возвращает

Объект с postId и deleted: true.

Пример

{"jsonrpc":"2.0","method":"tools/call","id":10,
 "params":{"name":"delete_draft",
           "arguments":{"postId":""}}}

get_post

Возвращает полный PostGroup для postId с контентом по платформам + статус + timestamps.

Аргументы

postIdstring ·обязательный
Идентификатор публикации PostNext из результатов запроса списка.

Возвращает

Объект с postId, status, scheduledAt, createdAt, updatedAt и providers (карта платформа → контент).

Пример

{"jsonrpc":"2.0","method":"tools/call","id":11,
 "params":{"name":"get_post",
           "arguments":{"postId":""}}}

search_posts

Подстрочный поиск (без учёта регистра) по контенту постов активной команды. Фильтры: status, platform, limit (1-100, по умолчанию 20).

Аргументы

querystring ·обязательный
Подстрока для поиска (3-200 символов; regex-метасимволы экранируются).
statusenum ·необязательный
Опционально: DRAFT | SCHEDULED | PUBLISHED | FAILED | CANCELLED.
platformenum ·необязательный
Социальная платформа: twitter, instagram, linkedin, threads или tiktok.
limitnumber ·необязательный · default 20
Максимальное количество возвращаемых результатов (1-100, по умолчанию 20).

Возвращает

Объект с posts: [{postId, status, platforms, snippet, scheduledAt, updatedAt}]. Snippet содержит совпадающий контекст с многоточием с обеих сторон.

Пример

{"jsonrpc":"2.0","method":"tools/call","id":12,
 "params":{"name":"search_posts",
           "arguments":{"query":"launch","limit":10}}}

list_teams

Возвращает команды, которыми владеет или администрирует аутентифицированный пользователь, с пометкой активной команды.

Аргументы

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

Возвращает

Объект с currentTeamId и teams: [{teamId, teamName, isCurrent}].

Пример

{"jsonrpc":"2.0","method":"tools/call","id":13,
 "params":{"name":"list_teams","arguments":{}}}

set_current_team

Переключает активную команду для этого Bearer-токена. Пользователь должен быть участником. Сохраняется в OAuth-токене; in-session-мутация делает эффект немедленным для последующих инструментов в той же беседе.

Аргументы

teamIdstring ·обязательный
Целевой teamId из list_teams. Членство повторно проверяется на сервере.

Возвращает

Объект с teamId, teamName, persisted (true для OAuth, false для API-ключа) и опциональным note.

Пример

{"jsonrpc":"2.0","method":"tools/call","id":14,
 "params":{"name":"set_current_team",
           "arguments":{"teamId":"team_xxxxx"}}}

get_plan_limits

Возвращает текущий тариф пользователя и квоты по тарифу (каналы, хранилище, AI-кредиты, публикация). Доступен на любом плане. Полезен перед изменяющими инструментами, чтобы предсказать, будет ли вызов заблокирован.

Аргументы

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

Возвращает

Объект с tier, tierDisplayName, isPaid, isTrial, upgradeUrl, limits (channels/storage/aiCalls/posts каждое как {limit, current, exceeded} или {limit, allowed}) и creditsAvailable ({total, subscriptionRemaining, purchasedBalance} или null).

Пример

{"jsonrpc":"2.0","method":"tools/call","id":15,
 "params":{"name":"get_plan_limits","arguments":{}}}

get_post_metrics

Получает метрики вовлечённости для опубликованного поста по каждой платформе, на которую он был отправлен. Twitter и Instagram возвращают заполненные метрики (лайки, ретвиты/репосты, комментарии/ответы, показы); LinkedIn, Threads и TikTok возвращают только статус публикации и URL (сбор метрик вовлечённости отложен на более поздний релиз). Нормализованный сводный totals суммирует лайки/комментарии/репосты/показы по тем платформам, которые сообщили данные.

Аргументы

postId Идентификатор публикации PostNext из результатов запроса списка.

Возвращает

Объект с postId, status, providers: [{platform, publishedPostId, publishedUrl, publishedAt, status, metrics}] и totals: {likes, comments, shares, impressions}. metrics представляет собой объект числовых счётчиков по платформе или null, если платформа пока не собирает данные вовлечённости.

Пример

{"jsonrpc":"2.0","method":"tools/call","id":16,
 "params":{"name":"get_post_metrics",
           "arguments":{"postId":""}}}

get_publish_status

Диагностирует запланированную публикацию: статус очереди, успех/ошибка по платформам, время обработки и jobId воркера. Возвращает isScheduled=false для публикаций, которые существуют как черновики, но не были перемещены в очередь публикации, с подсказкой на schedule_post.

Аргументы

postId Идентификатор публикации PostNext из результатов запроса списка.

Возвращает

Объект с postId, isScheduled, status, scheduledAt, publishedAt, platforms, processingTimeMs, jobId, topLevelError и results: [{platform, success, publishedPostId, publishedAt, error}]. Содержит hint, когда isScheduled равно false.

Пример

{"jsonrpc":"2.0","method":"tools/call","id":17,
 "params":{"name":"get_publish_status",
           "arguments":{"postId":""}}}

update_brand_profile

Обновляет активный профиль бренда пользователя. Разрешённые поля: bio, brandVoice, personalityTraits, mainThemes, expertiseAreas, preferredHashtags, audienceSize. Всё остальное молча отбрасывается. Разрешает "активный" сначала как дефолт команды, затем как первый активный профиль пользователя.

Аргументы

brandVoice Массив дескрипторов голоса бренда (например, ["профессиональный", "краткий"]).

Other patchable fields: bio, personalityTraits, mainThemes, expertiseAreas, preferredHashtags, audienceSize.

Возвращает

Объект с profileId, name, updated: [имена полей, которые были изменены] и текущими значениями bio, brandVoice, personalityTraits, mainThemes, expertiseAreas, preferredHashtags, audienceSize после изменения.

Пример

{"jsonrpc":"2.0","method":"tools/call","id":18,
 "params":{"name":"update_brand_profile",
           "arguments":{"brandVoice":["professional","concise"]}}}

get_best_time_to_post Платный план

Рекомендует лучшие N слотов (деньНедели, час) для следующей публикации на платформе, отсортированные по вовлечённости на пост за последние 90 дней. Twitter и Instagram возвращают взвешенные по вовлечённости оценки; LinkedIn, Threads, TikTok сортируют только по частоте. Время в указанной IANA-таймзоне (по умолчанию UTC). Требуется платный план.

Аргументы

platform Социальная платформа: twitter, instagram, linkedin, threads или tiktok.

timezone Название IANA-таймзоны (например, Europe/Moscow, America/New_York). По умолчанию UTC.

topN Количество рекомендаций слотов (1-24, по умолчанию 5).

Возвращает

Объект с platform, timezone, sampleWindowDays, sampleSize, metricsAvailable и recommendations: [{dayOfWeek (1-7, Пн=1), dayLabel, hour (0-23), score, basedOn: {posts, avgEngagement}}]. Содержит hint для случаев cold-start или недоступных метрик.

Пример

{"jsonrpc":"2.0","method":"tools/call","id":19,
 "params":{"name":"get_best_time_to_post",
           "arguments":{"platform":"twitter","timezone":"Europe/Berlin","topN":5}}}

search_tools

Ищет в каталоге инструментов MCP по тексту, категории или намерению. Возвращает категории, requiresScope, однострочные описания и теги вариантов использования, которые совпали. Доступно на любом плане (поверхность обнаружения).

Аргументы

All optional. Call with no arguments to list every available tool.

query Свободный поиск по именам, описаниям и тегам использования инструментов.

category Фильтр по одной категории: posts, accounts, analytics, brand, teams, discovery, other.

Возвращает

Объект с totalTools, matchCount, categories: [string[]] и tools: [{name, category, requiresScope, description, useCases, matchedOn: [name|category|description|use_case]}]. Содержит hint, когда нет совпадений или нет фильтра.

Пример

{"jsonrpc":"2.0","method":"tools/call","id":20,
 "params":{"name":"search_tools",
           "arguments":{"query":"why did my post fail"}}}

MCP-ресурсы

Ресурсы представляют собой контекст только для чтения, который клиент может получить через MCP-метод resources/read. Claude загружает их в начале каждой беседы, поэтому имеет контекст аккаунта/команды/бренда без необходимости каждый раз объяснять заново.

postnext://account/summary

E-mail и имя пользователя аккаунта (чтобы Claude мог подтвердить, с каким аккаунтом он работает), план, использованные AI-кредиты / лимит, количество черновиков, количество запланированных, подключённые каналы. Подсчёты ограничены 100 каждый для быстрой загрузки.

postnext://channels/connected

Та же форма, что и результат list_connected_accounts; экспонировано как ресурс, чтобы Claude загрузил его один раз в начале беседы (без round-trip вызова инструмента).

postnext://brand-profiles/active

Активный профиль бренда пользователя (default команды, с fallback на первый собственный профиль). Возвращает только LLM-релевантные поля: bio, expertiseAreas, personalityTraits, brandVoice, mainThemes, audienceSize, preferredHashtags.

postnext://teams/current

Метаданные текущей команды (teamId, teamName) плюс totalTeamsAvailable. Используйте вместе с list_teams + set_current_team для переключения.

Именованные рабочие сценарии

Команды слэш-меню, которые объединяют несколько инструментов. Выберите сценарий, и ИИ-ассистент проведёт вас через многошаговую задачу, запрашивая подтверждение перед каждым изменением.

/weekly-plan

Анализирует профиль бренда, подключённые каналы и очередь публикаций, затем предлагает 5-10 черновиков, распределённых с понедельника по пятницу.

/draft-thread

Создаёт тред из 5-10 постов для Twitter или Threads по заданной теме или ссылке в голосе вашего бренда.

/audit-queue

Проверяет запланированные публикации на ближайшие 7 дней и отмечает дубликаты, перегруз платформ и пробелы в расписании.

/channel-sweep

Сравнивает подключённые каналы с поддерживаемым набором и предлагает, какие из них стоит подключить или обновить.

Endpoint-ы discovery и OAuth

Метаданные по стандартам, чтобы любой MCP-клиент мог настроиться автоматически.

  • GET /.well-known/oauth-protected-resource/api — RFC 9728
  • GET /.well-known/oauth-authorization-server — RFC 8414
  • GET /oauth/.well-known/openid-configuration — OIDC
  • POST /oauth/reg — Dynamic Client Registration (RFC 7591)
  • GET /oauth/auth — Authorize (PKCE-S256 required)
  • POST /oauth/token — Token exchange

Открытый исходный код

Готовые рецепты и справочник для разработчиков размещены в нашем публичном репозитории документации. Лицензия MIT; pull-запросы приветствуются. github.com/postnextio/postnext-mcp

Управляйте соцканалами из любого AI-ассистента

Планируйте, создавайте, расписывайте и проверяйте публикации на 6 платформах через диалог с Claude, ChatGPT или Cursor. Одно безопасное подключение, все возможности PostNext.

×