SocialHub.AI

Panduan Integrasi MCP

Protokol Konteks Model (MCP) adalah standar terbuka yang memungkinkan asisten AI memanggil alat eksternal secara langsung. SocialHub mengimplementasikan server MCP sehingga Anda dapat mengelola toko, anggota, kupon, dan poin dari dalam Claude Desktop, Cursor, atau klien yang kompatibel dengan MCP.

Alih-alih menulis kode, Anda cukup meminta AI: "Daftar semua toko aktif" atau "Berikan 500 poin kepada anggota m_abc123" dan asisten akan memanggil alat SocialHub MCP atas nama Anda.

Konfigurasi Koneksi

SocialHub mengekspos endpoint HTTP Streamable MCP. Anda memerlukan dua informasi:

URL Titik Akhirhttps://flash.socialhub.ai/api/mcp
API Judul UtamaAuthorization: Bearer fl_live_...

Buat Kunci API di /flash/account/api-keys. Pastikan kunci tersebut memiliki cakupan yang dibutuhkan untuk alat yang akan Anda gunakan.

Claude Desktop Konfigurasi

Tambahkan yang berikut ini ke pengaturan Claude Desktop MCP Anda (claude_desktop_config.json):

{
  "mcpServers": {
    "flash": {
      "type": "http",
      "url": "https://flash.socialhub.ai/api/mcp",
      "headers": {
        "Authorization": "Bearer fl_live_your_key_here"
      }
    }
  }
}

Cursor Konfigurasi

Di Cursor, buka Pengaturan > MCP dan tambahkan server baru:

{
  "mcpServers": {
    "flash": {
      "type": "http",
      "url": "https://flash.socialhub.ai/api/mcp",
      "headers": {
        "Authorization": "Bearer fl_live_your_key_here"
      }
    }
  }
}

Bidang type juga menerima streamable-http sebagai alias. Klien desktop ini menyimpan kunci dalam file konfigurasi mereka — perlakukan sebagai rahasia, dan lebih suka bentuk variabel lingkungan (di bawah) jika didukung untuk menjaga kunci teks biasa agar tidak tersimpan di disk.

Terhubung dari Claude Code

Tambahkan SocialHub sebagai server HTTP MCP dengan perintah claude mcp add. Ekspor kunci Anda sebagai variabel lingkungan terlebih dahulu agar kunci teks biasa tidak pernah masuk ke dalam file konfigurasi atau riwayat shell Anda:

export FLASH_API_KEY="fl_live_your_key_here"

claude mcp add --transport http flash \
  https://flash.socialhub.ai/api/mcp \
  --header "Authorization: Bearer ${FLASH_API_KEY}"

Atau lakukan commit .mcp.json yang lingkupnya proyek di root repositori. Referensikan variabel lingkungan dengan ${FLASH_API_KEY} — jangan pernah menempelkan kunci teks biasa:

{
  "mcpServers": {
    "flash": {
      "type": "http",
      "url": "https://flash.socialhub.ai/api/mcp",
      "headers": {
        "Authorization": "Bearer ${FLASH_API_KEY}"
      }
    }
  }
}

Pemeriksaan mandiri setelah terhubung:

  • Jalankan claude mcp list dan konfirmasikan flash menunjukkan terhubung.
  • Minta asisten untuk "daftar alat SocialHub yang tersedia" — Anda seharusnya hanya melihat alat yang diizinkan oleh cakupan kunci Anda.
  • Kunci server harus persis flash; pastikan FLASH_API_KEY diekspor di shell yang meluncurkan Claude Code.

Perhatian: kunci yang tidak valid atau dicabut muncul sebagai koneksi gagal, bukan permintaan otentikasi. SocialHub menggunakan otentikasi bearer-token dengan tanpa fallback OAuth, jadi jika server menunjukkan gagal/terputus, periksa kembali nilai kunci dan pastikan memiliki cakupan yang Anda butuhkan sebelum melakukan debugging hal lain.

Alat yang Tersedia (75)

cwm_get_forecast_capabilities

Membaca TimesFM 2.5 Kesiapan tren/kuantil agregat dan kesiapan fusi penyewa-pribadi 7/30/90 hari. Menunggu pelatihan/validasi dinyatakan secara eksplisit. Membutuhkan predictions:read.

Parameter:
cwm_predict_next_behaviors

Satu prediksi konsumen: distribusi/peringkat acara berikutnya akhir ditambah CWM + TimesFM 7/30/90d purchaseWindows. Model acara penyewa yang diperoleh lebih disukai; satu referensi publik internal sebagai cadangan. Tidak ada keluaran ahli individu. Probabilitas acara tidak dikalibrasi; jendela pembelian null hingga dilatih/divalidasi. Membutuhkan predictions:read; metrics:read juga memungkinkan jendela pembelian.

Parameter: member_id*
cwm_forecast_aggregate_trend

Memprediksi metrik harian merek/kategori dengan TimesFM 2.5: titik + q10..q90. Riwayat pengembalian hilang nullKuantil agregat tidak dikalibrasi; tidak pernah berupa interval pribadi. Membutuhkan predictions:read AND metrics:read.

Parameter: metric?, horizon_days?, history_days?, category?
cwm_predict_purchase_windows

Penyewa-pribadi CWM + TimesFM Probabilitas pembelian pada 7/30/90 hari (0–1). Nol sampai dilatih dan divalidasi; tidak ada cadangan yang dibuat-buat. Membutuhkan predictions:read AND metrics:read.

Parameter: member_id
list_metrics

Daftar metrik yang tersedia untuk tim ini dari lapisan semantik yang diatur (kunci, label, unit, sertifikasi, kategori). Panggil terlebih dahulu untuk menemukan kunci metrik yang valid. Membutuhkan metrics:read.

Parameter: category?
describe_metric

Dapatkan spesifikasi lengkap dari satu metrik: definisi resmi, satuan, sertifikasi, dimensi, kolom yang dapat difilter, parameter yang dapat disesuaikan, dan panduan penggunaan. Membutuhkan metrics:read.

Parameter: metric
query_metric

Jalankan kueri metrik yang diatur dan kembalikan angka dengan definisi otoritatifnya. Pilih kunci metrik plus dimensi opsional, filter, rentang waktu, granularitas, dan perbandingan periode ke periode — jangan pernah menggunakan SQL. Membutuhkan metrics:read.

Parameter: metric, dimensions?, filters?, timeRange?, grain?, compare?, params?
breakdown_metric

Uraikan satu metrik berdasarkan satu dimensi dalam jendela terkini yang tetap, dengan label yang mudah dibaca manusia (nama toko/tingkat/saluran). Membutuhkan metrics:read.

Parameter: metric, dimension, days, state?
ask_metrics

Jawab pertanyaan dalam bahasa alami dengan memilih metrik yang tepat, mengambilnya, dan menguraikan metrik utama. Untuk diagnosis terbuka. Membutuhkan metrics:read.

Parameter: question, categories?
list_stores

Daftar semua toko untuk tim saat ini. Mendukung filter status opsional, pencarian, dan penomoran halaman.

Parameter: status?, search?, limit?, offset?
get_store

Dapatkan detail toko tertentu berdasarkan ID-nya.

Parameter: store_id
list_members

Daftar anggota program loyalitas. Mendukung filter program dan penomoran halaman.

Parameter: programId?, limit?, offset?, status?
get_member

Dapatkan detail anggota loyalitas tertentu berdasarkan ID. Mengembalikan bidang PII yang telah didekripsi.

Parameter: member_id
list_coupon_pools

Daftar kumpulan kupon. Mendukung filter status dan jenis.

Parameter: status?, coupon_type?, limit?, offset?
get_dashboard_stats

Gambaran singkat dasbor operasional (tangkapan, pemindaian, tingkat tangkapan, kupon, toko, rencana). Bukan metrik yang diatur — gunakan alat metrik untuk metrik bisnis yang otoritatif.

Parameter: (none)
earn_points

Berikan poin loyalitas kepada anggota. Mengembalikan ID transaksi dan saldo baru.

Parameter: member_id, amount, description?
redeem_points

Mengurangi poin loyalitas dari anggota (konsumsi FIFO).

Parameter: member_id, amount, reason
get_points_balance

Dapatkan saldo poin anggota saat ini dan riwayat transaksi terbaru.

Parameter: member_id, limit?
get_member_coupons

Dapatkan kupon anggota yang tersedia (belum ditebus, belum kedaluwarsa).

Parameter: member_id
get_member_tier

Dapatkan tingkatan anggota saat ini, persyaratan peningkatan tingkatan berikutnya, dan semua tingkatan.

Parameter: member_id
get_member_receipts

Dapatkan riwayat pengajuan tanda terima anggota dengan status OCR dan poin yang diberikan.

Parameter: member_id, limit?
redeem_points_for_coupon

Tukarkan poin loyalitas dengan kupon dari kumpulan yang ditentukan (atomik: poin + kupon, atau tidak keduanya).

Parameter: member_id, pool_id, points_cost
issue_coupon

Terbitkan kupon dari kumpulan kupon kepada seorang anggota (anggota tunggal; audiens massal melalui alur konfirmasi So). Membutuhkan coupons:write.

Parameter: member_id, pool_id, run_id?
check_email_frequency

Periksa apakah email pemasaran dapat dikirim ke alamat di bawah batas frekuensi (1/hari, 2/minggu, 4/bulan).

Parameter: email
list_ambassador_candidates

Daftar kandidat Duta yang diberi skor untuk program loyalitas (mode Pro). Kosong dalam mode Lite.

Parameter: band?, status?, level?, sort_by?, limit?, offset?
get_ambassador_metrics

Dapatkan laporan ROI Ambassador: tiga sub-tujuan, retensi Bulan ke-2, dan gerbang go/no-go 90 hari.

Parameter: since_days?, assumed_paid_cac_usd?
issue_ambassador_code

Terbitkan atau tingkatkan kode afiliasi Ambassador pribadi anggota. Mengembalikan kode string.

Parameter: member_id, single_use?, max_redemptions?, min_order_amount?
get_tracking_stats

Dapatkan analitik kunjungan halaman/perilaku: gambaran umum, halaman teratas, rincian perangkat, atau sumber lalu lintas.

Parameter: metric?, period?, start?, end?, campaign?, limit?
get_member_profile

Profil gabungan anggota (keterjangkauan, persetujuan/CCPA(Loyalitas, penggabungan perdagangan/kategori/saluran/keterlibatan, preferensi yang dinyatakan, tag, geolokasi kasar, kelompok usia). PII disunting — tanpa nama atau nilai kontak. Membutuhkan members:read.

Parameter: member_id
get_member_timeline

Rangkaian perilaku terkini satu anggota (kunjungan, poin, kupon, email, tanda terima) + ringkasan, untuk menentukan tindakan yang dipersonalisasi. Mengembalikan PII yang telah didekripsi. Membutuhkan members:behavior:read.

Parameter: member_id, limit?
list_segments

Cantumkan segmen audiens tim (nama, status, jumlah anggota yang tersimpan). Diperlukan segments:read.

Parameter: status?, limit?, offset?
create_segment

Buat segmen audiens dari kondisi terstruktur (jangan pernah menggunakan SQL); menolak duplikat. Membutuhkan segments:write + kunci milik pengguna.

Parameter: name, conditions, description?
list_automations

Cantumkan otomatisasi tim (kampanye yang dipicu oleh peristiwa) dan statusnya. Membutuhkan automations:read.

Parameter: status?
pause_automation

Jeda otomatisasi yang sedang berjalan berdasarkan ID kampanye (idempoten). Membutuhkan automations:write.

Parameter: campaign_id
list_campaign_templates

Daftar templat kampanye yang tersedia untuk tim ini (resmi + tersimpan), untuk menemukan template_id untuk create_campaign_draft. Membutuhkan campaigns:read.

Parameter: limit?
list_campaigns

Daftar kampanye terbaru tim (id, judul, status), untuk menemukan source_campaign_id untuk mengkloning draf. Membutuhkan campaigns:read.

Parameter: limit?, status?
create_campaign_draft

Buat DRAFT kampanye dari templat atau kampanye sebelumnya (TIDAK PERNAH dikirim — tinjauan manusia diperlukan). Membutuhkan campaigns:write-draft.

Parameter: title, template_id?, source_campaign_id?, segment_id?, merge_context?
check_member_reach

Periksa apakah anggota tersebut sudah dihubungi (sistem apa pun) di saluran dalam jangka waktu terakhir — hindari menghubungi secara berlebihan. Membutuhkan members:behavior:membaca.

Parameter: member_id, channel, days?
create_member

Buat anggota loyalitas, atau selesaikan secara idempoten anggota yang sudah ada dengan cara externalId/email. Persetujuan pemasaran TIDAK diaktifkan melalui MCP. Memerlukan members:write.

Parameter: email, fullName, phone?, externalId?, birthMonth?, birthDay?
update_member

Perbarui profil/identitas anggota (email, telepon, fullName, externalId, status). Kepemilikan tim diberlakukan. Membutuhkan members:write.

Parameter: member_id, email?, fullName?, phone?, externalId?, status?
upsert_store

Buat toko, atau perbarui toko yang sudah ada yang sesuai dengan externalId untuk tim ini. Membutuhkan stores:write.

Parameter: name, externalId?, address?, city?, state?, country?, timezone?
ingest_order

Catat pesanan pembelian dan berikan poin secara otomatis (anggota diselesaikan berdasarkan memberId > externalId > email). Membutuhkan orders:write.

Parameter: externalOrderId, customer, totalAmount, financialStatus?, currency?, orderName?, storeId?
reverse_points

Pengembalian poin (penarikan kembali) dari anggota, yang terkait dengan ID transaksi asli — untuk pengembalian dana POS/ERP atau pembatalan. Membutuhkan points:write.

Parameter: member_id, reversesTransactionId, amount, reason
list_tags

Daftar definisi tag tim (kunci, nama, siklus hidup, kategori, cakupan). Temukan tag_key sebelum membaca/menetapkan tag anggota. Membutuhkan tags:read.

Parameter: status?, group?, limit?, offset?
get_member_tags

Dapatkan tag anggota saat ini (kunci, nama, siklus hidup, nilai, sumber, assignedAt). Memerlukan members:read.

Parameter: member_id
assign_tag

Tetapkan tag secara manual ke anggota berdasarkan tag_key (penggantian operator; disematkan terhadap sapuan aturan). Membutuhkan tags:write.

Parameter: member_id, tag_key, value?
remove_tag

Hapus tag dari anggota secara manual berdasarkan tag_key (tag yang aktif dapat ditambahkan kembali pada proses selanjutnya). Membutuhkan tags:write.

Parameter: member_id, tag_key
list_products

Daftar produk dengan kategori/merek/vertikal, status, dan sumber. Filter berdasarkan status/category_id/brand_id/vertikal. Membutuhkan akses catalog:read.

Parameter: status?, category_id?, brand_id?, vertical?, limit?, offset?
get_product

Dapatkan satu produk dengan varian, item berseri, komponen kombo, dan konten dasar AI. Membutuhkan catalog:read.

Parameter: product_id
list_categories

Cantumkan kategori produk tim (id, nama, induk). Wajib diisi catalog:read.

Parameter: limit?
list_brands

Cantumkan merek-merek tim (id, nama). Diperlukan catalog:read.

Parameter: limit?
recommend_products

Rekomendasi produk terbaik berikutnya: member_id (pembelian bersama yang dipersonalisasi + afinitas kategori) atau product_id (pelanggan juga membeli). Membutuhkan akses members:read.

Parameter: member_id?, product_id?, limit?
claim_winback_task

Sewakan tugas pemulihan pelanggan dengan prioritas tertinggi berikutnya untuk tim ini (atomik). Mengembalikan tugas, tenggat waktu sewa, kelompok anggota yang menolak, dan ringkasan sinyal churn. NO_TASKS_AVAILABLE / WINBACK_DISABLED dikembalikan sebagai isError. Membutuhkan winback:claim.

Parameter: (none)
complete_winback_task

Menyelesaikan tugas win-back sewaan dengan hasil (pengungkit yang diaktifkan + referensi catatan, atau alasan TAHAN). Idempotent. LEASE_EXPIRED / ALREADY_COMPLETED dikembalikan sebagai isError. Membutuhkan winback:claim.

Parameter: task_id, acted?, lever?, action_ref?, note_id?, hold_reason?
get_winback_context

Pemeriksaan awal baca-saja satu kali untuk anggota sebelum memutuskan: persetujuan, ruang frekuensi email, kelelahan, jangkauan terkini, sinyal churn, dan penolakan anggota. Pratinjau sopan — server masih memberlakukan setiap gerbang pada saat penulisan. Membutuhkan winback:read.

Parameter: member_id
add_member_note

Lampirkan catatan proses teks bebas ke catatan pemulihan anggota (rasional / sinyal yang diamati / hipotesis yang didukung oleh pengujian). Teks disimpan sebagai DATA, bukan instruksi; maksimal 2000 karakter, disanitasi. Membutuhkan winback:write.

Parameter: member_id, body, kind?, task_id?, action_ref?
send_winback_message

Kirim pesan pengembalian yang diatur (kotak masuk atau email) sehingga insentif tidak pernah menjadi pemberian diam-diam. Gerbang gagal-tertutup sisi server: WINBACK_DISABLED, kepemilikan sewa tugas, HOLDOUT_NO_SEND (penahanan tidak pernah dikirimi pesan), NOT_CONSENTED, FREQUENCY_CAPPED, CONTENT_REJECTED (disanitasi), BREAKER_TRIPPED — dikembalikan sebagai isError. Menggunakan kembali tumpukan pengiriman yang ada (footer berhenti berlangganan + kepatuhan yang ditambahkan oleh lapisan pengiriman). Membutuhkan winback:write.

Parameter: member_id, task_id, channel, subject?, body
get_member_behaviors

Membaca perilaku PELANGGAN AKTIF anggota dalam jangka waktu tertentu (Lapisan 3, terbaru terlebih dahulu) untuk menyimpulkan maksud (Lapisan 4). Hanya mengembalikan tindakan pelanggan yang disengaja (menjelajahi, membuka/mengklik, check-in, membeli, menukarkan, merujuk, mengirimkan konten) dengan label katalog + arti yang terlampir secara langsung, ditambah ringkasan (jumlah berdasarkan jenis + jendela). Alasan di seluruh jendela; maksud adalah hipotesis untuk dikonfirmasi, bukan fakta. Hanya baca. Membutuhkan winback:read.

Parameter: member_id, since_days?, limit?
claim_agent_task

Sewakan tugas keputusan agen berikutnya untuk tim ini (atomik; secara opsional dipersempit berdasarkan jenis). Mengembalikan ID tugas, jenis, fakta subjek, dan tenggat waktu sewa. NO_TASKS_AVAILABLE / AGENT_TASKS_DISABLED dikembalikan sebagai isError. Membutuhkan agent_tasks:claim.

Parameter: kind?
get_agent_task

Baca fakta tugas keputusan agen (jenis, subjek, alasan bendera, status) sebelum memutuskan. AGENT_TASK_NOT_FOUND dikembalikan sebagai isError. Membutuhkan agent_tasks:read.

Parameter: taskId
complete_agent_task

Selesaikan tugas sewa dengan sebuah keputusan, terapkan efeknya melalui penulisan idempoten yang ada. fraud_household_referral: blokir (tarik kembali kedua belah pihak) / izinkan (abaikan bendera) / eskalasi (serahkan kepada manusia). ALREADY_COMPLETED / NOT_LEASE_OWNER / LEASE_EXPIRED dikembalikan sebagai isError. Membutuhkan agent_tasks:claim.

Parameter: taskId, decision, reason?
list_objects

Sebutkan objek bisnis yang dapat dipertimbangkan oleh tim ini: objek platform inti (anggota, pesanan, toko, kupon, kampanye, produk, segmen, tag) ditambah objek-objek milik tim ini. MCP-Objek kustom yang terlihat — kunci, label, dan arti satu baris yang otoritatif. Panggil terlebih dahulu untuk menemukan yang valid. object kunci. Membutuhkan introspection:read.

Parameter: (none)
describe_object

Jelaskan satu bisnis object Dari registri yang diatur: makna otoritatif ditambah properti yang dipartisi menjadi fakta (berbasis kolom), turunan (referensi metrik/tag/rollup dengan kebaruan — tidak pernah menurunkan kaliber ulang), dan kustom (bidang kustom tim ini). Properti PII hanya mengembalikan metadata, tidak pernah nilai. bidang=ringkasan (default) atau lengkap. Membutuhkan introspection:read.

Parameter: object, fields?
list_actions

Sebutkan tindakan agen yang diatur (apa yang dapat dilakukan agen): target object, efek samping, perlengkapan (otomatis/ulasan/terlarang), kunci prasyarat sisi server, batasan nilai, dan kemampuan untuk dibalik — periksa sendiri sebelum mengusulkan penulisan. Secara opsional, filter berdasarkan object. Memerlukan introspection:read.

Parameter: object?
list_stamp_programs

Cantumkan kartu stempel tim (eStampInformasi program: ID, nama, jumlah stempel yang dibutuhkan untuk menyelesaikan, jenis hadiah (kupon/poin/manual), pengaturan ulang otomatis, dan status. Hubungi terlebih dahulu untuk mendapatkan informasi lebih lanjut. program_id. Memerlukan stamp:read.

Parameter: (none)
get_member_stamp_cards

Dapatkan kartu stempel aktif anggota: nama program, stempel saat ini, stempel yang dibutuhkan, penyelesaian sejauh ini, dan hadiah. Membutuhkan stamp:read.

Parameter: member_id
grant_stamps

Memberikan stempel kepada anggota untuk program stempel (misalnya, kunjungan toko). Idempoten dengan idempotency_key; setelah penyelesaian kartu, hadiah (kupon/poin) dikeluarkan secara otomatis. Jumlah dibatasi per panggilan. Membutuhkan stamp:write.

Parameter: program_id, member_id, amount?, reason?, idempotency_key?
get_member_points

Poin anggota: saldo yang dapat dibelanjakan, poin yang diperoleh seumur hidup, penukaran, tingkatan saat ini, batch yang akan segera berakhir. Kunci terikat anggota → poin sendiri (abaikan member_id); kunci tim → berikan member_id. Membutuhkan loyalty:self:read.

Parameter: member_id?
get_member_points_history

Transaksi poin terbaru anggota (diperoleh/ditukarkan/disesuaikan), terbaru terlebih dahulu. Keterangan anggota → riwayat pribadi; keterangan tim → riwayat tim. member_id. Memerlukan loyalty:self:membaca.

Parameter: member_id?
get_member_rewards

Hadiah yang dapat ditukarkan anggota dengan poin — katalog dengan biaya poin, ditandai berdasarkan keterjangkauan terhadap saldo anggota. Kunci yang terikat pada anggota → milik sendiri; kunci tim → bagikan member_id. Memerlukan loyalty:self:membaca.

Parameter: member_id?
get_loyalty_program_rules

Cara kerja program loyalitas — tingkat perolehan, bonus selamat datang, nilai poin, cara bergabung — plus FAQ yang disetujui merek. Fakta publik. Kunci yang terikat anggota tidak memerlukan argumen. Membutuhkan loyalty:self:read.

Parameter: member_id?
list_synthetic_scenarios

Cantumkan skenario simulasi panel sintetis beserta batas kegunaan sebenarnya, batas kepercayaan maksimum, dan kolom inputnya masing-masing. Hubungi terlebih dahulu untuk memilih jenisnya. Membutuhkan metrics:read.

Parameter: (none)
get_synthetic_calibration

Kalibrasi panel sintetis merek (tingkat keberhasilan prediksi sintetis masa lalu vs kenyataan; null sampai ada backtest). Membutuhkan metrics:read.

Parameter: (none)
get_synthetic_report

Bacalah laporan jujur ​​yang dibekukan untuk menjalankan panel sintetis — pembacaan arah, batas kepercayaan, bendera penekanan, tema — atau blockReason Jika belum siap. Membutuhkan metrics:read.

Parameter: run_id
run_synthetic_panel

Jalankan panel sintetis: kembaran digital anonim dari suatu segmen bereaksi terhadap stimulus, menghasilkan laporan arah yang jujur ​​(tidak pernah berupa angka absolut sebenarnya). Mengembalikan run_id untuk di-polling. Dibatasi oleh batas run harian + ≤50 kembaran. Membutuhkan synthetic:write.

Parameter: segment_id, kind, fields

Keamanan & Privasi

Antarmuka MCP adalah lapisan kenyamanan AI, bukan alat administrasi massal. Beberapa hal yang perlu diingat:

  • Server adalah batasnya, bukan obrolan. Operasi penulisan (memberikan/menukarkan poin, menerbitkan kupon, menerbitkan kode Duta) memerlukan cakupan penulisan yang sesuai dan dibatasi oleh pengaman sisi server: batas nilai per panggilan ditambah batas laju penulisan per kunci, keduanya diberlakukan jika gagal. Konfirmasi apa pun dalam obrolan yang diminta klien AI Anda adalah bentuk kesopanan — serverlah yang sebenarnya menghentikan kunci yang bocor atau model yang disuntikkan prompt dari menguras poin.
  • Beberapa alat baca mengembalikan PII anggota. Alat seperti get_member dan list_members dapat mengembalikan nama dan email yang telah didekripsi ke klien AI Anda. Perlakukan data tersebut sesuai kebutuhan dan utamakan kunci dengan hak akses minimal.
  • Jangan pernah melakukan commit kunci teks biasa. Selalu merujuk pada ${FLASH_API_KEY} dalam .mcp.json yang telah di-check-in, bukan kunci literal.
  • Gunakan kunci dengan hak akses minimal dan hanya baca. Buat kunci yang hanya mencakup alat yang Anda butuhkan. Jika sebuah kunci tidak memiliki cakupan alat tertentu, alat tersebut akan disembunyikan — alat tersebut tidak akan pernah muncul dalam daftar.

Angka Berasal dari Lapisan Semantik yang Diatur

Setiap metrik yang dilaporkan AI — GMV, anggota aktif, tingkat penukaran, dan lainnya — mengalir melalui lapisan metrik yang diatur oleh SocialHub, yang memegang satu definisi (dan sertifikasi) otoritatif untuk setiap metrik. Alat list_metrics, describe_metric, query_metric, breakdown_metric, dan ask_metrics memilih kunci dan dimensi metrik di bawah tata kelola tersebut — AI tidak pernah menulis SQL. Jadi angka yang Anda dapatkan sesuai dengan dasbor Anda, bukan agregat ad-hoc yang rentan terhadap penyimpangan.

Contoh Percakapan

Anda: "Daftar semua toko aktif"
Claude: Panggilan list_stores dengan status="aktif"
Claude: "Anda memiliki 3 toko aktif: Toko Utama Pusat Kota, Kios Mal, dan Toko Pop-up Bandara."