MCP tool reference
Every tool JomForm exposes to connected AI agents via the Model Context Protocol. Connect any MCP client to https://mcp.jomform.com/mcp and agents discover these tools automatically. This reference is kept in sync with the tool registry.
127 tools across 29 categories.
Forms
upsert_formCipta/kemaskini borang (form_id kosong = baru). Config blocks ikut get_form. Theme (pilihan) = gaya/branding tersuai.
set_form_themeSet gaya/branding tersuai borang (issue #254): primary, background, text, card_background, card_border_radius, font_family, logo_url, layout (centered|full_width|split), spacing (compact|comfortable|spacious), custom_css. Agent bebas set CSS; JomForm kekal kuasa ke atas harga & pembayaran.
register_form_fieldsDaftar medan input borang (issue #254) dengan kontrak ketat: {field_id, type, label, required, validation?, product_id?}. type mesti jenis input JomForm (name|email|phone|textarea|number|select|radio|checkbox|date|time|website|address|consent|hidden|list|repeater|image-choice|captcha). Ganti semua medan sedia ada. Harga kekal dari DB produk (server authority).
generate_formJana konfigurasi borang (blok + gaya) dari prompt semula jadi (issue #256) via deepseek-v4-flash. Output disahkan server-side terhadap jenis blok JomForm; harga produk kekal dari DB (server authority). Semak/edit dulu, kemudian simpan guna upsert_form.
publish_formPublish borang — live di <workspace>.jomform.com/<slug> atau custom domain. status=private (dengan password) menjadikannya borang ber-kata laluan; status=draft menarik balik.
unpublish_formTarik balik borang dari live (jadikan draft).
set_form_passwordSet/buang kata laluan akses borang private (argon2id-hashed; tidak pernah dipulangkan). Password kosong = buang kata laluan.
get_form_restrictionsBaca sekatan borang (issue #207): jadual mula/tamat (start_at/end_at) + had penyertaan (entry_limit) + mesej peringkat.
set_form_restrictionsSet sekatan borang (issue #207): jadual mula/tamat + had penyertaan + mesej. Kosong = buang sekatan.
get_form_og_imageBaca imej Open Graph (og:image) borang (issue #411): URL imej tersuai bila ditetapkan, kosong = guna lalai janaan /og/{slug}.png.
set_form_og_imageSet imej Open Graph (og:image) borang (issue #411): URL imej tersuai (mesti https://) untuk pratonton sosial bila borang dikongsi. Kosong = guna lalai janaan.
delete_formSoft-delete borang (pergi ke trash dashboard; slug dilepaskan). Boleh dipulihkan.
bulk_formsTindakan pukal atas banyak borang sekali gus: action=publish|draft|delete dengan ids[] (maks 500).
Products
list_productsSenarai semua produk aktif dalam akaun JomForm anda.
create_productCipta produk baharu. Untuk langganan, set type='subscription' dan billing_period='month'|'year'.
archive_productNyahaktifkan produk (dulang tanpa padam data).
list_product_variationsSenarai variasi produk (name, price_sen, stock, images, sort_order) untuk satu produk. Produk simple = senarai kosong.
update_productKemaskini produk: nama, harga (price_sen), stok, jenis (type), billing_period (langganan), aktif/tidak. Omit medan tak berubah.
bulk_productsArkibkan banyak produk sekali gus (active=false). ids[] maks 500.
Sales
list_salesSenarai jualan terkini (terbaru dahulu).
get_sales_summaryRingkasan jualan: bilangan mengikut status dan jumlah nilai.
confirm_saleSahkan jualan (contoh: selepas semak bukti bank transfer).
get_sale_email_statusStatus emel resit untuk satu jualan: Sent → Delivered → Opened → (Clicked) dengan masa. Guna ref_code dari list_sales.
export_sales_csvEksport jualan akaun sebagai CSV (ref_code, status, payment_method, buyer, total_rm, created_at, purchase_id). Boleh tapis form_id. Pulangkan kandungan csv.
Skip-capture
capture_saleCapture authorisasi skip_capture (kad buyer dicaj sekarang). amount_sen optional untuk partial.
release_saleRelease (void) authorisasi skip_capture — kad buyer TIDAK dicaj.
refund_saleRefund jualan yang telah dibayar (paid/confirmed). amount_sen optional untuk partial; kosong = refund penuh. Status jualan jadi refunded.
capture_all_pending_salesCapture SEMUA authorisasi skip_capture yang masih menunggu. Satu kegagalan tidak hentikan yang lain; balas per-ref.
Subscriptions
list_subscriptionsSenarai langganan akaun: pelanggan (emel), produk, jumlah/period, status (active/past_due/cancelled), tarikh caj seterusnya. Tapis ?status, page/limit.
cancel_subscriptionBatalkan langganan pelanggan. Kad token kekal pada merchant — boleh aktif semula.
update_subscription_cardKemas kini kad pada langganan sedia ada (issue #154): cipta token purchase baharu supaya pelanggan boleh sahkan kad baharu. Pulangkan checkout_url untuk dihantar kepada pelanggan. Token lama kekal di CHIP (tidak dibatalkan) tetapi tidak lagi digunakan.
CHIP per-form
set_form_chip_overrideSet kredensial CHIP khusus untuk SATU borang (brand_id + secret_key). Bila set, borang tersebut guna kredensial ini, bukan default akaun. Secret disimpan terenkripsi.
clear_form_chip_overrideKosongkan override sebuah borang — kembali guna kredensial default akaun.
get_form_chip_feedsBaca senarai feed CHIP borang (issue #208). Setiap feed ada brand_id + secret (tersembunyi) + logik bersyarat. Feed tanpa condition = lalai (sentiasa padan).
set_form_chip_feedsSet senarai feed CHIP borang (issue #208). Feed pertama yang padan (ikut nilai medan borang) dipakai untuk pembayaran; feed tanpa condition = lalai. Secret kosong pada feed sedia ada = kekalkan kunci lama.
get_form_chip_mappingBaca peta medan CHIP borang (medan CHIP → id blok borang). Kosong = guna lalai (name→full_name, email→email, phone→phone).
set_form_chip_mappingSet peta medan CHIP borang (medan CHIP → id blok borang), cth {"full_name":"block_abc","email":"block_def"}. Mapping kosong = guna lalai.
CHIP account
get_chip_settingsBaca status kredensial CHIP akaun: configured, verified, mode, brand_id, secret_key_masked, email_fallback, whitelist. Secret penuh tidak pernah dipulangkan. Read-only.
set_chip_settingsSet kredensial CHIP akaun (brand_id + secret_key). Secret kosong = kekalkan kunci sedia ada. Disahkan terhadap CHIP sebelum disimpan. Admin sahaja.
clear_chip_settingsKosongkan kredensial CHIP akaun. Admin sahaja.
Form email & notifications
get_form_email_settingsBaca tetapan emel notifikasi SATU borang (issue #177): subjek/badan resit, hantar resit, notifikasi merchant, HTML. Kosong = guna lalai workspace.
set_form_email_settingsSet tetapan emel notifikasi SATU borang (issue #177): receipt_subject, receipt_body, receipt_enabled, notify_merchant, merchant_notify_email, html. Kosong subjek/badan = guna lalai workspace. Omit medan = kekal.
get_form_notificationsBaca senarai peraturan notifikasi emel per-borang (issue #193): event, penerima, subjek/badan, logik bersyarat, aktif. Termasuk notifikasi lalai (notify merchant on sale.paid).
set_form_notificationsGanti SEMUA peraturan notifikasi emel per-borang (issue #193). notifications[] penuh: {id?, name, event, to_email, subject, body, condition?, enabled?}. event: sale.paid|sale.failed|response.submitted|subscription.charged. to_email: emel, {admin_email}, atau {field_id}. condition: {field_id, op, value}|null (op: equals|not_equals|contains|gt|lt|not_empty). Senarai kosong = tiada emel dihantar.
get_form_confirmationsBaca pengesahan borang (issue #179): senarai confirmation (message/redirect) + logik bersyarat. Pengesahan lalai sentiasa wujud.
set_form_confirmationsSet pengesahan borang (issue #179): ganti semua confirmation (name, type message|redirect, message/redirect_url, condition). Pengesahan lalai sentiasa dikekalkan. Mesej HTML disanitasi (tiada XSS).
get_form_failure_messageBaca mesej pembayaran-gagal borang (issue #393): apa yang pembeli lihat bila pembayaran gagal. Kosong = guna mesej lalai.
set_form_failure_messageSet mesej pembayaran-gagal borang (issue #393): HTML yang pembeli lihat bila pembayaran gagal (disanitasi, tiada XSS). Kosong = guna mesej lalai.
Email settings
get_email_settingsBaca tetapan emel satu workspace: subjek/badan resit (placeholder), hantar resit, notifikasi merchant, HTML.
set_email_settingsSet tetapan emel workspace: receipt_subject, receipt_body ({{ref_code}}, {{amount}}, {{items}}, {{form_url}}, {{buyer_name}}, {{date}}), receipt_enabled, notify_merchant, merchant_notify_email, html. Omit medan = kekal.
e-Invoice
set_einvoiceSet TIN + MSIC LHDN untuk resit e-Invoice (B2B).
get_einvoice_settingsBaca TIN + MSIC LHDN semasa untuk resit e-Invoice.
Webhooks
create_webhookDaftar endpoint webhook (events: sale.paid|sale.failed|subscription.charged|*). HMAC-signed. form_id pilihan: set = webhook hanya untuk borang itu; kosong = seluruh workworkspace/akaun.
list_webhooksSenarai outbound webhooks akaun. form_id pilihan: set = webhook borang itu sahaja; kosong = webhook seluruh workworkspace/akaun.
delete_webhookPadam satu webhook (id dari list_webhooks).
update_webhookKemas kini webhook (url, events, secret pilihan — kosong = kekal sedia ada). events: sale.paid|sale.failed|subscription.charged|*.
webhook_deliveriesLog penghantaran terkini webhook (status_code, attempt, error).
retry_webhook_deliveryCuba semula satu penghantaran webhook yang gagal dengan segera (id dari webhook_deliveries). Ia dienqueue semula dan dihantar semula pada sweep seterusnya.
get_webhook_signing_keyBaca kunci tandatangan Ed25519 akaun (key_id, public_key, alg) untuk mengesahkan tandatangan webhook X-JomForm-Signature-Ed25519. Read-only.
API keys
list_api_keysSenarai semua API key akaun (id, nama, scopes, created_at, last_used). Key material tidak pernah dikembalikan.
create_api_keyCipta API key baharu (nama, scopes? readonly|readwrite, default readonly). Key penuh dipapar SEKALI sahaja — simpan segera; store simpan hash sahaja. SCOPES: baca untuk readonly, baca+tulis untuk readwrite.
revoke_api_keyPadam API key secara PERMANEN (id dari list_api_keys; tiada disable/enable semula — cipta key baru). AMARAN: jika id ialah key yang sedang mengesahkan sesi ini, ia akan memutuskan akses sendiri serta-merta — set confirm=true untuk sahkan; sebaliknya panggilan ditolak.
Spaces & storefronts
list_workspacesSenarai semua workspace (storefront) anda — id, nama, slug dan URL.
create_workspaceCipta workspace baharu. Slug 3-40 aksara (a-z, 0-9, dash); URL jadi https://<slug>.jomform.com.
get_space_settingsBaca tetapan storefront satu workspace: footer, company_reg, privacy/terms/refund URL, contact, menu.
set_workspace_settingsSet tetapan storefront workspace: footer_text, company_reg, privacy_url/terms_url/refund_url (mesti https://), contact_phone, contact_address, business_name, menu_json. Omit medan = kekal.
get_workspace_landing_pageBaca konfigurasi 'landing page' workspace (issue #360): hero, subtitle, body, image_url, theme colors, logo, CTA (label + form_slug). Kosong jika tiada landing page ditetapkan.
set_workspace_landing_pageSet 'landing page' storefront workspace (issue #360): enabled (true = tunjuk, false/kosong = jatuh ke senarai borang), hero, subtitle, body, image_url, primary_color, background_color, logo_url, ctas ([{label, form_slug}]). Hantar enabled:false untuk pulang ke senarai borang.
get_currency_ratesKadar tukaran wang BNM (Ringgit per unit mata wang asing), dicache harian. Guna untuk paparan/penukaran amaun baharu.
set_workspace_currencySet mata wang workspace (default MYR). Perubahan terpakai pada produk/jualan baharu; jualan lama kekal mata wang asal (tidak ditukar balik).
Space members
invite_workspace_memberJemput ahli ke workspace (admin sahaja). Jika emel sudah berdaftar, tambah terus sebagai ahli; jika tidak, cipta jemputan menunggu. Role: read_only|manage|admin.
list_workspace_membersSenarai ahli workspace + peranan (admin sahaja).
update_space_member_roleTukar peranan ahli workspace (admin sahaja). Role: read_only|manage|admin.
remove_workspace_memberBuang ahli dari space (admin sahaja). Pemilik tidak boleh dibuang.
list_workspace_invitesSenarai jemputan menunggu untuk workspace (admin sahaja).
cancel_workspace_inviteBatal jemputan menunggu untuk workspace (admin sahaja).
set_default_workspaceSet workspace lalai anda (space yang anda masuk terus selepas log masuk, tanpa prompt). workworkspace_id kosong = buang default. Space mesti milik anda.
Profile & security
update_profile_phoneSet nombor telefon pilihan pada profil anda (kosong = buang). Format longgar: digit, +, ruang, 8-15 digit.
update_profile_timezoneSet zona waktu IANA pilihan pada profil anda (kosong = Auto, ikut pelayar/PC). Contoh: Asia/Kuala_Lumpur, UTC.
update_profile_avatarSet avatar profil (URL mesti imej yang dihoskan JomForm dari upload bucket). Kosong = buang avatar.
list_passkeysSenarai passkey (WebAuthn) akaun anda: id. Read-only.
delete_passkeyPadam satu passkey (id dari list_passkeys).
list_social_accountsSenarai akaun sosial yang dipautkan (google|azure_ad|github|cloudflare): provider, emel, nama, picture, linked_at. Read-only.
unlink_social_accountNyah-pautkan akaun sosial (provider dari list_social_accounts).
get_2fa_statusBaca status 2FA akaun anda: enabled (true/false). Read-only.
setup_2faJana rahsia TOTP untuk 2FA (belum aktif). Pulangkan secret + otpauth_url untuk diimbas aplikasi authenticator, kemudian panggil enable_2fa dengan kod.
enable_2faAktifkan 2FA dengan kod 6-digit dari aplikasi authenticator (selepas setup_2fa).
disable_2faMatikan 2FA (perlu kata laluan akaun untuk pengesahan).
Legal pages
generate_legal_pageJana draf halaman undang-undang (privacy|terms|refund) untuk workworkspace melalui LLM (deepseek-v4-flash) dengan template yang diisi butiran perniagaan. Pulangkan draf untuk semakan — belum disimpan sehingga set_legal_page dipanggil.
get_legal_pageBaca satu halaman undang-undang workspace (privacy|terms|refund): mode (auto/manual) + kandungan.
set_legal_pageSimpan kandungan halaman undang-undang workspace (privacy|terms|refund) dengan mode auto|manual. Kandungan dipaparkan di {workspace}.jomform.com/privacy|terms|refund.
Event tracking
list_eventsLog audit/tingkah-laku akaun (terbaru dahulu). Boleh tapis event_name, from/to (RFC3339), dan page/limit. Read-only.
Email delivery
list_email_deliveriesStatus penghantaran emel akaun (terbaru dahulu): delivered/bounce/complaint/open/click dengan emel, masa, sale_ref dan detail. Boleh tapis form_id, sale_ref, event_type, dan page/limit. Read-only.
Form submissions
list_form_submissionsSenarai respons (submission) untuk satu borang respons-sahaja (mode 'response', tanpa bayaran). Pulangkan data medan + masa. Tapis form_id, page/limit.
Spam review
list_spam_submissionsSenarai submission yang ditanda spam oleh AI (issue #245): data medan, sebab spam, masa. Boleh tapis page/limit. Read-only.
unspam_submissionNyah-tanda spam pada submission (false positive). Write tool (peranan manage/admin).
list_spam_salesSenarai jualan yang ditanda spam oleh AI (issue #245): ref, status, jumlah, pembeli, sebab spam, masa. Boleh tapis page/limit. Read-only.
unspam_saleNyah-tanda spam pada jualan (false positive). Write tool (peranan manage/admin).
Media
list_mediaSenarai media yang dimuat naik akaun (perpustakaan media): thumbnail/url, nama, tarikh, saiz. Boleh tapis form_id dan source (merchant|customer). Read-only.
upload_mediaMuat naik media/aset ke workspace anda (issue #363): kind='image' (png/jpeg/webp/gif — dioptimumkan, strip EXIF, terus boleh guna; png/jpeg/webp dapat saiz thumbnail/medium/full), kind='asset' (css/js/html/svg/woff2 — disimpan asli, dikaji sebelum dipapar) atau kind='pdf' (disimpan asli, terus boleh guna). hantar content fail sebagai base64 di 'data'. Pulangkan URL untuk diguna sebagai image_url/logo_url landing atau <link>/<script> landing page.
Templates
list_templatesSenarai template borang sistem (gallery): slug, tajuk, kategori, mode (payment/response). Guna dengan use_template untuk quickstart.
use_templateClone template borang (slug dari list_templates) menjadi draft baharu dalam akaun anda. Pulangkan form_id + slug untuk dibuka dalam builder.
Analytics
get_form_analyticsAnalitik per-borang: bilangan submission, paid/confirmed/failed/pending, dan hasil (RM). Merentas semua workspace anda. Read-only.
get_product_analyticsAnalitik per-produk: unit terjual (paid), hasil (RM). Merentas semua workspace anda. Read-only.
Custom domains
list_domainsSenarai domain tersuai akaun: id, domain, provider, verified, auto_cname. Read-only.
add_domainTuntut domain tersuai baharu (cth: kedai.com). Kemudian set CNAME → custom.jomform.com dan panggil verify_domain.
verify_domainSahkan domain tersuai (id dari list_domains). Hanya disahkan bila domain benar-benar memaparkan halaman JomForm.
remove_domainBuang tuntutan domain tersuai (id dari list_domains).
auto_cname_domainCipta rekod CNAME Cloudflare secara automatik untuk domain (perlu Cloudflare dipautkan). Pulangkan auto_cname=created|failed.
get_domain_tls_emailBaca emel ACME/Let's Encrypt per-domain untuk auto-TLS. Kosong = kembali ke emel akaun, kemudian ACME_EMAIL global. Read-only.
set_domain_tls_emailTetapkan emel ACME/Let's Encrypt per-domain untuk auto-TLS. Kosong = kembali ke emel akaun, kemudian ACME_EMAIL global.
Tracking
get_trackingBaca skrip penjejakan global akaun (Google Analytics, Facebook Pixel, dll) yang disuntik ke <head> borang awam. Read-only.
set_trackingSet skrip penjejakan global akaun. Hanya <script src=https://...>, <meta> dan komen dibenarkan (disanitasi).
System settings
get_system_settingsBaca semua tetapan sistem platform (site_*, landing_*). Read-only.
set_system_settingSet satu tetapan sistem (key mesti bermula site_ atau landing_).
Cloudflare
get_cloudflare_statusBaca status pautan Cloudflare akaun: linked, configured. Read-only.
connect_cloudflare_api_tokenPautkan Cloudflare via API token (disahkan serta-merta, disimpan terenkripsi).
connect_cloudflare_global_keyPautkan Cloudflare via global API key (disahkan serta-merta, disimpan terenkripsi).
disconnect_cloudflareNyah-pautkan Cloudflare dari akaun.
Account
get_accountMaklumat asas akaun (nama, slug, CHIP mode).
Admin (super-admin, platform-wide)
purge_unverified_accountsLaporkan bilangan akaun belum disahkan (emel) yang lebih lama daripada ambang dan akan dipadam automatik oleh sweep. Admin sahaja; read-only — tidak memadam apa-apa.
admin_list_workspacesSenarai SEMUA workspace (storefront) platform: id, nama, slug, emel pemilik, tarikh cipta, bilangan borang + produk. Super-admin sahaja; read-only; diaudit.
admin_media_usagePenggunaan storan media per workspace (bait) berbanding kuota 1GB setiap workspace. Super-admin sahaja; read-only; diaudit.
admin_list_salesSenarai jualan merentas SEMUA workspace, boleh tapis (date_from/date_to, workspace_id, status). Super-admin sahaja; read-only; diaudit.
admin_spam_queueSenarai semua item spam (submission + jualan) merentas semua workspace. Super-admin sahaja; read-only; diaudit.
admin_email_deliveriesStatus penghantaran emel merentas SEMUA workspace (delivered/bounce/complaint/open/click), boleh tapis sale_ref/event_type/form_id. Super-admin sahaja; read-only; diaudit.
admin_system_healthKesihatan sistem: uptime, bilangan ralat MCP terkini (24j), kedalaman queue emel. Super-admin sahaja; read-only; diaudit.