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_form

Cipta/kemaskini borang (form_id kosong = baru). Config blocks ikut get_form. Theme (pilihan) = gaya/branding tersuai.

set_form_theme

Set 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_fields

Daftar 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_form

Jana 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_form

Publish borang — live di <workspace>.jomform.com/<slug> atau custom domain. status=private (dengan password) menjadikannya borang ber-kata laluan; status=draft menarik balik.

unpublish_form

Tarik balik borang dari live (jadikan draft).

set_form_password

Set/buang kata laluan akses borang private (argon2id-hashed; tidak pernah dipulangkan). Password kosong = buang kata laluan.

get_form_restrictions

Baca sekatan borang (issue #207): jadual mula/tamat (start_at/end_at) + had penyertaan (entry_limit) + mesej peringkat.

set_form_restrictions

Set sekatan borang (issue #207): jadual mula/tamat + had penyertaan + mesej. Kosong = buang sekatan.

get_form_og_image

Baca imej Open Graph (og:image) borang (issue #411): URL imej tersuai bila ditetapkan, kosong = guna lalai janaan /og/{slug}.png.

set_form_og_image

Set imej Open Graph (og:image) borang (issue #411): URL imej tersuai (mesti https://) untuk pratonton sosial bila borang dikongsi. Kosong = guna lalai janaan.

delete_form

Soft-delete borang (pergi ke trash dashboard; slug dilepaskan). Boleh dipulihkan.

bulk_forms

Tindakan pukal atas banyak borang sekali gus: action=publish|draft|delete dengan ids[] (maks 500).

Products

list_products

Senarai semua produk aktif dalam akaun JomForm anda.

create_product

Cipta produk baharu. Untuk langganan, set type='subscription' dan billing_period='month'|'year'.

archive_product

Nyahaktifkan produk (dulang tanpa padam data).

list_product_variations

Senarai variasi produk (name, price_sen, stock, images, sort_order) untuk satu produk. Produk simple = senarai kosong.

update_product

Kemaskini produk: nama, harga (price_sen), stok, jenis (type), billing_period (langganan), aktif/tidak. Omit medan tak berubah.

bulk_products

Arkibkan banyak produk sekali gus (active=false). ids[] maks 500.

Sales

list_sales

Senarai jualan terkini (terbaru dahulu).

get_sales_summary

Ringkasan jualan: bilangan mengikut status dan jumlah nilai.

confirm_sale

Sahkan jualan (contoh: selepas semak bukti bank transfer).

get_sale_email_status

Status emel resit untuk satu jualan: Sent → Delivered → Opened → (Clicked) dengan masa. Guna ref_code dari list_sales.

export_sales_csv

Eksport 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_sale

Capture authorisasi skip_capture (kad buyer dicaj sekarang). amount_sen optional untuk partial.

release_sale

Release (void) authorisasi skip_capture — kad buyer TIDAK dicaj.

refund_sale

Refund jualan yang telah dibayar (paid/confirmed). amount_sen optional untuk partial; kosong = refund penuh. Status jualan jadi refunded.

capture_all_pending_sales

Capture SEMUA authorisasi skip_capture yang masih menunggu. Satu kegagalan tidak hentikan yang lain; balas per-ref.

Subscriptions

list_subscriptions

Senarai langganan akaun: pelanggan (emel), produk, jumlah/period, status (active/past_due/cancelled), tarikh caj seterusnya. Tapis ?status, page/limit.

cancel_subscription

Batalkan langganan pelanggan. Kad token kekal pada merchant — boleh aktif semula.

update_subscription_card

Kemas 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_override

Set 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_override

Kosongkan override sebuah borang — kembali guna kredensial default akaun.

get_form_chip_feeds

Baca senarai feed CHIP borang (issue #208). Setiap feed ada brand_id + secret (tersembunyi) + logik bersyarat. Feed tanpa condition = lalai (sentiasa padan).

set_form_chip_feeds

Set 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_mapping

Baca peta medan CHIP borang (medan CHIP → id blok borang). Kosong = guna lalai (name→full_name, email→email, phone→phone).

set_form_chip_mapping

Set 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_settings

Baca status kredensial CHIP akaun: configured, verified, mode, brand_id, secret_key_masked, email_fallback, whitelist. Secret penuh tidak pernah dipulangkan. Read-only.

set_chip_settings

Set kredensial CHIP akaun (brand_id + secret_key). Secret kosong = kekalkan kunci sedia ada. Disahkan terhadap CHIP sebelum disimpan. Admin sahaja.

clear_chip_settings

Kosongkan kredensial CHIP akaun. Admin sahaja.

Form email & notifications

get_form_email_settings

Baca tetapan emel notifikasi SATU borang (issue #177): subjek/badan resit, hantar resit, notifikasi merchant, HTML. Kosong = guna lalai workspace.

set_form_email_settings

Set 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_notifications

Baca 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_notifications

Ganti 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_confirmations

Baca pengesahan borang (issue #179): senarai confirmation (message/redirect) + logik bersyarat. Pengesahan lalai sentiasa wujud.

set_form_confirmations

Set 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_message

Baca mesej pembayaran-gagal borang (issue #393): apa yang pembeli lihat bila pembayaran gagal. Kosong = guna mesej lalai.

set_form_failure_message

Set mesej pembayaran-gagal borang (issue #393): HTML yang pembeli lihat bila pembayaran gagal (disanitasi, tiada XSS). Kosong = guna mesej lalai.

Email settings

get_email_settings

Baca tetapan emel satu workspace: subjek/badan resit (placeholder), hantar resit, notifikasi merchant, HTML.

set_email_settings

Set 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_einvoice

Set TIN + MSIC LHDN untuk resit e-Invoice (B2B).

get_einvoice_settings

Baca TIN + MSIC LHDN semasa untuk resit e-Invoice.

Webhooks

create_webhook

Daftar 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_webhooks

Senarai outbound webhooks akaun. form_id pilihan: set = webhook borang itu sahaja; kosong = webhook seluruh workworkspace/akaun.

delete_webhook

Padam satu webhook (id dari list_webhooks).

update_webhook

Kemas kini webhook (url, events, secret pilihan — kosong = kekal sedia ada). events: sale.paid|sale.failed|subscription.charged|*.

webhook_deliveries

Log penghantaran terkini webhook (status_code, attempt, error).

retry_webhook_delivery

Cuba semula satu penghantaran webhook yang gagal dengan segera (id dari webhook_deliveries). Ia dienqueue semula dan dihantar semula pada sweep seterusnya.

get_webhook_signing_key

Baca kunci tandatangan Ed25519 akaun (key_id, public_key, alg) untuk mengesahkan tandatangan webhook X-JomForm-Signature-Ed25519. Read-only.

API keys

list_api_keys

Senarai semua API key akaun (id, nama, scopes, created_at, last_used). Key material tidak pernah dikembalikan.

create_api_key

Cipta 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_key

Padam 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_workspaces

Senarai semua workspace (storefront) anda — id, nama, slug dan URL.

create_workspace

Cipta workspace baharu. Slug 3-40 aksara (a-z, 0-9, dash); URL jadi https://<slug>.jomform.com.

get_space_settings

Baca tetapan storefront satu workspace: footer, company_reg, privacy/terms/refund URL, contact, menu.

set_workspace_settings

Set 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_page

Baca 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_page

Set '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_rates

Kadar tukaran wang BNM (Ringgit per unit mata wang asing), dicache harian. Guna untuk paparan/penukaran amaun baharu.

set_workspace_currency

Set mata wang workspace (default MYR). Perubahan terpakai pada produk/jualan baharu; jualan lama kekal mata wang asal (tidak ditukar balik).

Space members

invite_workspace_member

Jemput 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_members

Senarai ahli workspace + peranan (admin sahaja).

update_space_member_role

Tukar peranan ahli workspace (admin sahaja). Role: read_only|manage|admin.

remove_workspace_member

Buang ahli dari space (admin sahaja). Pemilik tidak boleh dibuang.

list_workspace_invites

Senarai jemputan menunggu untuk workspace (admin sahaja).

cancel_workspace_invite

Batal jemputan menunggu untuk workspace (admin sahaja).

set_default_workspace

Set 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_phone

Set nombor telefon pilihan pada profil anda (kosong = buang). Format longgar: digit, +, ruang, 8-15 digit.

update_profile_timezone

Set zona waktu IANA pilihan pada profil anda (kosong = Auto, ikut pelayar/PC). Contoh: Asia/Kuala_Lumpur, UTC.

update_profile_avatar

Set avatar profil (URL mesti imej yang dihoskan JomForm dari upload bucket). Kosong = buang avatar.

list_passkeys

Senarai passkey (WebAuthn) akaun anda: id. Read-only.

delete_passkey

Padam satu passkey (id dari list_passkeys).

list_social_accounts

Senarai akaun sosial yang dipautkan (google|azure_ad|github|cloudflare): provider, emel, nama, picture, linked_at. Read-only.

unlink_social_account

Nyah-pautkan akaun sosial (provider dari list_social_accounts).

get_2fa_status

Baca status 2FA akaun anda: enabled (true/false). Read-only.

setup_2fa

Jana rahsia TOTP untuk 2FA (belum aktif). Pulangkan secret + otpauth_url untuk diimbas aplikasi authenticator, kemudian panggil enable_2fa dengan kod.

enable_2fa

Aktifkan 2FA dengan kod 6-digit dari aplikasi authenticator (selepas setup_2fa).

disable_2fa

Matikan 2FA (perlu kata laluan akaun untuk pengesahan).

Legal pages

generate_legal_page

Jana 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_page

Baca satu halaman undang-undang workspace (privacy|terms|refund): mode (auto/manual) + kandungan.

set_legal_page

Simpan kandungan halaman undang-undang workspace (privacy|terms|refund) dengan mode auto|manual. Kandungan dipaparkan di {workspace}.jomform.com/privacy|terms|refund.

Event tracking

list_events

Log audit/tingkah-laku akaun (terbaru dahulu). Boleh tapis event_name, from/to (RFC3339), dan page/limit. Read-only.

Email delivery

list_email_deliveries

Status 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_submissions

Senarai respons (submission) untuk satu borang respons-sahaja (mode 'response', tanpa bayaran). Pulangkan data medan + masa. Tapis form_id, page/limit.

Spam review

list_spam_submissions

Senarai submission yang ditanda spam oleh AI (issue #245): data medan, sebab spam, masa. Boleh tapis page/limit. Read-only.

unspam_submission

Nyah-tanda spam pada submission (false positive). Write tool (peranan manage/admin).

list_spam_sales

Senarai jualan yang ditanda spam oleh AI (issue #245): ref, status, jumlah, pembeli, sebab spam, masa. Boleh tapis page/limit. Read-only.

unspam_sale

Nyah-tanda spam pada jualan (false positive). Write tool (peranan manage/admin).

Media

list_media

Senarai media yang dimuat naik akaun (perpustakaan media): thumbnail/url, nama, tarikh, saiz. Boleh tapis form_id dan source (merchant|customer). Read-only.

upload_media

Muat 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_templates

Senarai template borang sistem (gallery): slug, tajuk, kategori, mode (payment/response). Guna dengan use_template untuk quickstart.

use_template

Clone template borang (slug dari list_templates) menjadi draft baharu dalam akaun anda. Pulangkan form_id + slug untuk dibuka dalam builder.

Analytics

get_form_analytics

Analitik per-borang: bilangan submission, paid/confirmed/failed/pending, dan hasil (RM). Merentas semua workspace anda. Read-only.

get_product_analytics

Analitik per-produk: unit terjual (paid), hasil (RM). Merentas semua workspace anda. Read-only.

Custom domains

list_domains

Senarai domain tersuai akaun: id, domain, provider, verified, auto_cname. Read-only.

add_domain

Tuntut domain tersuai baharu (cth: kedai.com). Kemudian set CNAME → custom.jomform.com dan panggil verify_domain.

verify_domain

Sahkan domain tersuai (id dari list_domains). Hanya disahkan bila domain benar-benar memaparkan halaman JomForm.

remove_domain

Buang tuntutan domain tersuai (id dari list_domains).

auto_cname_domain

Cipta rekod CNAME Cloudflare secara automatik untuk domain (perlu Cloudflare dipautkan). Pulangkan auto_cname=created|failed.

get_domain_tls_email

Baca emel ACME/Let's Encrypt per-domain untuk auto-TLS. Kosong = kembali ke emel akaun, kemudian ACME_EMAIL global. Read-only.

set_domain_tls_email

Tetapkan emel ACME/Let's Encrypt per-domain untuk auto-TLS. Kosong = kembali ke emel akaun, kemudian ACME_EMAIL global.

Tracking

get_tracking

Baca skrip penjejakan global akaun (Google Analytics, Facebook Pixel, dll) yang disuntik ke <head> borang awam. Read-only.

set_tracking

Set skrip penjejakan global akaun. Hanya <script src=https://...>, <meta> dan komen dibenarkan (disanitasi).

System settings

get_system_settings

Baca semua tetapan sistem platform (site_*, landing_*). Read-only.

set_system_setting

Set satu tetapan sistem (key mesti bermula site_ atau landing_).

Cloudflare

get_cloudflare_status

Baca status pautan Cloudflare akaun: linked, configured. Read-only.

connect_cloudflare_api_token

Pautkan Cloudflare via API token (disahkan serta-merta, disimpan terenkripsi).

connect_cloudflare_global_key

Pautkan Cloudflare via global API key (disahkan serta-merta, disimpan terenkripsi).

disconnect_cloudflare

Nyah-pautkan Cloudflare dari akaun.

Account

get_account

Maklumat asas akaun (nama, slug, CHIP mode).

Admin (super-admin, platform-wide)

purge_unverified_accounts

Laporkan 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_workspaces

Senarai SEMUA workspace (storefront) platform: id, nama, slug, emel pemilik, tarikh cipta, bilangan borang + produk. Super-admin sahaja; read-only; diaudit.

admin_media_usage

Penggunaan storan media per workspace (bait) berbanding kuota 1GB setiap workspace. Super-admin sahaja; read-only; diaudit.

admin_list_sales

Senarai jualan merentas SEMUA workspace, boleh tapis (date_from/date_to, workspace_id, status). Super-admin sahaja; read-only; diaudit.

admin_spam_queue

Senarai semua item spam (submission + jualan) merentas semua workspace. Super-admin sahaja; read-only; diaudit.

admin_email_deliveries

Status 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_health

Kesihatan sistem: uptime, bilangan ralat MCP terkini (24j), kedalaman queue emel. Super-admin sahaja; read-only; diaudit.