Authenticatie
Elk verzoek aan https://mcp.more.you/api vereist een Authorization-header met een Bearer-token. Je hebt twee manieren om er een te krijgen.
OAuth (aanbevolen voor AI-clients)
AI-clients voeren bij de eerste verbinding Dynamic Client Registration uit en leiden de gebruiker daarna door een OAuth-toestemmingsscherm. De pagina /mcp/connect regelt dit automatisch. Je client krijgt een toegangstoken van 30 dagen.
API-sleutel
Genereer voor scripts en CI een persoonlijke API-sleutel in de More.You-app onder Account → API Keys. De sleutel begint met apikey_ en wordt net als elk ander token als bearer-token doorgegeven.
Endpoint
Alle tool-aanroepen gaan naar één JSON-RPC 2.0-endpoint via HTTPS POST.
Tools
list_scheduled_posts
Toon je ingeplande posts (in de wachtrij om te publiceren, maar nog niet verzonden).
Argumenten
limitfromGeeft terug
Een object met posts: [{id, platform, content, scheduledAt, status}]. Maximaal limit resultaten.
Voorbeeld
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
Toon je conceptposts (nog niet gepland).
Argumenten
limitGeeft terug
Een object met drafts: [{id, platform, content, updatedAt}]. Maximaal limit resultaten.
Voorbeeld
{"jsonrpc":"2.0","method":"tools/call","id":2,
"params":{"name":"list_drafts","arguments":{"limit":10}}}
list_connected_accounts
Toon de social accounts die aan je team zijn gekoppeld.
Argumenten
Geen argumenten.
Geeft terug
Een object met accounts: [{platform, handle, connected, lastSyncAt}].
Voorbeeld
{"jsonrpc":"2.0","method":"tools/call","id":3,
"params":{"name":"list_connected_accounts","arguments":{}}}
get_account_healthBetaald abonnement
Haal een gezondheidssamenvatting op voor alle gekoppelde platforms.
Argumenten
platformwindowDaysGeeft terug
Een object met windowDays, postsScheduled, postsPublished, postsFailed, een byPlatform-uitsplitsing en topErrors[].
Voorbeeld
{"jsonrpc":"2.0","method":"tools/call","id":4,
"params":{"name":"get_account_health",
"arguments":{"windowDays":30}}}
create_post_draft
Maak een nieuwe conceptpost. Concepten worden niet automatisch gepubliceerd.
Argumenten
platformcontentmediaUrlsclientRequestIdGeeft terug
Een object met het nieuwe concept: {id, platform, content, status: "DRAFT", createdAt}.
Voorbeeld
{"jsonrpc":"2.0","method":"tools/call","id":5,
"params":{"name":"create_post_draft",
"arguments":{"platform":"twitter",
"content":"Hello from MCP"}}}
update_post_draft
Werk een bestaand concept bij. Je moet minstens content of mediaUrls meegeven.
Argumenten
postIdcontentmediaUrlsclientRequestIdGeeft terug
Een object met het bijgewerkte concept: {id, platform, content, mediaUrls, status, updatedAt}.
Voorbeeld
{"jsonrpc":"2.0","method":"tools/call","id":6,
"params":{"name":"update_post_draft",
"arguments":{"postId":"",
"content":"Updated copy"}}}
connect_channel
Maak een eenmalige URL die de gebruiker kan openen om een nieuwe platformkoppeling te autoriseren.
Argumenten
platformGeeft terug
Een object met authUrl (eenmalige link die de gebruiker opent om te autoriseren), expiresAt en platform.
Voorbeeld
{"jsonrpc":"2.0","method":"tools/call","id":7,
"params":{"name":"connect_channel",
"arguments":{"platform":"linkedin"}}}
schedule_post
Zet een concept (status DRAFT) op een later tijdstip in de BullMQ-publicatiewachtrij. Idempotent binnen ±60 s afwijking; weigert pogingen om op een ander tijdstip opnieuw te plannen zonder eerst expliciet te annuleren.
Argumenten
postIdscheduledAtGeeft terug
Een object met postId, scheduledAt (ISO), status: SCHEDULED.
Voorbeeld
{"jsonrpc":"2.0","method":"tools/call","id":8,
"params":{"name":"schedule_post",
"arguments":{"postId":"",
"scheduledAt":"2026-05-10T09:00:00Z"}}}
cancel_scheduled_post
Annuleer een ingeplande post en haal hem uit de publicatiewachtrij. Het onderliggende concept blijft bewaard.
Argumenten
postIdGeeft terug
Een object met postId en status: CANCELLED.
Voorbeeld
{"jsonrpc":"2.0","method":"tools/call","id":9,
"params":{"name":"cancel_scheduled_post",
"arguments":{"postId":""}}}
delete_draft
Verwijder een conceptpost definitief. Weigert posts die geen DRAFT zijn (gebruik cancel_scheduled_post voor SCHEDULED).
Argumenten
postIdGeeft terug
Een object met postId en deleted: true.
Voorbeeld
{"jsonrpc":"2.0","method":"tools/call","id":10,
"params":{"name":"delete_draft",
"arguments":{"postId":""}}}
get_post
Geef de volledige PostGroup voor een postId terug, met content per provider en platform, status en tijdstempels.
Argumenten
postIdGeeft terug
Een object met postId, status, scheduledAt, createdAt, updatedAt en providers (record van platform → content).
Voorbeeld
{"jsonrpc":"2.0","method":"tools/call","id":11,
"params":{"name":"get_post",
"arguments":{"postId":""}}}
search_posts
Zoek op deeltekst (niet hoofdlettergevoelig) in de postinhoud van het actieve team. Filters: status, platform, limit (1-100, standaard 20).
Argumenten
querystatusplatformlimitGeeft terug
Een object met posts: [{postId, status, platforms, snippet, scheduledAt, updatedAt}]. De snippet bevat de overeenkomende context met een weglatingsteken aan beide kanten.
Voorbeeld
{"jsonrpc":"2.0","method":"tools/call","id":12,
"params":{"name":"search_posts",
"arguments":{"query":"launch","limit":10}}}
list_teams
Geef de teams terug die de ingelogde gebruiker bezit of beheert, met het huidige actieve team gemarkeerd.
Argumenten
Geen argumenten.
Geeft terug
Een object met currentTeamId en teams: [{teamId, teamName, isCurrent}].
Voorbeeld
{"jsonrpc":"2.0","method":"tools/call","id":13,
"params":{"name":"list_teams","arguments":{}}}
set_current_team
Wissel het actieve team voor dit Bearer-token. De gebruiker moet lid zijn. Wordt bewaard in het OAuth-tokendocument; een wijziging binnen de sessie is direct van kracht voor volgende tools in hetzelfde gesprek.
Argumenten
teamIdGeeft terug
Een object met teamId, teamName, persisted (true bij OAuth, false bij een API-sleutel) en een optionele note.
Voorbeeld
{"jsonrpc":"2.0","method":"tools/call","id":14,
"params":{"name":"set_current_team",
"arguments":{"teamId":"team_xxxxx"}}}
get_plan_limits
Lees het huidige abonnementsniveau van de gebruiker en de quota per niveau (kanalen, opslag, AI-credits, posten). Beschikbaar bij elk abonnement. Handig vóór tools die iets wijzigen, om te voorspellen of de aanroep wordt geblokkeerd.
Argumenten
Geen argumenten.
Geeft terug
Een object met tier, tierDisplayName, isPaid, isTrial, upgradeUrl, limits (channels/storage/aiCalls/posts elk als {limit, current, exceeded} of {limit, allowed}) en creditsAvailable ({total, subscriptionRemaining, purchasedBalance} of null).
Voorbeeld
{"jsonrpc":"2.0","method":"tools/call","id":15,
"params":{"name":"get_plan_limits","arguments":{}}}
get_post_metrics
Haal betrokkenheidsstatistieken op voor een gepubliceerde post op elk platform waarnaar hij is verzonden. Twitter en Instagram geven gevulde statistieken terug (likes, retweets/shares, reacties, vertoningen); LinkedIn, Threads en TikTok geven alleen de publicatiestatus en URL terug (verzamelen van betrokkenheid volgt in een latere release). Een genormaliseerd totaal telt likes/reacties/shares/vertoningen op over de platforms die ze rapporteerden.
Argumenten
postId De More.You-post-id uit een list-aanroep.
Geeft terug
Een object met postId, status, providers: [{platform, publishedPostId, publishedUrl, publishedAt, status, metrics}] en totals: {likes, comments, shares, impressions}. metrics is een object met aantallen per platform, of null als het platform nog geen betrokkenheid verzamelt.
Voorbeeld
{"jsonrpc":"2.0","method":"tools/call","id":16,
"params":{"name":"get_post_metrics",
"arguments":{"postId":""}}}
get_publish_status
Onderzoek wat er met een ingeplande post is gebeurd: wachtrijstatus, succes of fout per platform, verwerkingstijd en de job-id van de worker. Geeft isScheduled=false terug voor posts die als concept bestaan maar nooit in de publicatiewachtrij zijn gezet, met een hint die naar schedule_post verwijst.
Argumenten
postId De More.You-post-id uit een list-aanroep.
Geeft terug
Een object met postId, isScheduled, status, scheduledAt, publishedAt, platforms, processingTimeMs, jobId, topLevelError en results: [{platform, success, publishedPostId, publishedAt, error}]. Bevat hint wanneer isScheduled false is.
Voorbeeld
{"jsonrpc":"2.0","method":"tools/call","id":17,
"params":{"name":"get_publish_status",
"arguments":{"postId":""}}}
update_brand_profile
Pas het actieve merkprofiel van de gebruiker aan. Toegestane velden: bio, brandVoice, personalityTraits, mainThemes, expertiseAreas, preferredHashtags, audienceSize. Al het andere wordt stilzwijgend genegeerd. “Active” wordt eerst opgelost als teamstandaard, daarna als het eerste eigen actieve profiel van de gebruiker.
Argumenten
brandVoice Array van omschrijvingen van de merkstem (bijv. ["professional", "concise"]).
Overige aanpasbare velden: bio, personalityTraits, mainThemes, expertiseAreas, preferredHashtags, audienceSize.
Geeft terug
Een object met profileId, name, updated: [namen van de aangepaste velden] en de huidige waarden van bio, brandVoice, personalityTraits, mainThemes, expertiseAreas, preferredHashtags, audienceSize na de aanpassing.
Voorbeeld
{"jsonrpc":"2.0","method":"tools/call","id":18,
"params":{"name":"update_brand_profile",
"arguments":{"brandVoice":["professional","concise"]}}}
get_best_time_to_post Betaald abonnement
Geef de top N (dayOfWeek, hour)-momenten voor de volgende post op een bepaald platform, gerangschikt op betrokkenheid per post over de afgelopen 90 dagen. Twitter en Instagram geven scores gewogen op betrokkenheid; LinkedIn, Threads en TikTok rangschikken alleen op postfrequentie. Tijden staan in de opgegeven IANA-tijdzone (standaard UTC). Vereist een betaald abonnement.
Argumenten
platform Social platform: twitter, instagram, linkedin, threads of tiktok.
timezone Naam van de IANA-tijdzone (bijv. Europe/Berlin, America/New_York). Standaard UTC.
topN Aantal aanbevolen momenten dat wordt teruggegeven (1-24, standaard 5).
Geeft terug
Een object met platform, timezone, sampleWindowDays, sampleSize, metricsAvailable en recommendations: [{dayOfWeek (1-7, ma=1), dayLabel, hour (0-23), score, basedOn: {posts, avgEngagement}}]. Bevat hint voor een koude start of als statistieken niet beschikbaar zijn.
Voorbeeld
{"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
Doorzoek de MCP-toolcatalogus op vrije tekst, categorie of doel. Geeft categorieën, requiresScope, beschrijvingen van één regel en de gebruiksscenario-tags die overeenkwamen. Gratis bij elk abonnement (ontdekkingsfunctie).
Argumenten
Alles optioneel. Roep aan zonder argumenten om alle beschikbare tools te tonen.
query Zoek op vrije tekst in toolnamen, beschrijvingen en gebruiksscenario-tags.
category Filter op één categorie: posts, accounts, analytics, brand, teams, discovery, other.
Geeft terug
Een object met totalTools, matchCount, categories: [string[]] en tools: [{name, category, requiresScope, description, useCases, matchedOn: [name|category|description|use_case]}]. Bevat hint als er geen resultaat of geen filter is.
Voorbeeld
{"jsonrpc":"2.0","method":"tools/call","id":20,
"params":{"name":"search_tools",
"arguments":{"query":"why did my post fail"}}}
MCP Resources
Resources zijn alleen-lezen context die de client kan ophalen via de MCP-methode resources/read. Claude haalt ze aan het begin van een gesprek op, zodat het account-, team- en merkcontext heeft zonder dat je het elke sessie opnieuw vraagt.
moreyou://account/summary
E-mailadres en gebruikersnaam van het account (zodat Claude kan bevestigen met welk account het werkt), abonnement, gebruikte AI-credits / limiet, aantal concepten, aantal ingeplande posts en aantal gekoppelde kanalen. Aantallen zijn voor een snelle start gemaximeerd op 100.
moreyou://channels/connected
Dezelfde vorm als het resultaat van list_connected_accounts; aangeboden als resource zodat Claude hem één keer aan het begin van het gesprek ophaalt (zonder tool-aanroep).
moreyou://brand-profiles/active
Het actieve merkprofiel van de gebruiker (teamstandaard, anders het eerste eigen profiel). Geeft alleen velden terug die voor een LLM relevant zijn: bio, expertiseAreas, personalityTraits, brandVoice, mainThemes, audienceSize, preferredHashtags.
moreyou://teams/current
Metadata van het huidige team (teamId, teamName) plus het aantal beschikbare teams (totalTeamsAvailable). Combineer met list_teams + set_current_team om te wisselen.
Vaste workflows
Snelkoppelingen in het slash-menu die meerdere tools aansturen. Kies er een en laat je AI-assistent een taak in meerdere stappen doorlopen, met bevestiging voordat er iets wordt aangepast.
/weekly-plan
Lees merkprofiel, gekoppelde kanalen en ingeplande posts en stel dan 5-10 concepten voor, verdeeld van maandag tot vrijdag.
/draft-thread
Schrijf een Twitter- of Threads-thread van 5-10 posts over een onderwerp of URL die jij opgeeft, in de stem van je merk.
/audit-queue
Loop de ingeplande posts van de komende 7 dagen langs en markeer dubbelen, overbelasting van een platform en gaten.
/channel-sweep
Vergelijk gekoppelde kanalen met de ondersteunde set en stel voor welke je moet koppelen of vernieuwen.
Discovery- en OAuth-endpoints
Metadata volgens de standaarden, zodat elke MCP-client zichzelf automatisch kan instellen.
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: autorisatie (PKCE-S256 vereist)POST /oauth/token: token-uitwisseling
Open source
Kant-en-klare recepten en een referentie voor ontwikkelaars staan in onze openbare docs-repo. MIT-licentie; pull requests welkom. github.com/moreyouhq/moreyou-mcp
Beheer je social media met elke AI-assistent
Bedenk, schrijf, plan en controleer posts op 7 platforms door te chatten met Claude, ChatGPT of Cursor. Eén veilige verbinding, alle functies van More.You.
