Uwierzytelnianie
Każde żądanie do https://mcp.more.you/api wymaga nagłówka Authorization z tokenem Bearer. Masz dwa sposoby, by go zdobyć.
OAuth (zalecane dla klientów AI)
Klienty AI przy pierwszym połączeniu wykonują Dynamic Client Registration, a potem prowadzą użytkownika przez ekran zgody OAuth. Strona /mcp/connect obsługuje to automatycznie. Twój klient dostaje token dostępu ważny 30 dni.
Klucz API
Dla skryptów i CI wygeneruj osobisty klucz API w aplikacji More.You w sekcji Konto → Klucze API. Klucz zaczyna się od apikey_ i jest przekazywany jak każdy inny token bearer.
Punkt końcowy
Wszystkie wywołania narzędzi trafiają do jednego punktu końcowego JSON-RPC 2.0 przez HTTPS POST.
Narzędzia
list_scheduled_posts
Wyświetl swoje zaplanowane posty (w kolejce do publikacji, ale jeszcze niewysłane).
Argumenty
limitfromZwraca
Obiekt z posts: [{id, platform, content, scheduledAt, status}]. Maksymalnie limit wyników.
Przykład
curl -X POST https://mcp.more.you/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
Wyświetl swoje szkice postów (jeszcze niezaplanowane).
Argumenty
limitZwraca
Obiekt z drafts: [{id, platform, content, updatedAt}]. Maksymalnie limit wyników.
Przykład
{"jsonrpc":"2.0","method":"tools/call","id":2,
"params":{"name":"list_drafts","arguments":{"limit":10}}}
list_connected_accounts
Wyświetl konta społecznościowe połączone z Twoim zespołem.
Argumenty
Bez argumentów.
Zwraca
Obiekt z accounts: [{platform, handle, connected, lastSyncAt}].
Przykład
{"jsonrpc":"2.0","method":"tools/call","id":3,
"params":{"name":"list_connected_accounts","arguments":{}}}
get_account_healthPlan płatny
Pobierz podsumowanie kondycji wszystkich połączonych platform.
Argumenty
platformwindowDaysZwraca
Obiekt z windowDays, postsScheduled, postsPublished, postsFailed, podziałem byPlatform i topErrors[].
Przykład
{"jsonrpc":"2.0","method":"tools/call","id":4,
"params":{"name":"get_account_health",
"arguments":{"windowDays":30}}}
create_post_draft
Utwórz nowy szkic posta. Szkice nie są publikowane automatycznie.
Argumenty
platformcontentmediaUrlsclientRequestIdZwraca
Obiekt z nowym szkicem: {id, platform, content, status: "DRAFT", createdAt}.
Przykład
{"jsonrpc":"2.0","method":"tools/call","id":5,
"params":{"name":"create_post_draft",
"arguments":{"platform":"twitter",
"content":"Hello from MCP"}}}
update_post_draft
Zaktualizuj istniejący szkic. Trzeba podać co najmniej jedno z: content lub mediaUrls.
Argumenty
postIdcontentmediaUrlsclientRequestIdZwraca
Obiekt z zaktualizowanym szkicem: {id, platform, content, mediaUrls, status, updatedAt}.
Przykład
{"jsonrpc":"2.0","method":"tools/call","id":6,
"params":{"name":"update_post_draft",
"arguments":{"postId":"",
"content":"Updated copy"}}}
connect_channel
Wygeneruj jednorazowy adres URL, który użytkownik może otworzyć, by autoryzować połączenie z nową platformą.
Argumenty
platformZwraca
Obiekt z authUrl (jednorazowy link, który użytkownik otwiera, by autoryzować), expiresAt i platform.
Przykład
{"jsonrpc":"2.0","method":"tools/call","id":7,
"params":{"name":"connect_channel",
"arguments":{"platform":"linkedin"}}}
schedule_post
Przenieś szkic (status DRAFT) do kolejki publikacji BullMQ na przyszły znacznik czasu. Idempotentne w granicach ±60 s; odrzuca próby ponownego zaplanowania na inny czas bez wcześniejszego jawnego anulowania.
Argumenty
postIdscheduledAtZwraca
Obiekt z postId, scheduledAt (ISO), status: SCHEDULED.
Przykład
{"jsonrpc":"2.0","method":"tools/call","id":8,
"params":{"name":"schedule_post",
"arguments":{"postId":"",
"scheduledAt":"2026-05-10T09:00:00Z"}}}
cancel_scheduled_post
Anuluj zaplanowany post i usuń go z kolejki publikacji. Szkic źródłowy zostaje zachowany.
Argumenty
postIdZwraca
Obiekt z postId i status: CANCELLED.
Przykład
{"jsonrpc":"2.0","method":"tools/call","id":9,
"params":{"name":"cancel_scheduled_post",
"arguments":{"postId":""}}}
delete_draft
Trwale usuń szkic posta. Odrzuca posty inne niż DRAFT (dla SCHEDULED użyj cancel_scheduled_post).
Argumenty
postIdZwraca
Obiekt z postId i deleted: true.
Przykład
{"jsonrpc":"2.0","method":"tools/call","id":10,
"params":{"name":"delete_draft",
"arguments":{"postId":""}}}
get_post
Zwróć pełny PostGroup dla danego postId z treścią według platform, statusem i znacznikami czasu.
Argumenty
postIdZwraca
Obiekt z postId, status, scheduledAt, createdAt, updatedAt i providers (rekord platforma → treść).
Przykład
{"jsonrpc":"2.0","method":"tools/call","id":11,
"params":{"name":"get_post",
"arguments":{"postId":""}}}
search_posts
Wyszukiwanie fragmentu tekstu (bez rozróżniania wielkości liter) w treści postów aktywnego zespołu. Filtry: status, platform, limit (1-100, domyślnie 20).
Argumenty
querystatusplatformlimitZwraca
Obiekt z posts: [{postId, status, platforms, snippet, scheduledAt, updatedAt}]. Snippet zawiera pasujący kontekst z wielokropkiem po obu stronach.
Przykład
{"jsonrpc":"2.0","method":"tools/call","id":12,
"params":{"name":"search_posts",
"arguments":{"query":"launch","limit":10}}}
list_teams
Zwróć zespoły, których uwierzytelniony użytkownik jest właścicielem lub administratorem, z oznaczonym aktualnie aktywnym zespołem.
Argumenty
Bez argumentów.
Zwraca
Obiekt z currentTeamId i teams: [{teamId, teamName, isCurrent}].
Przykład
{"jsonrpc":"2.0","method":"tools/call","id":13,
"params":{"name":"list_teams","arguments":{}}}
set_current_team
Przełącz aktywny zespół dla tego tokena Bearer. Użytkownik musi być członkiem. Zapisywane w dokumencie tokena OAuth; zmiana w sesji działa natychmiast dla kolejnych narzędzi w tej samej rozmowie.
Argumenty
teamIdZwraca
Obiekt z teamId, teamName, persisted (true dla OAuth, false dla klucza API) i opcjonalną notatką.
Przykład
{"jsonrpc":"2.0","method":"tools/call","id":14,
"params":{"name":"set_current_team",
"arguments":{"teamId":"team_xxxxx"}}}
get_plan_limits
Odczytaj aktualny poziom subskrypcji użytkownika i limity w poszczególnych poziomach (kanały, miejsce, kredyty AI, publikowanie). Dostępne w każdym planie. Przydatne przed narzędziami zmieniającymi dane, by przewidzieć, czy wywołanie zostanie zablokowane.
Argumenty
Bez argumentów.
Zwraca
Obiekt z tier, tierDisplayName, isPaid, isTrial, upgradeUrl, limits (channels/storage/aiCalls/posts, każde jako {limit, current, exceeded} lub {limit, allowed}) i creditsAvailable ({total, subscriptionRemaining, purchasedBalance} lub null).
Przykład
{"jsonrpc":"2.0","method":"tools/call","id":15,
"params":{"name":"get_plan_limits","arguments":{}}}
get_post_metrics
Pobierz metryki zaangażowania opublikowanego posta ze wszystkich platform, na które został wysłany. Twitter i Instagram zwracają pełne metryki (polubienia, retweety/udostępnienia, komentarze/odpowiedzi, wyświetlenia); LinkedIn, Threads i TikTok zwracają tylko status publikacji i adres URL (zbieranie zaangażowania odłożono do późniejszej wersji). Znormalizowana suma łączy polubienia/komentarze/udostępnienia/wyświetlenia z platform, które je zgłosiły.
Argumenty
postId Identyfikator posta More.You z wywołania list.
Zwraca
Obiekt z postId, status, providers: [{platform, publishedPostId, publishedUrl, publishedAt, status, metrics}] i totals: {likes, comments, shares, impressions}. metrics to obiekt z liczbami dla każdej platformy lub null, gdy platforma jeszcze nie zbiera zaangażowania.
Przykład
{"jsonrpc":"2.0","method":"tools/call","id":16,
"params":{"name":"get_post_metrics",
"arguments":{"postId":""}}}
get_publish_status
Sprawdź, co stało się z zaplanowanym postem: stan w kolejce, sukces/błąd na każdej platformie, czas przetwarzania i identyfikator zadania workera. Zwraca isScheduled=false dla postów, które istnieją jako szkice, ale nigdy nie trafiły do kolejki publikacji, z podpowiedzią wskazującą schedule_post.
Argumenty
postId Identyfikator posta More.You z wywołania list.
Zwraca
Obiekt z postId, isScheduled, status, scheduledAt, publishedAt, platforms, processingTimeMs, jobId, topLevelError i results: [{platform, success, publishedPostId, publishedAt, error}]. Zawiera hint, gdy isScheduled ma wartość false.
Przykład
{"jsonrpc":"2.0","method":"tools/call","id":17,
"params":{"name":"get_publish_status",
"arguments":{"postId":""}}}
update_brand_profile
Zmień aktywny profil marki użytkownika. Dozwolone pola: bio, brandVoice, personalityTraits, mainThemes, expertiseAreas, preferredHashtags, audienceSize. Wszystko inne jest po cichu pomijane. „Aktywny” oznacza najpierw domyślny profil zespołu, a potem pierwszy własny aktywny profil użytkownika.
Argumenty
brandVoice Tablica opisów głosu marki (np. ["professional", "concise"]).
Inne pola do zmiany: bio, personalityTraits, mainThemes, expertiseAreas, preferredHashtags, audienceSize.
Zwraca
Obiekt z profileId, name, updated: [nazwy zmienionych pól] oraz aktualnymi wartościami bio, brandVoice, personalityTraits, mainThemes, expertiseAreas, preferredHashtags, audienceSize po zmianie.
Przykład
{"jsonrpc":"2.0","method":"tools/call","id":18,
"params":{"name":"update_brand_profile",
"arguments":{"brandVoice":["professional","concise"]}}}
get_best_time_to_post Plan płatny
Zarekomenduj N najlepszych terminów (dayOfWeek, hour) dla następnego posta na wybranej platformie, uszeregowanych według zaangażowania na post z ostatnich 90 dni. Twitter i Instagram zwracają wyniki ważone zaangażowaniem; LinkedIn, Threads i TikTok są szeregowane tylko według częstotliwości postów. Godziny podawane są w przekazanej strefie czasowej IANA (domyślnie UTC). Wymagany płatny plan.
Argumenty
platform Platforma społecznościowa: twitter, instagram, linkedin, threads lub tiktok.
timezone Nazwa strefy czasowej IANA (np. Europe/Berlin, America/New_York). Domyślnie UTC.
topN Liczba zwracanych rekomendacji terminów (1-24, domyślnie 5).
Zwraca
Obiekt z platform, timezone, sampleWindowDays, sampleSize, metricsAvailable i recommendations: [{dayOfWeek (1-7, Mon=1), dayLabel, hour (0-23), score, basedOn: {posts, avgEngagement}}]. Zawiera hint dla zimnego startu lub braku metryk.
Przykład
{"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
Przeszukaj katalog narzędzi MCP według zapytania tekstowego, kategorii lub zamiaru. Zwraca kategorie, requiresScope, jednozdaniowe opisy i tagi przypadków użycia, które pasowały. Za darmo we wszystkich planach (powierzchnia wyszukiwania).
Argumenty
Wszystko opcjonalne. Wywołaj bez argumentów, aby wyświetlić wszystkie dostępne narzędzia.
query Wyszukiwanie tekstowe po nazwach narzędzi, opisach i tagach przypadków użycia.
category Filtr do jednej kategorii: posts, accounts, analytics, brand, teams, discovery, other.
Zwraca
Obiekt z totalTools, matchCount, categories: [string[]] i tools: [{name, category, requiresScope, description, useCases, matchedOn: [name|category|description|use_case]}]. Zawiera hint, gdy brak dopasowań lub filtra.
Przykład
{"jsonrpc":"2.0","method":"tools/call","id":20,
"params":{"name":"search_tools",
"arguments":{"query":"why did my post fail"}}}
Zasoby MCP
Zasoby to kontekst tylko do odczytu, który klient może pobrać metodą MCP resources/read. Claude pobiera je na początku rozmowy, więc ma kontekst konta, zespołu i marki bez pytania Cię o to w każdej sesji.
moreyou://account/summary
E-mail i nick konta (żeby Claude mógł potwierdzić, na którym koncie działa), plan, wykorzystane kredyty AI / limit, liczba szkiców, liczba zaplanowanych postów i liczba połączonych kanałów. Liczniki mają limit 100 każdy dla szybkiego ładowania.
moreyou://channels/connected
Ten sam kształt co wynik list_connected_accounts; udostępniony jako zasób, więc Claude pobiera go raz na początku rozmowy (bez dodatkowego wywołania narzędzia).
moreyou://brand-profiles/active
Aktywny profil marki użytkownika (domyślny zespołu, a w razie braku pierwszy własny profil). Zwraca tylko pola istotne dla LLM: bio, expertiseAreas, personalityTraits, brandVoice, mainThemes, audienceSize, preferredHashtags.
moreyou://teams/current
Metadane bieżącego zespołu (teamId, teamName) oraz liczba totalTeamsAvailable. Połącz z list_teams + set_current_team, aby przełączyć.
Nazwane przepływy
Skróty w menu poleceń, które łączą kilka narzędzi. Wybierz jeden, a Twój asystent AI przeprowadzi Cię przez zadanie w wielu krokach, prosząc o potwierdzenie przed jakąkolwiek zmianą.
/weekly-plan
Odczytaj profil marki, połączone kanały i zaplanowane posty, a potem zaproponuj 5-10 szkiców rozłożonych od poniedziałku do piątku.
/draft-thread
Napisz wątek na Twitterze lub w Threads, złożony z 5-10 postów, na temat lub adres URL, który podasz, w głosie Twojej marki.
/audit-queue
Przejrzyj zaplanowane posty z najbliższych 7 dni i oznacz powtórzenia, przeciążenie platform i luki.
/channel-sweep
Porównaj połączone kanały z obsługiwanym zestawem i zasugeruj, które połączyć lub odświeżyć.
Punkty końcowe wykrywania i OAuth
Metadane zgodne ze standardami, dzięki którym każdy klient MCP może skonfigurować się automatycznie.
GET /.well-known/oauth-protected-resource/api: RFC 9728GET /.well-known/oauth-authorization-server: RFC 8414GET /oauth/.well-known/openid-configuration: OIDCPOST /oauth/reg: Dynamic Client Registration (RFC 7591)GET /oauth/auth: autoryzacja (wymagane PKCE-S256)POST /oauth/token: wymiana tokena
Otwarty kod
Gotowe przepisy do wklejenia i dokumentacja dla programistów znajdują się w naszym publicznym repozytorium dokumentacji. Licencja MIT; pull requesty mile widziane. github.com/moreyouhq/moreyou-mcp
Zarządzaj social mediami przez dowolnego asystenta AI
Planuj, pisz, harmonogramuj i audytuj posty na 7 platformach, rozmawiając z Claude, ChatGPT lub Cursorem. Jedno bezpieczne połączenie, każda funkcja More.You.
