Autentikasi
Setiap request ke https://mcp.more.you/api membutuhkan header Authorization dengan Bearer token. Ada dua cara untuk mendapatkannya.
OAuth (disarankan untuk klien AI)
Klien AI menjalankan Dynamic Client Registration saat pertama terhubung, lalu memandu pengguna melewati layar persetujuan OAuth. Halaman /mcp/connect menangani ini secara otomatis. Klienmu menerima access token berlaku 30 hari.
API key
Untuk script dan CI, buat API key pribadi di aplikasi More.You di Akun → API Keys. Key-nya diawali apikey_ dan dipakai sebagai bearer token seperti yang lain.
Endpoint
Semua pemanggilan tool masuk ke satu endpoint JSON-RPC 2.0 lewat HTTPS POST.
Tools
list_scheduled_posts
Tampilkan postingan terjadwalmu (sudah antre untuk terbit tetapi belum terkirim).
Argumen
limitfromHasil
Objek berisi posts: [{id, platform, content, scheduledAt, status}]. Maksimum sebanyak limit.
Contoh
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
Tampilkan draf postinganmu (belum dijadwalkan).
Argumen
limitHasil
Objek berisi drafts: [{id, platform, content, updatedAt}]. Maksimum sebanyak limit.
Contoh
{"jsonrpc":"2.0","method":"tools/call","id":2,
"params":{"name":"list_drafts","arguments":{"limit":10}}}
list_connected_accounts
Tampilkan akun media sosial yang terhubung ke timmu.
Argumen
Tanpa argumen.
Hasil
Objek berisi accounts: [{platform, handle, connected, lastSyncAt}].
Contoh
{"jsonrpc":"2.0","method":"tools/call","id":3,
"params":{"name":"list_connected_accounts","arguments":{}}}
get_account_healthPaket berbayar
Ambil ringkasan kesehatan di semua platform yang terhubung.
Argumen
platformwindowDaysHasil
Objek berisi windowDays, postsScheduled, postsPublished, postsFailed, rincian byPlatform, dan topErrors[].
Contoh
{"jsonrpc":"2.0","method":"tools/call","id":4,
"params":{"name":"get_account_health",
"arguments":{"windowDays":30}}}
create_post_draft
Buat draf postingan baru. Draf tidak terbit otomatis.
Argumen
platformcontentmediaUrlsclientRequestIdHasil
Objek berisi draf baru: {id, platform, content, status: "DRAFT", createdAt}.
Contoh
{"jsonrpc":"2.0","method":"tools/call","id":5,
"params":{"name":"create_post_draft",
"arguments":{"platform":"twitter",
"content":"Hello from MCP"}}}
update_post_draft
Perbarui draf yang sudah ada. Minimal salah satu dari content atau mediaUrls harus diisi.
Argumen
postIdcontentmediaUrlsclientRequestIdHasil
Objek berisi draf yang diperbarui: {id, platform, content, mediaUrls, status, updatedAt}.
Contoh
{"jsonrpc":"2.0","method":"tools/call","id":6,
"params":{"name":"update_post_draft",
"arguments":{"postId":"",
"content":"Updated copy"}}}
connect_channel
Buat URL sekali pakai yang bisa dibuka pengguna untuk mengotorisasi koneksi platform baru.
Argumen
platformHasil
Objek berisi authUrl (link sekali pakai yang dibuka pengguna untuk mengotorisasi), expiresAt, dan platform.
Contoh
{"jsonrpc":"2.0","method":"tools/call","id":7,
"params":{"name":"connect_channel",
"arguments":{"platform":"linkedin"}}}
schedule_post
Pindahkan draf (status DRAFT) ke antrean terbit BullMQ pada timestamp di masa depan. Idempoten dalam selisih ±60 detik; menolak percobaan jadwal ulang di waktu lain tanpa pembatalan eksplisit terlebih dahulu.
Argumen
postIdscheduledAtHasil
Objek berisi postId, scheduledAt (ISO), status: SCHEDULED.
Contoh
{"jsonrpc":"2.0","method":"tools/call","id":8,
"params":{"name":"schedule_post",
"arguments":{"postId":"",
"scheduledAt":"2026-05-10T09:00:00Z"}}}
cancel_scheduled_post
Batalkan postingan terjadwal dan keluarkan dari antrean terbit. Draf aslinya tetap tersimpan.
Argumen
postIdHasil
Objek berisi postId dan status: CANCELLED.
Contoh
{"jsonrpc":"2.0","method":"tools/call","id":9,
"params":{"name":"cancel_scheduled_post",
"arguments":{"postId":""}}}
delete_draft
Hapus draf postingan secara permanen. Menolak postingan non-DRAFT (gunakan cancel_scheduled_post untuk SCHEDULED).
Argumen
postIdHasil
Objek berisi postId dan deleted: true.
Contoh
{"jsonrpc":"2.0","method":"tools/call","id":10,
"params":{"name":"delete_draft",
"arguments":{"postId":""}}}
get_post
Kembalikan PostGroup lengkap untuk postId tertentu beserta konten per platform, status, dan timestamp.
Argumen
postIdHasil
Objek berisi postId, status, scheduledAt, createdAt, updatedAt, dan providers (record platform → content).
Contoh
{"jsonrpc":"2.0","method":"tools/call","id":11,
"params":{"name":"get_post",
"arguments":{"postId":""}}}
search_posts
Pencarian substring (tidak peka huruf besar-kecil) di konten postingan untuk tim aktif. Filter: status, platform, limit (1-100, default 20).
Argumen
querystatusplatformlimitHasil
Objek berisi posts: [{postId, status, platforms, snippet, scheduledAt, updatedAt}]. Snippet memuat konteks yang cocok dengan elipsis di kedua sisi.
Contoh
{"jsonrpc":"2.0","method":"tools/call","id":12,
"params":{"name":"search_posts",
"arguments":{"query":"launch","limit":10}}}
list_teams
Kembalikan tim yang dimiliki atau diadmin pengguna terautentikasi, dengan tim yang sedang aktif ditandai.
Argumen
Tanpa argumen.
Hasil
Objek berisi currentTeamId dan teams: [{teamId, teamName, isCurrent}].
Contoh
{"jsonrpc":"2.0","method":"tools/call","id":13,
"params":{"name":"list_teams","arguments":{}}}
set_current_team
Ganti tim aktif untuk Bearer token ini. Pengguna harus menjadi anggota. Disimpan di dokumen token OAuth; perubahan dalam sesi langsung berlaku untuk tool berikutnya di percakapan yang sama.
Argumen
teamIdHasil
Objek berisi teamId, teamName, persisted (true jika OAuth, false jika API key), dan note opsional.
Contoh
{"jsonrpc":"2.0","method":"tools/call","id":14,
"params":{"name":"set_current_team",
"arguments":{"teamId":"team_xxxxx"}}}
get_plan_limits
Baca tingkat langganan pengguna saat ini dan kuota per tingkat (channel, penyimpanan, kredit AI, posting). Tersedia di semua paket. Berguna sebelum memanggil tool yang mengubah data untuk memperkirakan apakah pemanggilan akan diblokir.
Argumen
Tanpa argumen.
Hasil
Objek berisi tier, tierDisplayName, isPaid, isTrial, upgradeUrl, limits (channels/storage/aiCalls/posts masing-masing sebagai {limit, current, exceeded} atau {limit, allowed}), dan creditsAvailable ({total, subscriptionRemaining, purchasedBalance} atau null).
Contoh
{"jsonrpc":"2.0","method":"tools/call","id":15,
"params":{"name":"get_plan_limits","arguments":{}}}
get_post_metrics
Ambil metrik engagement untuk postingan yang sudah terbit di semua platform tujuannya. Twitter dan Instagram mengembalikan metrik lengkap (likes, retweet/shares, komentar/balasan, impresi); LinkedIn, Threads, dan TikTok hanya mengembalikan status terbit dan URL (pengumpulan engagement ditunda ke rilis berikutnya). Total ternormalisasi menjumlahkan likes/komentar/shares/impresi dari platform mana pun yang melaporkannya.
Argumen
postId ID postingan More.You dari pemanggilan list.
Hasil
Objek berisi postId, status, providers: [{platform, publishedPostId, publishedUrl, publishedAt, status, metrics}], dan totals: {likes, comments, shares, impressions}. metrics adalah objek jumlah numerik per platform, atau null jika platform belum mengumpulkan engagement.
Contoh
{"jsonrpc":"2.0","method":"tools/call","id":16,
"params":{"name":"get_post_metrics",
"arguments":{"postId":""}}}
get_publish_status
Diagnosis apa yang terjadi pada postingan terjadwal: status antrean, sukses/error per platform, waktu pemrosesan, dan job id dari worker. Mengembalikan isScheduled=false untuk postingan yang ada sebagai draf tetapi tidak pernah dipindahkan ke antrean terbit, disertai petunjuk ke schedule_post.
Argumen
postId ID postingan More.You dari pemanggilan list.
Hasil
Objek berisi postId, isScheduled, status, scheduledAt, publishedAt, platforms, processingTimeMs, jobId, topLevelError, dan results: [{platform, success, publishedPostId, publishedAt, error}]. Menyertakan hint saat isScheduled false.
Contoh
{"jsonrpc":"2.0","method":"tools/call","id":17,
"params":{"name":"get_publish_status",
"arguments":{"postId":""}}}
update_brand_profile
Ubah sebagian profil brand aktif pengguna. Field yang diizinkan: bio, brandVoice, personalityTraits, mainThemes, expertiseAreas, preferredHashtags, audienceSize. Field lain dibuang tanpa pemberitahuan. "active" diselesaikan dengan default tim terlebih dahulu, lalu profil aktif pertama milik pengguna.
Argumen
brandVoice Array deskriptor gaya bahasa brand (misalnya ["professional", "concise"]).
Field lain yang bisa diubah: bio, personalityTraits, mainThemes, expertiseAreas, preferredHashtags, audienceSize.
Hasil
Objek berisi profileId, name, updated: [nama field yang diubah], dan nilai terkini bio, brandVoice, personalityTraits, mainThemes, expertiseAreas, preferredHashtags, audienceSize setelah perubahan.
Contoh
{"jsonrpc":"2.0","method":"tools/call","id":18,
"params":{"name":"update_brand_profile",
"arguments":{"brandVoice":["professional","concise"]}}}
get_best_time_to_post Paket berbayar
Rekomendasikan N slot (dayOfWeek, hour) teratas untuk postingan berikutnya di platform tertentu, diurutkan menurut engagement per postingan selama 90 hari terakhir. Twitter dan Instagram mengembalikan skor berbobot engagement; LinkedIn, Threads, TikTok diurutkan hanya menurut frekuensi posting. Waktu memakai zona waktu IANA yang diberikan (default UTC). Butuh paket berbayar.
Argumen
platform Platform media sosial: twitter, instagram, linkedin, threads, atau tiktok.
timezone Nama zona waktu IANA (misalnya Europe/Berlin, America/New_York). Default UTC.
topN Jumlah rekomendasi slot yang dikembalikan (1-24, default 5).
Hasil
Objek berisi platform, timezone, sampleWindowDays, sampleSize, metricsAvailable, dan recommendations: [{dayOfWeek (1-7, Senin=1), dayLabel, hour (0-23), score, basedOn: {posts, avgEngagement}}]. Menyertakan hint untuk kasus data awal belum ada atau metrik tidak tersedia.
Contoh
{"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
Cari katalog tool MCP dengan kata kunci bebas, kategori, atau tujuan. Mengembalikan kategori, requiresScope, deskripsi satu baris, dan tag use-case yang cocok. Gratis untuk semua paket (jalur penemuan).
Argumen
Semuanya opsional. Panggil tanpa argumen untuk menampilkan semua tool yang tersedia.
query Pencarian kata kunci bebas di nama tool, deskripsi, dan tag use-case.
category Saring ke satu kategori: posts, accounts, analytics, brand, teams, discovery, other.
Hasil
Objek berisi totalTools, matchCount, categories: [string[]], dan tools: [{name, category, requiresScope, description, useCases, matchedOn: [name|category|description|use_case]}]. Menyertakan hint jika tidak ada yang cocok atau tanpa filter.
Contoh
{"jsonrpc":"2.0","method":"tools/call","id":20,
"params":{"name":"search_tools",
"arguments":{"query":"why did my post fail"}}}
MCP Resources
Resources adalah konteks read-only yang bisa diambil klien lewat metode MCP resources/read. Claude mengambilnya di awal percakapan agar punya konteks akun/tim/brand tanpa kamu bertanya ulang di setiap sesi.
moreyou://account/summary
Email dan username akun (supaya Claude bisa memastikan akun mana yang dipakai), paket, kredit AI terpakai / batas, jumlah draf, jumlah terjadwal, dan jumlah channel yang terhubung. Jumlah dibatasi 100 untuk masing-masing agar cepat dimuat.
moreyou://channels/connected
Bentuk yang sama dengan hasil list_connected_accounts; disediakan sebagai resource agar Claude mengambilnya sekali di awal percakapan (tanpa bolak-balik pemanggilan tool).
moreyou://brand-profiles/active
Profil brand aktif pengguna (default tim, lalu profil milik sendiri yang pertama). Hanya mengembalikan field yang relevan untuk LLM: bio, expertiseAreas, personalityTraits, brandVoice, mainThemes, audienceSize, preferredHashtags.
moreyou://teams/current
Metadata tim saat ini (teamId, teamName) plus jumlah totalTeamsAvailable. Gunakan bersama list_teams + set_current_team untuk berpindah.
Alur kerja bernama
Pintasan menu slash yang menjalankan beberapa tool sekaligus. Pilih satu dan biarkan asisten AI-mu menyelesaikan tugas bertahap dengan konfirmasi sebelum mengubah apa pun.
/weekly-plan
Baca profil brand, channel yang terhubung, dan postingan yang antre, lalu usulkan 5-10 draf yang tersebar Senin sampai Jumat.
/draft-thread
Tulis thread Twitter atau Threads berisi 5-10 postingan tentang topik atau URL yang kamu berikan, dengan gaya bahasa brand-mu.
/audit-queue
Telusuri postingan terjadwal 7 hari ke depan dan tandai yang ganda, platform yang kebanyakan postingan, dan celah.
/channel-sweep
Bandingkan channel yang terhubung dengan set yang didukung, lalu sarankan mana yang perlu dihubungkan atau disegarkan.
Endpoint discovery dan OAuth
Metadata sesuai standar agar klien MCP mana pun bisa mengonfigurasi diri secara otomatis.
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: Authorize (PKCE-S256 wajib)POST /oauth/token: Pertukaran token
Open source
Resep siap tempel dan referensi untuk developer ada di repo docs publik kami. Berlisensi MIT; pull request dipersilakan. github.com/moreyouhq/moreyou-mcp
Kelola media sosialmu dari asisten AI apa pun
Rencanakan, tulis draf, jadwalkan, dan audit postingan di 7 platform lewat chat dengan Claude, ChatGPT, atau Cursor. Satu koneksi aman, semua fitur More.You.
