MCP

Referensi tool

Semua tool yang disediakan server MCP More.You, lengkap dengan input, bentuk hasil, dan contoh yang bisa langsung disalin.

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.

POST https://mcp.more.you/api

Tools

list_scheduled_posts

Tampilkan postingan terjadwalmu (sudah antre untuk terbit tetapi belum terkirim).

Argumen

limitnumber ·opsional · default 20
Jumlah hasil maksimum yang dikembalikan (1-100, default 20).
fromstring (ISO 8601) ·opsional
Timestamp ISO; hanya mengembalikan postingan yang dijadwalkan pada waktu ini atau sesudahnya.

Hasil

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

limitnumber ·opsional · default 20
Jumlah hasil maksimum yang dikembalikan (1-100, default 20).

Hasil

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

platformenum ·opsional
Platform media sosial: twitter, instagram, linkedin, threads, atau tiktok.
windowDays7 | 30 | 90 ·opsional · default 30
Rentang waktu ke belakang dalam hari: 7, 30, atau 90 (default 30).

Hasil

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

platformenum ·wajib
Platform media sosial: twitter, instagram, linkedin, threads, atau tiktok.
contentstring ·wajib
Isi postingan (1-2200 karakter).
mediaUrlsarray<string> ·opsional
Sampai 10 URL gambar/video.
clientRequestIdstring ·opsional
Kunci idempotensi opsional. Kunci yang sama dalam 5 menit mengembalikan hasil yang tersimpan di cache.

Hasil

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

postIdstring ·wajib
ID postingan More.You dari pemanggilan list.
contentstring ·opsional
Isi postingan (1-2200 karakter).
mediaUrlsarray<string> ·opsional
Sampai 10 URL gambar/video.
clientRequestIdstring ·opsional
Kunci idempotensi opsional. Kunci yang sama dalam 5 menit mengembalikan hasil yang tersimpan di cache.

Hasil

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

platformenum ·wajib
Platform media sosial: twitter, instagram, linkedin, threads, atau tiktok.

Hasil

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

postIdstring ·wajib
ID postingan More.You dari pemanggilan list.
scheduledAtstring (ISO 8601) ·wajib
Timestamp ISO 8601; tidak boleh lebih dari 5 menit di masa lalu.

Hasil

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

postIdstring ·wajib
ID postingan More.You dari pemanggilan list.

Hasil

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

postIdstring ·wajib
ID postingan More.You dari pemanggilan list.

Hasil

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

postIdstring ·wajib
ID postingan More.You dari pemanggilan list.

Hasil

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

querystring ·wajib
Substring yang dicari (3-200 karakter; karakter meta regex di-escape).
statusenum ·opsional
Opsional: DRAFT | SCHEDULED | PUBLISHED | FAILED | CANCELLED.
platformenum ·opsional
Platform media sosial: twitter, instagram, linkedin, threads, atau tiktok.
limitnumber ·opsional · default 20
Jumlah hasil maksimum yang dikembalikan (1-100, default 20).

Hasil

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

teamIdstring ·wajib
teamId tujuan dari list_teams. Keanggotaan divalidasi ulang di sisi server.

Hasil

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 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 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.

Bahasa