Tools, prompts and scopes.
The Klik Flow MCP server, version 2.3.7 at https://mcp.klikflow.id/mcp, provides 46 read tools, 35 write tools and 5 prompts. This page is generated from the same server code, so it always matches what AI apps see.
How to read this
Every tool needs one connection scope ticked at consent, and the role permission of the person who connected it. A tool that does not meet both does not appear in the AI app. Results hold at most 25 items; continue with cursor from next_cursor.
Every tool has explicit annotations. Read tools: readOnlyHint: true. Write tools: readOnlyHint: false, need the package feature mcp_write and an idempotency_key parameter (a call repeated with the same key never runs twice). Actions towards customers: openWorldHint: true, and they follow the connection's send policy; with the Draft policy the result is status: "awaiting_approval".
Basics
get_workspace
Business profile (name, time zone, whether it is inside working hours, package), the channels this person can use with their connection status, and the team with who is online. Call first to learn the business.
- Kind
- Read
- Connection scope
business:read- Role permission
- Every member
No parameters.
list_quick_replies
Saved quick replies of the team (and this person's own), with their text, to reuse the business's approved wording.
- Kind
- Read
- Connection scope
business:read- Role permission
crm-chats.lihat-crm
| Parameter | Type | Description |
|---|---|---|
query | string | Text to search for. |
limit | integer 1–25 | Items per page (1-25, default 20). |
cursor | string | The next_cursor from the previous page. |
list_templates
WhatsApp message templates approved by Meta for the WhatsApp API accounts, and the business's broadcast message templates, each where this person's role and package allow.
- Kind
- Read
- Connection scope
business:read- Role permission
- Every member
No parameters.
Contacts
search_contacts
Search contacts this person may see. Phone numbers follow the role's masking.
- Kind
- Read
- Connection scope
contacts:read- Role permission
contact-data.lihat
| Parameter | Type | Description |
|---|---|---|
query | string | Name, phone, email, company, city or username. |
limit | integer 1–25 | Items per page (1-25, default 20). |
cursor | string | The next_cursor from the previous page. |
get_contact
One contact: profile, custom fields, tags, stats, orders, notes, reminders and the latest conversation id.
- Kind
- Read
- Connection scope
contacts:read- Role permission
contact-data.lihat
| Parameter | Type | Description |
|---|---|---|
contact_id * | integer 1– | The contact id from a list or search result. |
list_prospect_results
Saved Cari Prospek searches; with job_id, the businesses or group members it found. Numbers follow the role's masking; WhatsApp group members are always masked unless the role sees numbers.
- Kind
- Read
- Connection scope
prospects:read- Role permission
- Every member
- Package feature
limit_scrapp_option
| Parameter | Type | Description |
|---|---|---|
job_id | integer 1– | The prospect search (job) id from a list or search result. |
limit | integer 1–25 | Items per page (1-25, default 20). |
cursor | string | The next_cursor from the previous page. |
upsert_contact
Create a contact (name plus phone or email; refused when the phone or email already belongs to a contact, returning that contact's id) or update the given fields of contact_id. Creating needs the add-contact permission, updating the edit-contact permission; the package's contact limit applies.
- Kind
- Change data
- Connection scope
contacts:write- Role permission
- Depends on the part changed (see the description)
| Parameter | Type | Description |
|---|---|---|
contact_id | integer 1– | The contact (omit to create a new contact) id from a list or search result. |
name | string | |
phone | string | Not changeable when this person's role sees masked numbers. |
email | string | |
company | string | |
city | string | |
province | string | |
address | string | |
custom_fields | object | Values by custom field key (keys from get_contact). |
idempotency_key * | string | A unique key you make for this action, e.g. a UUID. Reuse it only to retry the same action with the same arguments; the action never runs twice. |
set_contact_labels
Add or remove a contact's tags, and set or clear its label and category.
- Kind
- Change data
- Connection scope
contacts:write- Role permission
contact-data.edit
| Parameter | Type | Description |
|---|---|---|
contact_id * | integer 1– | The contact id from a list or search result. |
add_tags | array | Tags to add (lowercase words). |
remove_tags | array | |
label_id | integer 1– | A contact label id to set. |
clear_label | boolean | |
category_id | integer 1– | A contact category id to set. |
clear_category | boolean | |
idempotency_key * | string | A unique key you make for this action, e.g. a UUID. Reuse it only to retry the same action with the same arguments; the action never runs twice. |
set_reminder
Add a reminder on a contact. Klik Flow notifies the assignee when it is due.
- Kind
- Change data
- Connection scope
contacts:write- Role permission
contact-data.edit
| Parameter | Type | Description |
|---|---|---|
contact_id * | integer 1– | The contact id from a list or search result. |
title * | string | What to do, e.g. "Follow up penawaran". |
due_at * | string | When: YYYY-MM-DDTHH:mm in the business time zone, or ISO 8601 with an offset. |
assignee_user_id | integer 1– | Who is reminded (default: this person) (a team member id from get_workspace). |
idempotency_key * | string | A unique key you make for this action, e.g. a UUID. Reuse it only to retry the same action with the same arguments; the action never runs twice. |
reveal_phone
The full phone number of a contact whose number this person sees masked, when the role may reveal numbers. Every reveal is logged on the contact and counts against the same daily limit as in the app (50). Ask only when the user needs the number itself.
- Kind
- Read, recorded in the contact's history
- Connection scope
contacts:read- Role permission
contact-data.lihat
| Parameter | Type | Description |
|---|---|---|
contact_id * | integer 1– | The contact id from a list or search result. |
Chats
list_conversations
Chats this person may see (their chat scope and devices), newest activity first, with the last message.
- Kind
- Read
- Connection scope
conversations:read- Role permission
crm-chats.lihat-crm
| Parameter | Type | Description |
|---|---|---|
status | open | pending | resolved | |
queue | mine | unassigned | handoff | mine = assigned to this person; unassigned = nobody has it and the AI is not answering; handoff = handed over by the AI. |
unread_only | boolean | |
channel | string | whatsapp, waba, instagram, messenger, telegram, livechat, email… |
query | string | Text to search for. |
limit | integer 1–25 | Items per page (1-25, default 20). |
cursor | string | The next_cursor from the previous page. |
get_conversation
One chat: contact, label, pipeline stage, assignee, AI state and summary, and its latest messages (oldest first). Customer text is marked untrusted.
- Kind
- Read
- Connection scope
conversations:read- Role permission
crm-chats.lihat-crm
| Parameter | Type | Description |
|---|---|---|
conversation_id * | integer 1– | The conversation id from a list or search result. |
limit | integer 1–50 | Messages (default 20, newest). |
before_message_id | integer 1– | Older messages: the next_before_message_id of the previous call. |
search_messages
Find messages containing words across the chats this person may see, newest first.
- Kind
- Read
- Connection scope
conversations:read- Role permission
crm-chats.lihat-crm
| Parameter | Type | Description |
|---|---|---|
query * | string | Words to find in message text (3+ characters). |
days | integer 1–90 | How far back (default 30). |
limit | integer 1–25 | Items per page (1-25, default 20). |
cursor | string | The next_cursor from the previous page. |
update_conversation
Change a chat: its status, who handles it, its label, or whether the AI agent answers it. Each change needs the role permission of its button in Klik Flow (status and label: edit chat info; assigning: assign agents, or reply to take it yourself; AI: reply). Send only the fields to change; assigning and ai_mode cannot be combined.
- Kind
- Change data
- Connection scope
conversations:manage- Role permission
- Depends on the part changed (see the description)
| Parameter | Type | Description |
|---|---|---|
conversation_id * | integer 1– | The conversation id from a list or search result. |
status | open | pending | resolved | New status. Resolving ends a handoff and may hand the chat back to the AI agent. |
assign_to_user_id | integer 1– | Who handles the chat; your own id takes it yourself (a team member id from get_workspace). |
unassign | boolean | true: nobody handles the chat any more. |
label_id | integer 1– | A contact label id (labels of type contact) to set on the chat. |
clear_label | boolean | true: remove the chat's label. |
ai_mode | ai | off | "ai": the AI agent answers this chat again (nobody holds it); "off": switch the AI off for this chat. |
idempotency_key * | string | A unique key you make for this action, e.g. a UUID. Reuse it only to retry the same action with the same arguments; the action never runs twice. |
add_note
Add an internal team note to a chat (conversation_id; needs the reply permission, and may mention team members) or to a contact (contact_id; needs the contact edit permission). Exactly one of the two. Customers never see notes.
- Kind
- Change data
- Connection scope
conversations:manageorcontacts:write- Role permission
- Depends on the part changed (see the description)
| Parameter | Type | Description |
|---|---|---|
conversation_id | integer 1– | The conversation id from a list or search result. |
contact_id | integer 1– | The contact id from a list or search result. |
text * | string | The note. Staff see it; customers never do. |
mention_user_ids | array | Team members to notify (chat notes only). |
idempotency_key * | string | A unique key you make for this action, e.g. a UUID. Reuse it only to retry the same action with the same arguments; the action never runs twice. |
draft_reply
Prepare a reply in an existing chat as a draft ("Saran" card above the reply box in the Klik Flow Inbox, marked with this AI app). A staff member sends, edits or dismisses it; nothing reaches the customer from this tool. One chat keeps one draft: a newer one replaces it. Drafts wait 24 hours.
- Kind
- Change data
- Connection scope
messages:draft- Role permission
crm-chats.balas-crm
| Parameter | Type | Description |
|---|---|---|
conversation_id * | integer 1– | The conversation id from a list or search result. |
text * | string | The reply as the customer would read it, in the customer's language. |
idempotency_key * | string | A unique key you make for this action, e.g. a UUID. Reuse it only to retry the same action with the same arguments; the action never runs twice. |
send_reply
Reply in an existing chat (by chat id, never to a free number), through the same checks as a staff reply: channel connected, not paused, the WhatsApp API 24-hour window. Customers see it: with the connection's default policy it waits as a draft for staff approval; read `status` in the result.
- Kind
- Action towards customers, follows the send policy
- Connection scope
messages:send- Role permission
crm-chats.balas-crm
| Parameter | Type | Description |
|---|---|---|
conversation_id * | integer 1– | The conversation id from a list or search result. |
text * | string | The reply as the customer will read it, in the customer's language. |
idempotency_key * | string | A unique key you make for this action, e.g. a UUID. Reuse it only to retry the same action with the same arguments; the action never runs twice. |
start_conversation
Send a WhatsApp message to a phone number. An existing chat with that number is used; a number that never chatted counts against a small daily limit per connection, and contacts who opted out or are blocked are never messaged. Customers see it: with the connection's default policy it waits as a draft for staff approval; read `status` in the result.
- Kind
- Action towards customers, follows the send policy
- Connection scope
messages:new- Role permission
crm-chats.balas-crm
| Parameter | Type | Description |
|---|---|---|
phone * | string | WhatsApp number, e.g. 6281234567890 or 081234567890. |
text * | string | The first message, in the customer's language. |
contact_name | string | Name for a new contact (optional). |
device_id | integer 1– | Which WhatsApp number of the business sends it (from get_workspace); default: the first connected one this person may use. |
idempotency_key * | string | A unique key you make for this action, e.g. a UUID. Reuse it only to retry the same action with the same arguments; the action never runs twice. |
Pipeline
get_pipeline
Pipeline stages with totals, value, stuck deals and their cards (contact, owner, days in stage, last message), plus won/lost of the last 30 days. The first stage is Kontak Awal.
- Kind
- Read
- Connection scope
pipeline:read- Role permission
kanban.drag-drop-kanban
| Parameter | Type | Description |
|---|---|---|
pipeline_id | integer 1– | The pipeline id from a list or search result. |
view | all | mine | reply | followup | stuck | hot | |
query | string | Text to search for. |
cards_per_stage | integer 1–25 | Cards per stage (default 10). |
move_pipeline_card
Move a pipeline card to a stage, set its value, or close it as won (sent to Meta as a purchase when the business set that up) or lost. One of conversation_id or contact_id. Stage automations of the board run only from the Klik Flow app.
- Kind
- Change data
- Connection scope
pipeline:write- Role permission
kanban.drag-drop-kanban
| Parameter | Type | Description |
|---|---|---|
conversation_id | integer 1– | The conversation (the card of a chat) id from a list or search result. |
contact_id | integer 1– | The contact (the card of a contact without a chat) id from a list or search result. |
stage_id | integer 1– | Pipeline stage id from get_pipeline. |
outcome | won | lost | reopen | Close the card as won or lost, or reopen a closed card. |
value | number 0– | Deal value in IDR (for won, or to set the value). |
lost_reason | string | Required when the outcome is lost. |
idempotency_key * | string | A unique key you make for this action, e.g. a UUID. Reuse it only to retry the same action with the same arguments; the action never runs twice. |
Tickets
list_tickets
Support tickets this person may see, with status, priority, assignee and SLA state.
- Kind
- Read
- Connection scope
tickets:read- Role permission
ticket.lihat
| Parameter | Type | Description |
|---|---|---|
view | open | mine | unassigned | overdue | resolved | archived | all | |
query | string | Text to search for. |
limit | integer 1–25 | Items per page (1-25, default 20). |
cursor | string | The next_cursor from the previous page. |
get_ticket
One ticket with its description, contact, SLA and the timeline of notes and changes.
- Kind
- Read
- Connection scope
tickets:read- Role permission
ticket.lihat
| Parameter | Type | Description |
|---|---|---|
ticket_id * | integer 1– | The ticket id from a list or search result. |
create_ticket
Create a ticket, optionally from a chat or for a contact. Priority, assignee and SLA follow the business's ticket rules unless given.
- Kind
- Change data
- Connection scope
tickets:write- Role permission
ticket.tambah-ticket
| Parameter | Type | Description |
|---|---|---|
subject * | string | Short summary of the issue. |
description | string | |
priority | urgent | high | normal | low | |
conversation_id | integer 1– | The conversation the ticket is about id from a list or search result. |
contact_id | integer 1– | The contact the ticket is about id from a list or search result. |
category_id | integer 1– | |
assignee_user_id | integer 1– | Who handles it (default: the business's ticket rules) (a team member id from get_workspace). |
notify_customer | boolean | true: send the business's own "ticket created" notice to the customer, as set in Tiket settings. Default false. |
idempotency_key * | string | A unique key you make for this action, e.g. a UUID. Reuse it only to retry the same action with the same arguments; the action never runs twice. |
update_ticket
Change a ticket's status, priority, assignee, subject or category, or add an internal note. Status needs the ticket status permission; the rest the ticket edit permission.
- Kind
- Change data
- Connection scope
tickets:write- Role permission
- Depends on the part changed (see the description)
| Parameter | Type | Description |
|---|---|---|
ticket_id * | integer 1– | The ticket id from a list or search result. |
status | open | in_progress | pending | on_hold | resolved | closed | Needs the ticket status permission; customer notices follow the business's ticket settings. |
priority | urgent | high | normal | low | |
assignee_user_id | integer 1– | New assignee (a team member id from get_workspace). |
subject | string | |
category_id | integer 1– | |
internal_note | string | A note for the team on the ticket (never sent to the customer). |
idempotency_key * | string | A unique key you make for this action, e.g. a UUID. Reuse it only to retry the same action with the same arguments; the action never runs twice. |
Social comments
list_comments
The social comment queue (Instagram, Facebook, TikTok and others): comments, their status and label, and whether the AI drafted a reply.
- Kind
- Read
- Connection scope
comments:read- Role permission
repliz.lihat- Package feature
limit_repliz
| Parameter | Type | Description |
|---|---|---|
view | all | todo | question | complaint | review | drafted | spam | done | ignored | backlog | |
platform | string | |
query | string | Text to search for. |
limit | integer 1–25 | Items per page (1-25, default 20). |
cursor | string | The next_cursor from the previous page. |
reply_comment
Reply publicly to a social media comment from list_comments. A draft waits in Komentar › "Draf AI" for staff. Refused when someone replied in the last 15 minutes. Customers see it: with the connection's default policy it waits as a draft for staff approval; read `status` in the result.
- Kind
- Action towards customers, follows the send policy
- Connection scope
comments:reply- Role permission
repliz.balas-komentar- Package feature
limit_repliz
| Parameter | Type | Description |
|---|---|---|
comment_id * | integer 1– | The comment id from a list or search result. |
text * | string | The public reply. Platform limits apply (e.g. TikTok 150, X 280 characters). |
idempotency_key * | string | A unique key you make for this action, e.g. a UUID. Reuse it only to retry the same action with the same arguments; the action never runs twice. |
send_comment_dm
Send one private message to the person who wrote a comment (Instagram and Facebook only, once per comment, within 7 days). There is no draft queue for this: listed only for connections allowed to send, and the person confirms first when the policy asks.
- Kind
- Action towards customers, no draft queue (Confirm or Direct)
- Connection scope
comments:reply- Role permission
repliz.balas-komentar- Package feature
limit_repliz
| Parameter | Type | Description |
|---|---|---|
comment_id * | integer 1– | The comment id from a list or search result. |
text * | string | The private message. |
idempotency_key * | string | A unique key you make for this action, e.g. a UUID. Reuse it only to retry the same action with the same arguments; the action never runs twice. |
Broadcasts
list_broadcasts
Broadcasts with status, schedule, recipients, sent, failed, link clicks and attributed revenue.
- Kind
- Read
- Connection scope
broadcast:read- Role permission
whatsapp-broadcast.lihat- Package feature
broadcast
| Parameter | Type | Description |
|---|---|---|
status | draft | scheduled | running | done | paused | failed | |
limit | integer 1–25 | Items per page (1-25, default 20). |
cursor | string | The next_cursor from the previous page. |
get_broadcast_report
One broadcast's results: delivered, read, replied, failed (with reasons), link clicks and attributed revenue.
- Kind
- Read
- Connection scope
broadcast:read- Role permission
whatsapp-broadcast.lihat- Package feature
broadcast
| Parameter | Type | Description |
|---|---|---|
broadcast_id * | integer 1– | The broadcast id from a list or search result. |
create_broadcast_draft
Save a broadcast as a draft and run the dry run: who receives it and who is left out (opted out, blocked, no number), sending numbers, estimated duration, WhatsApp API cost, the package quota left, and the links in the message. Nothing is sent.
- Kind
- Change data
- Connection scope
broadcast:draft- Role permission
whatsapp-broadcast.tambah- Package feature
broadcast
| Parameter | Type | Description |
|---|---|---|
name * | string | |
channel * | whatsapp | waba | "waba" sends an approved WhatsApp template only. |
message | string | Text (channel whatsapp); {nama} style fields as in the wizard. |
sender_account_id | integer 1– | WhatsApp API account (channel waba). |
template_id | integer 1– | Approved template id from list_templates (channel waba). |
template_values | object | Template fields by key (channel waba). |
device_ids | array | Sending numbers (channel whatsapp); default: those this person may use. |
label_id | integer 1– | |
category_id | integer 1– | |
stage_id | integer 1– | |
tags | array | |
segment | customers | not_customers | free_claimers | dormant | recent_chat | customers = bought (a free claim is no purchase); free_claimers = claimed a free product, never bought. |
contact_ids | array | |
media_id | integer 1– | Photo, video or document from the media library (channel whatsapp). |
idempotency_key * | string | A unique key you make for this action, e.g. a UUID. Reuse it only to retry the same action with the same arguments; the action never runs twice. |
cancel_broadcast
Turn a scheduled broadcast back into a draft. A broadcast already running is not changed here.
- Kind
- Change data
- Connection scope
broadcast:draft- Role permission
whatsapp-broadcast.edit- Package feature
broadcast
| Parameter | Type | Description |
|---|---|---|
broadcast_id * | integer 1– | The broadcast id from a list or search result. |
idempotency_key * | string | A unique key you make for this action, e.g. a UUID. Reuse it only to retry the same action with the same arguments; the action never runs twice. |
request_broadcast_send
Send or schedule a broadcast draft. Small limits per connection: broadcasts per day and recipients per broadcast (set per package; 1 and 200 by default). The package quota, safe pacing and opt-outs apply. With the connection's default policy this waits in the module's "Menunggu persetujuan" panel for a staff member; read `status` in the result.
- Kind
- Public action, follows the send policy (Awaiting approval queue in its module)
- Connection scope
broadcast:send- Role permission
whatsapp-broadcast.edit- Package feature
broadcast
| Parameter | Type | Description |
|---|---|---|
broadcast_id * | integer 1– | The broadcast draft id from a list or search result. |
schedule_at | string | When: YYYY-MM-DDTHH:mm in the business time zone; omit to send now. |
idempotency_key * | string | A unique key you make for this action, e.g. a UUID. Reuse it only to retry the same action with the same arguments; the action never runs twice. |
Follow-ups & upsells
list_sequences
Follow-up sequences and upsell campaigns with their status and progress; revenue when the package and role allow.
- Kind
- Read
- Connection scope
outreach:read- Role permission
- Every member
No parameters.
get_sequence_report
Report of one follow-up sequence (per step: sent, skipped, failed, replies; deals) or upsell campaign (reach, replies, purchases).
- Kind
- Read
- Connection scope
outreach:read- Role permission
- Every member
| Parameter | Type | Description |
|---|---|---|
kind | follow_up | upsell | Default follow_up. |
id * | integer 1– | The sequence or campaign id from a list or search result. |
enroll_contact
Start an active follow-up sequence for one chat or contact; its messages go out on the sequence's schedule. Refused for blocked or opted-out contacts, groups, resolved chats and a chat already in the sequence. There is no draft queue for enrolments: listed only for connections allowed to send. Upsell campaigns pick their own recipients.
- Kind
- Action towards customers, no draft queue (Confirm or Direct)
- Connection scope
outreach:enroll- Role permission
crm-chats.balas-crm
| Parameter | Type | Description |
|---|---|---|
sequence_id * | integer 1– | The follow-up sequence from list_sequences (kind follow_up) id from a list or search result. |
conversation_id | integer 1– | The conversation id from a list or search result. |
contact_id | integer 1– | The contact (a WhatsApp chat is opened when it has none) id from a list or search result. |
idempotency_key * | string | A unique key you make for this action, e.g. a UUID. Reuse it only to retry the same action with the same arguments; the action never runs twice. |
stop_enrollment
Stop a follow-up for one chat: its waiting messages are cancelled (they can be started again later). Give enrollment_id, or sequence_id with conversation_id.
- Kind
- Change data (stops something)
- Connection scope
outreach:enroll- Role permission
crm-chats.balas-crm
| Parameter | Type | Description |
|---|---|---|
enrollment_id | integer 1– | The enrollment id from a list or search result. |
sequence_id | integer 1– | The follow-up sequence id from a list or search result. |
conversation_id | integer 1– | The conversation id from a list or search result. |
idempotency_key * | string | A unique key you make for this action, e.g. a UUID. Reuse it only to retry the same action with the same arguments; the action never runs twice. |
Landing pages
list_landing_pages
Landing pages with status, public address, visits, leads and the last 7 days of sessions.
- Kind
- Read
- Connection scope
landing:read- Role permission
landing-page.lihat- Package feature
limit_landing_pages
No parameters.
get_landing_analytics
One landing page's analytics: sessions, leads, conversion, scroll, sources, devices, buttons and suggestions.
- Kind
- Read
- Connection scope
landing:read- Role permission
landing-page.lihat- Package feature
limit_landing_pages
| Parameter | Type | Description |
|---|---|---|
page_id * | integer 1– | The landing page or Bio Link page id from a list or search result. |
days | 7 | 30 | 90 | Window in days: 7, 30 or 90. |
list_landing_leads
Form submissions of one landing page, newest first. Phone numbers follow the role's masking.
- Kind
- Read
- Connection scope
landing:read- Role permission
landing-page.lihat- Package feature
limit_landing_pages
| Parameter | Type | Description |
|---|---|---|
page_id * | integer 1– | The landing page or Bio Link page id from a list or search result. |
limit | integer 1–25 | Items per page (1-25, default 20). |
cursor | string | The next_cursor from the previous page. |
get_landing_draft
The draft of a landing page: its sections with their ids, types and editable text and image fields, the draft revision to pass to update_landing_content and publish_landing_page, and a private preview link (7 days).
- Kind
- Read
- Connection scope
landing:read- Role permission
landing-page.lihat- Package feature
limit_landing_pages
| Parameter | Type | Description |
|---|---|---|
page_id * | integer 1– | The landing page id from a list or search result. |
create_landing_draft
Create a new landing page as an unpublished draft, from a template or as a copy of a page. The package's page limit applies (drafts count). Nothing is public until it is published.
- Kind
- Change data
- Connection scope
landing:write- Role permission
landing-page.tambah- Package feature
limit_landing_pages
| Parameter | Type | Description |
|---|---|---|
title | string | |
template | string | Template id ("kosong" for a blank page); an unknown id returns the list. |
duplicate_of | integer 1– | The landing page to copy instead of a template id from a list or search result. |
wa_phone | string | WhatsApp number for the template's buttons. |
idempotency_key * | string | A unique key you make for this action, e.g. a UUID. Reuse it only to retry the same action with the same arguments; the action never runs twice. |
update_landing_content
Change the text, images, order and look of a landing page draft (visual pages). Rich text is sanitised like the editor; raw HTML, scripts, page settings and pixels cannot be changed here. The published page stays as it is until publish_landing_page.
- Kind
- Change data
- Connection scope
landing:write- Role permission
landing-page.edit- Package feature
limit_landing_pages
| Parameter | Type | Description |
|---|---|---|
page_id * | integer 1– | The landing page id from a list or search result. |
revision * | integer 0– | The draft revision from get_landing_draft; refused when someone changed the draft since. |
ops * | array | Edits in order: set_prop {id, path, value}, update_props {id, props}, set_hidden {id, hidden}, move_section {id, index}, duplicate_section {id}, add_section {type, variant?, props?, afterId?}, rename_section {id, name}, set_variant {id, variant}, set_style {id, style}, set_theme {theme}. |
idempotency_key * | string | A unique key you make for this action, e.g. a UUID. Reuse it only to retry the same action with the same arguments; the action never runs twice. |
publish_landing_page
Publish the landing page draft at the given revision (its public address does not change). With the connection's default policy this waits in the module's "Menunggu persetujuan" panel for a staff member; read `status` in the result.
- Kind
- Public action, follows the send policy (Awaiting approval queue in its module)
- Connection scope
landing:publish- Role permission
landing-page.publikasi- Package feature
limit_landing_pages
| Parameter | Type | Description |
|---|---|---|
page_id * | integer 1– | The landing page id from a list or search result. |
revision * | integer 0– | The draft revision to publish (from get_landing_draft). |
idempotency_key * | string | A unique key you make for this action, e.g. a UUID. Reuse it only to retry the same action with the same arguments; the action never runs twice. |
unpublish_landing_page
Take a published landing page offline (visitors get "not found"; the page and its versions stay). With the connection's default policy this waits in the module's "Menunggu persetujuan" panel for a staff member; read `status` in the result.
- Kind
- Public action, follows the send policy (Awaiting approval queue in its module)
- Connection scope
landing:publish- Role permission
landing-page.publikasi- Package feature
limit_landing_pages
| Parameter | Type | Description |
|---|---|---|
page_id * | integer 1– | The landing page id from a list or search result. |
idempotency_key * | string | A unique key you make for this action, e.g. a UUID. Reuse it only to retry the same action with the same arguments; the action never runs twice. |
Bio Link
list_bio_pages
Bio Link pages (main page and extra pages) with status and public address.
- Kind
- Read
- Connection scope
biolink:read- Role permission
bio-link.lihat- Package feature
bio_link
No parameters.
get_bio_page
One Bio Link page: its blocks (draft), clicks per block, and whether the live page differs from the draft.
- Kind
- Read
- Connection scope
biolink:read- Role permission
bio-link.lihat- Package feature
bio_link
| Parameter | Type | Description |
|---|---|---|
page_id * | integer 1– | The landing page or Bio Link page id from a list or search result. |
get_bio_stats
Views, visitors, clicks, chats, leads, orders and revenue of one Bio Link page per day, with sources and devices.
- Kind
- Read
- Connection scope
biolink:read- Role permission
bio-link.lihat- Package feature
bio_link
| Parameter | Type | Description |
|---|---|---|
page_id * | integer 1– | The landing page or Bio Link page id from a list or search result. |
days | 7 | 30 | 90 | Window in days: 7, 30 or 90. |
list_bio_leads
Lead form submissions of one Bio Link page. Phone numbers follow the role's masking.
- Kind
- Read
- Connection scope
biolink:read- Role permission
bio-link.lihat- Package feature
bio_link
| Parameter | Type | Description |
|---|---|---|
page_id * | integer 1– | The landing page or Bio Link page id from a list or search result. |
limit | integer 1–25 | Items per page (1-25, default 20). |
update_bio_blocks
Change the Bio Link draft: add, edit, hide or show blocks, and reorder them. Blocks are checked like the editor (http(s) links, allowed embeds, package features for forms, animation and schedules). Visitors see it after publish_bio_page.
- Kind
- Change data
- Connection scope
biolink:write- Role permission
bio-link.ubah- Package feature
bio_link
| Parameter | Type | Description |
|---|---|---|
page_id * | integer 1– | The Bio Link page id from a list or search result. |
changes | array | Add, edit, hide or show blocks of the draft. |
order | array | All block ids of the page in the new order (optional). |
idempotency_key * | string | A unique key you make for this action, e.g. a UUID. Reuse it only to retry the same action with the same arguments; the action never runs twice. |
publish_bio_page
Publish the Bio Link draft (visible blocks only). With the connection's default policy this waits in the module's "Menunggu persetujuan" panel for a staff member; read `status` in the result.
- Kind
- Public action, follows the send policy (Awaiting approval queue in its module)
- Connection scope
biolink:publish- Role permission
bio-link.terbitkan- Package feature
bio_link
| Parameter | Type | Description |
|---|---|---|
page_id * | integer 1– | The Bio Link page id from a list or search result. |
idempotency_key * | string | A unique key you make for this action, e.g. a UUID. Reuse it only to retry the same action with the same arguments; the action never runs twice. |
Smart Link
list_smart_links
Smart Links with status, address, CS numbers and the funnel (clicks, chats, qualified, closing, revenue).
- Kind
- Read
- Connection scope
smartlink:read- Role permission
smart-link.lihat- Package feature
limit_smart_links
| Parameter | Type | Description |
|---|---|---|
days | 7 | 30 | 90 | Window in days: 7, 30 or 90. |
get_smart_link_report
One Smart Link's funnel, clicks and chats over time, results per CS, top sources and recent silent clicks (clicks with no chat).
- Kind
- Read
- Connection scope
smartlink:read- Role permission
smart-link.lihat- Package feature
limit_smart_links
| Parameter | Type | Description |
|---|---|---|
link_id * | integer 1– | The Smart Link id from a list or search result. |
days | 7 | 30 | 90 | Window in days: 7, 30 or 90. |
list_smart_link_leads
Leads that came through one Smart Link: who, from which source, which CS, waiting time, first message and revenue.
- Kind
- Read
- Connection scope
smartlink:read- Role permission
smart-link.lihat- Package feature
limit_smart_links
| Parameter | Type | Description |
|---|---|---|
link_id * | integer 1– | The Smart Link id from a list or search result. |
days | 7 | 30 | 90 | Window in days: 7, 30 or 90. |
status | new | replied | qualified | closing | lost | |
query | string | Text to search for. |
limit | integer 1–25 | Items per page (1-25, default 20). |
cursor | string | The next_cursor from the previous page. |
smart_link_usage
Where one Smart Link is used: landing pages, Bio Link, store, live chat and automations.
- Kind
- Read
- Connection scope
smartlink:read- Role permission
smart-link.lihat- Package feature
limit_smart_links
| Parameter | Type | Description |
|---|---|---|
link_id * | integer 1– | The Smart Link id from a list or search result. |
list_smart_link_numbers
The business's registered WhatsApp numbers a Smart Link can rotate to, with their key for create_smart_link and update_smart_link and whether they are connected.
- Kind
- Read
- Connection scope
smartlink:read- Role permission
smart-link.lihat- Package feature
limit_smart_links
No parameters.
create_smart_link
Create a new WhatsApp Smart Link that rotates visitors to the business's CS numbers. A new link is not used anywhere yet; the package's link limit applies.
- Kind
- Change data
- Connection scope
smartlink:write- Role permission
smart-link.kelola- Package feature
limit_smart_links
| Parameter | Type | Description |
|---|---|---|
name * | string | |
numbers * | array | CS numbers to rotate to (connected ones only). |
message | string | Opening message; [produk] style placeholders are filled from the link's query. |
slug | string | Last part of the address (default: from the name). |
idempotency_key * | string | A unique key you make for this action, e.g. a UUID. Reuse it only to retry the same action with the same arguments; the action never runs twice. |
update_smart_link
Change a Smart Link's name, opening message, rotation or numbers, or switch it on or off. Changes to an inactive link apply at once; changing an active link (or switching one on) reaches visitors: With the connection's default policy this waits in the module's "Menunggu persetujuan" panel for a staff member; read `status` in the result.
- Kind
- Public action, follows the send policy (Awaiting approval queue in its module)
- Connection scope
smartlink:write- Role permission
smart-link.kelola- Package feature
limit_smart_links
| Parameter | Type | Description |
|---|---|---|
link_id * | integer 1– | The Smart Link id from a list or search result. |
name | string | |
message | string | |
routing_mode | sequential | fair | weighted | random | |
numbers | array | The new rotation (replaces the current numbers). |
active | boolean | Switch the link on or off. |
idempotency_key * | string | A unique key you make for this action, e.g. a UUID. Reuse it only to retry the same action with the same arguments; the action never runs twice. |
Content
get_content_calendar
Scheduled posts in a date range (max 62 days, default this week), posts waiting for approval and unscheduled drafts, with each target account's status. Captions are whole in all three lists; only when they do not fit in one answer are the longest shortened, marked caption_truncated (get_post has the whole caption).
- Kind
- Read
- Connection scope
content:read- Role permission
content-studio.lihat- Package feature
limit_content_studio
| Parameter | Type | Description |
|---|---|---|
from | string (date) | Start date YYYY-MM-DD in the business time zone (default: 7 days ago). |
to | string (date) | End date YYYY-MM-DD in the business time zone, inclusive (default: today). |
get_post
One post: the whole caption, each attached file with its media library id, each target account with its key and own caption (if it has one), status per account (published, failed with reason) and linked content tasks.
- Kind
- Read
- Connection scope
content:read- Role permission
content-studio.lihat- Package feature
limit_content_studio
| Parameter | Type | Description |
|---|---|---|
post_id * | integer 1– | The post id from a list or search result. |
list_content_tasks
Content tasks and ideas in a date range (default 14 days). Without the 'see all' right, only tasks given to or made by this person.
- Kind
- Read
- Connection scope
content:read- Role permission
content-tasks.lihat- Package feature
limit_content_tasks
| Parameter | Type | Description |
|---|---|---|
from | string (date) | Start date YYYY-MM-DD in the business time zone (default: 7 days ago). |
to | string (date) | End date YYYY-MM-DD in the business time zone, inclusive (default: today). |
status | todo | in_progress | ready_upload | uploaded | needs_revision | done | |
limit | integer 1–25 | Items per page (1-25, default 20). |
cursor | string | The next_cursor from the previous page. |
list_media
Folders and files of the media library (names, types, sizes) and storage use against the package limit. File contents are not returned.
- Kind
- Read
- Connection scope
media:read- Role permission
media-manager.lihat-media
| Parameter | Type | Description |
|---|---|---|
folder_id | integer 1– | The folder id from a list or search result. |
limit | integer 1–25 | Items per page (1-25, default 20). |
cursor | string | The next_cursor from the previous page. |
list_content_accounts
Social accounts and WhatsApp numbers (Status, Saluran) a post can go to, with their key for create_content_draft and whether they are connected.
- Kind
- Read
- Connection scope
content:read- Role permission
content-studio.lihat- Package feature
limit_content_studio
No parameters.
create_content_draft
Save a post as a draft in Konten (caption, media from the library, target accounts). Nothing is scheduled; use schedule_post.
- Kind
- Change data
- Connection scope
content:write- Role permission
content-studio.tambah- Package feature
limit_content_studio
| Parameter | Type | Description |
|---|---|---|
title | string | |
caption * | string | |
accounts * | array | Account keys from list_content_accounts. |
media_ids | array | Media library file ids (list_media, upload_media or create_upload_link). One video goes out as Instagram Reels and as a TikTok video. |
link_url | string | |
idempotency_key * | string | A unique key you make for this action, e.g. a UUID. Reuse it only to retry the same action with the same arguments; the action never runs twice. |
generate_captions
Caption ideas written by Klik Flow AI. Uses the business's AI credits like the Konten editor (the owner can switch caption AI off).
- Kind
- Change data
- Connection scope
content:write- Role permission
content-studio.tambah- Package feature
content_ai_caption
| Parameter | Type | Description |
|---|---|---|
brief * | string | What the post is about. |
tone | santai | promo | formal | lucu | |
platforms | array | |
idempotency_key * | string | A unique key you make for this action, e.g. a UUID. Reuse it only to retry the same action with the same arguments; the action never runs twice. |
schedule_post
Schedule a content draft on its accounts. Without the publish permission, a package with content approval sends it to Konten's approval queue. With the connection's default policy this waits in the module's "Menunggu persetujuan" panel for a staff member; read `status` in the result.
- Kind
- Public action, follows the send policy (Awaiting approval queue in its module)
- Connection scope
content:publish- Role permission
content-studio.tambah- Package feature
limit_content_studio
| Parameter | Type | Description |
|---|---|---|
post_id * | integer 1– | The content draft id from a list or search result. |
at | string | When: YYYY-MM-DDTHH:mm in the business time zone; omit for as soon as possible. |
idempotency_key * | string | A unique key you make for this action, e.g. a UUID. Reuse it only to retry the same action with the same arguments; the action never runs twice. |
cancel_post
Cancel a scheduled post (it goes back to draft). Needs the cancel-schedule or publish permission. With the connection's default policy this waits in the module's "Menunggu persetujuan" panel for a staff member; read `status` in the result.
- Kind
- Public action, follows the send policy (Awaiting approval queue in its module)
- Connection scope
content:publish- Role permission
- Depends on the part changed (see the description)
- Package feature
limit_content_studio
| Parameter | Type | Description |
|---|---|---|
post_id * | integer 1– | The scheduled post id from a list or search result. |
idempotency_key * | string | A unique key you make for this action, e.g. a UUID. Reuse it only to retry the same action with the same arguments; the action never runs twice. |
update_post
Change a post in Konten, like Edit on the web: only the fields you give change. A draft stays a draft and a post waiting for approval keeps waiting, with the new text. A scheduled post keeps its time and the change reaches its accounts; this also needs content:publish, and with the connection's default policy it waits in the module's "Menunggu persetujuan" panel. A published post cannot change. Read `status` and `notes` in the result.
- Kind
- Public action, follows the send policy (Awaiting approval queue in its module)
- Connection scope
content:write- Role permission
- Depends on the part changed (see the description)
- Package feature
limit_content_studio
| Parameter | Type | Description |
|---|---|---|
post_id * | integer 1– | The post id from a list or search result. |
caption | string | The new main caption. |
title | string | The new title; an empty text removes it. |
link_url | string | The new link; an empty text removes it. |
media_ids | array | Media library file ids replacing the post's files, in order; [] removes them. |
accounts | array | Account keys (list_content_accounts) replacing the post's accounts. |
account_captions | object | A caption for one account by its key (get_post); null or an empty text = the main caption. |
idempotency_key * | string | A unique key you make for this action, e.g. a UUID. Reuse it only to retry the same action with the same arguments; the action never runs twice. |
create_content_task
Add an idea or task to the team's content board.
- Kind
- Change data
- Connection scope
content:write- Role permission
content-tasks.tambah- Package feature
limit_content_tasks
| Parameter | Type | Description |
|---|---|---|
title * | string | |
description | string | |
platform | Instagram | TikTok | YouTube | Facebook | LinkedIn | Threads | Shopee | Website | Lainnya | |
scheduled_date | string (date) | |
scheduled_time | string | |
assignee_user_id | integer 1– | Team member (assigning someone else needs the assign permission). |
priority | low | normal | high | |
caption | string | |
idempotency_key * | string | A unique key you make for this action, e.g. a UUID. Reuse it only to retry the same action with the same arguments; the action never runs twice. |
update_content_task
Change a content task's fields or status.
- Kind
- Change data
- Connection scope
content:write- Role permission
content-tasks.edit- Package feature
limit_content_tasks
| Parameter | Type | Description |
|---|---|---|
task_id * | integer 1– | The content task id from a list or search result. |
status | todo | in_progress | ready_upload | uploaded | needs_revision | done | uploaded and done need a post link or proof. |
title | string | |
description | string | |
scheduled_date | string (date) | |
assignee_user_id | integer 1– | |
priority | low | normal | high | |
caption | string | |
post_url | string | |
idempotency_key * | string | A unique key you make for this action, e.g. a UUID. Reuse it only to retry the same action with the same arguments; the action never runs twice. |
upload_media
Add an image or a video to the business's media library from a public address, with the same types and limits as Konten on the web (the package's per-upload size and storage). The type is read from the file itself; QuickTime (.mov) and MKV are refused, convert them to MP4. A large video can take a minute or two to download: if the call times out, call again with the same idempotency_key. For a file on your own computer use create_upload_link instead. Use the returned media id in create_content_draft (Reels and video posts) and broadcasts, and its url in landing pages and Bio Link.
- Kind
- Change data
- Connection scope
media:write- Role permission
media-manager.upload-media
| Parameter | Type | Description |
|---|---|---|
url | string | Public http(s) address of the file itself (a direct download link, not a Google Drive or Dropbox preview page): a JPG, PNG, WebP or GIF image, or an MP4 or WebM video. Up to the package's per-upload size (at most 250 MB), as on the web. |
data_base64 | string | Or the file itself in base64 (max about 500 KB): fine for a small image; send videos by url. |
file_name | string | |
folder_id | integer 1– | Media library folder (list_media). |
idempotency_key * | string | A unique key you make for this action, e.g. a UUID. Reuse it only to retry the same action with the same arguments; the action never runs twice. |
create_upload_link
Get a one-use HTTPS link to send an image or a video from your own computer to the business's media library, with no public link and nothing picked on the web. Run the returned command (curl -T) where the file is; its JSON answer has the media_id for create_content_draft, then schedule_post. The link belongs to this business and this connection, lasts 15 minutes and stores one file. Same types and limits as upload_media: JPG, PNG, WebP, GIF, MP4, WebM up to the package's per-upload size (at most 250 MB); .mov, .mkv and .m4a are refused with the reason. A refused file can be fixed and sent again with the same link before it expires.
- Kind
- Change data
- Connection scope
media:write- Role permission
media-manager.upload-media
| Parameter | Type | Description |
|---|---|---|
file_name | string | The file you will send (e.g. final.mp4): put in the ready-made command and used to name it in the library. |
folder_id | integer 1– | Media library folder (list_media). |
idempotency_key * | string | A unique key you make for this action, e.g. a UUID. Reuse it only to retry the same action with the same arguments; the action never runs twice. |
Store
search_products
Store products with price, stock available, variants and sales. `free: true` = a variant is free (price 0, claimed without payment); `sales_count` includes free claims, `free_claims_30d` counts them apart and `revenue_30d` never includes them.
- Kind
- Read
- Connection scope
store:read- Role permission
product.lihat
| Parameter | Type | Description |
|---|---|---|
query | string | Text to search for. |
status | active | draft | inactive | archived | |
limit | integer 1–25 | Items per page (1-25, default 20). |
cursor | string | The next_cursor from the previous page. |
list_orders
Store orders with payment, fulfilment and delivery status, totals and buyer. A free claim has `free_claim: true`, status paid, total 0 and method Gratis: no payment, no fee and not a sale. Owner only; no payment credentials.
- Kind
- Read
- Connection scope
store:read- Role permission
product.lihat· owner only
| Parameter | Type | Description |
|---|---|---|
filter | all | ship | paid | pending | attention | ship = paid physical orders still to send; attention = delivery failed. |
page | integer 1– | Page of 20 (default 1). |
get_order
One order: items, amounts, shipping address and shipment (courier, waybill, status). `free_claim: true` = a free product claimed without payment (total 0, not a sale). Owner only.
- Kind
- Read
- Connection scope
store:read- Role permission
product.lihat· owner only
| Parameter | Type | Description |
|---|---|---|
order_no * | string | The order_no from list_orders. |
Reports & ads
get_report
The Laporan report of one tab for a period, in the business time zone, as blocks (KPIs, tables, series). Money figures need the 'Lihat angka' right; tabs other than ringkasan need the advanced reports package.
- Kind
- Read
- Connection scope
reports:read- Role permission
laporan.lihat
| Parameter | Type | Description |
|---|---|---|
tab | ringkasan | penjualan | pemasaran | pipeline | layanan | ai | operasional | Report tab (default ringkasan). |
period | today | 7d | mtd | 30d | 90d | last_month | Default 7d; mtd = month to date. |
channel | whatsapp | waba | telegram | instagram | messenger | livechat | email | |
compare | boolean | Compare with the period before (default true). |
get_signal_health
Health of the conversion signals sent to Meta and TikTok (sent, pending, failed, rejected), problems with fixes, match coverage and setup.
- Kind
- Read
- Connection scope
ads:read- Role permission
business.lihat
| Parameter | Type | Description |
|---|---|---|
days | 7 | 30 | 90 | Window in days: 7, 30 or 90. |
get_ads_revenue
Which ads and campaigns brought leads, closings and revenue, with spend, CPL, CPA and ROAS, plus results per CS.
- Kind
- Read
- Connection scope
ads:read- Role permission
laporan.lihat-angka- Package feature
ads_insights
| Parameter | Type | Description |
|---|---|---|
days | 7 | 30 | 90 | Window in days: 7, 30 or 90. |
Automations & AI Agent
list_automations
Automation flows with a plain summary, channels, runs and messages of the last 7 days and the last result.
- Kind
- Read
- Connection scope
automation:read- Role permission
otomasi.lihat
No parameters.
get_automation_runs
Recent runs of automation flows (within the package's history days) with result, reason and steps.
- Kind
- Read
- Connection scope
automation:read- Role permission
otomasi.lihat
| Parameter | Type | Description |
|---|---|---|
flow_id | integer 1– | The automation flow id from a list or search result. |
status | ok | skipped | failed | waiting | |
limit | integer 1–25 | Items per page (1-25, default 20). |
list_ai_agents
AI Agents with mode (auto, suggest, off), language, tone, channels they answer and replies/handoffs of the last 7 days.
- Kind
- Read
- Connection scope
ai_agent:read- Role permission
ai-agent.lihat- Package feature
ai_response
No parameters.
list_knowledge
Knowledge sources of one AI Agent (documents, websites, spreadsheets with sync state) and its fixed answers (Tanya-jawab tetap).
- Kind
- Read
- Connection scope
ai_agent:read- Role permission
ai-agent.lihat- Package feature
ai_response
| Parameter | Type | Description |
|---|---|---|
agent_id * | integer 1– | The AI Agent id from a list or search result. |
limit | integer 1–25 | Items per page (1-25, default 20). |
Resources
For AI apps that read MCP resources. Each resource is available when its tool is available to the connection, and is read through that tool: the same scope, role permission, limits and log.
klikflow://contact/{id}: One contact by id: the same record get_contact returns (phone numbers follow the role). Same asget_contact.klikflow://conversation/{id}: One chat by id with its latest messages: the same record get_conversation returns. Customer text is marked untrusted. Same asget_conversation.
Ready-made prompts
The prompt texts are in Indonesian, because they are inserted as the user's own message to an Indonesian business.
ringkas-hari-ini: Summary of today's work: chats waiting for a reply, open tickets and pipeline movement. Useslist_conversations,list_tickets.follow-up-prospek: Find prospects that need a follow-up and draft suggested messages (nothing is sent). Usesget_pipeline,list_conversations,get_contact.laporan-mingguan: A weekly report: chats, leads, sales and team performance compared with the week before. Usesget_report.performa-landing: How the landing pages perform: visits, leads and conversion, with suggestions. Useslist_landing_pages,get_landing_analytics.rencana-konten-minggu-ini: This week's content plan: scheduled posts, gaps and open content tasks. Usesget_content_calendar,list_content_tasks.
Connection scopes
| Scope | Name | Role permission |
|---|---|---|
business:read | View business profile. Business name, time zone, channel status, and team members for assignment. | Every member |
contacts:read | View contacts. Search and open contacts. Numbers follow your role's masking. | contact-data.lihat |
contacts:write | Edit contacts. Add or edit contacts, labels, notes and reminders. | contact-data.edit |
conversations:read | Read chats. Chat list and messages, within your chat and device scope. | crm-chats.lihat-crm |
conversations:manage | Manage chats. Assignment, status, labels, AI mode and internal notes. | crm-chats.edit-informasi |
messages:draft | Prepare replies. AI suggestion drafts that staff send from the Inbox. | crm-chats.balas-crm |
messages:send | Send replies. Reply to existing chats. With the Draft policy, replies wait for staff approval. | crm-chats.balas-crm |
messages:new | Chat to a new number. Start a WhatsApp chat with a number that has never chatted, with a small daily limit. | crm-chats.balas-crm |
pipeline:read | View pipeline. Pipeline stages, totals and cards. | crm-chats.lihat-crm |
pipeline:write | Edit pipeline. Move stages, mark won or lost. | kanban.drag-drop-kanban |
tickets:read | View tickets. Tickets, status, priority and SLA. | ticket.lihat |
tickets:write | Edit tickets. Create and edit tickets. | ticket.edit |
comments:read | View comments. The comment queue and post previews. | repliz.lihat |
comments:reply | Reply to comments. Reply to comments and send comment DMs. | repliz.balas-komentar |
broadcast:read | View broadcasts. Broadcast list and reports. | whatsapp-broadcast.lihat |
broadcast:draft | Prepare broadcasts. Broadcast drafts with a recipient preview, quota and cost. | whatsapp-broadcast.tambah |
broadcast:send | Request broadcast sending. Request that a broadcast be sent, with a small daily limit. | whatsapp-broadcast.tambah |
outreach:read | View follow-ups. Follow-up and upsell sequences with their reports. | up-selling.lihat |
outreach:enroll | Enrol in follow-ups. Add a contact to an existing follow-up sequence, or stop it. | crm-chats.balas-crm |
landing:read | View landing pages. Pages, statistics and form leads. | landing-page.lihat |
landing:write | Edit landing page drafts. Create drafts and change their text or images. | landing-page.edit |
landing:publish | Publish landing pages. Publish or unpublish a landing page. | landing-page.publikasi |
biolink:read | View Bio Link. Pages, blocks, statistics and leads. | bio-link.lihat |
biolink:write | Edit Bio Link drafts. Add, edit, reorder and hide blocks in the draft. | bio-link.ubah |
biolink:publish | Publish Bio Link. Publish the Bio Link draft. | bio-link.terbitkan |
smartlink:read | View Smart Link. Links, click and lead reports, and where links are used. | smart-link.lihat |
smartlink:write | Edit Smart Link. Create links and change the destination, CS numbers or message. | smart-link.kelola |
content:read | View content. Calendar, posts, ideas and tasks. | content-studio.lihat |
content:write | Prepare content. Post drafts, captions, ideas and tasks. | content-studio.tambah |
content:publish | Schedule content. Schedule or publish posts. | content-studio.publish |
media:read | View media. Files in the media library and storage use. | media-manager.lihat-media |
media:write | Upload media. Add images or videos to the media library, within the package's storage limit. | media-manager.upload-media |
store:read | View store. Products, stock, orders and shipping status. No payment data. | product.lihat |
reports:read | View reports. Report summary figures. Money figures need the View figures permission. | laporan.lihat |
ads:read | View ad signals. Signal health and the ads-to-revenue report. | business.lihat |
prospects:read | View Prospect Finder results. Saved prospect search results. Numbers follow your role's masking. | scraping-google-maps.lihat |
automation:read | View automations. Automation flows and their run results. | otomasi.lihat |
ai_agent:read | View AI Agent. Agents, modes and knowledge sources. | ai-agent.lihat |
Versions
- 2.3.7 (28 October 2026): A task in Ideas & team tasks that was made into a post follows that post in the calendar: column, date, time and link.
list_content_tasksmarks itfollows_post: truewith the post's state inpost_state(for example "Terjadwal 12 Nov 19.00" or "Gagal terbit: …").update_content_taskrefuses to change its status (except to done once published) or its scheduled date withCONFLICT: change the post instead. - 2.3.6 (28 October 2026):
update_postchanges a post's caption, title, link, media, accounts or per-account captions, like Edit in Content: only the fields given change. A draft stays a draft, a post waiting for approval keeps waiting, and a scheduled post keeps its time while the change reaches its accounts (it also needscontent:publishand follows the send policy). A published post cannot change. The answer'snotesname accounts with their own caption, formats changed for new media and accounts where the post is already out.get_postgives each target account'skeyand itsown_captionwhen it has one. - 2.3.5 (27 October 2026): Free products:
search_productsmarks themfree: trueand counts free claims apart (free_claims_30d);list_ordersandget_ordermark a claimfree_claim: truewithpayment_methodGratis, so a claim (total 0, no payment, no fee) is never read as a sale.create_broadcast_drafttakes the audiencefree_claimers(claimed a free product, never bought).customersandnot_customersno longer count a free claim as a purchase. - 2.3.4 (26 October 2026):
get_content_calendargives whole captions in all three lists (drafts were cut at 600 characters without a mark); only when they do not fit in one answer are the longest shortened, markedcaption_truncated.get_postgives captions up to 5,000 characters.get_postlists each attached file with its media library id (media_id,in_library), name, size and address. - 2.3.3 (26 October 2026):
create_upload_link: an AI app sends an image or a video from its own computer (curl -T) with no public link and nothing picked on the web. The link is one-use, lasts 15 minutes, belongs to one business and one connection, and stores the file with the same rules asupload_media; the answer has themedia_idforcreate_content_draftandschedule_post. - 2.3.2 (26 October 2026):
upload_mediatakes videos too, with the same types and limits as Content on the web: JPG, PNG, WebP and GIF images, MP4 and WebM videos, up to the package's per-upload size (at most 250 MB). Large files are downloaded straight to storage, and the answer sayskind(image or video),mimeand the storage left. - 2.3.1 (25 October 2026): English documentation at
/docs/en, the terms of service at/p/terms, and English translations of the privacy policy and the terms. The consent page recognises Claude returning to claude.com and ChatGPT returning to a per-connection callback address. - 2.3.0 (25 October 2026): 2 resource templates,
klikflow://contact/{id}andklikflow://conversation/{id}, for AI apps that read resources. Both are read through their tool, with the same permissions and limits. A/.well-known/security.txtfile, a status page (/status, JSON at/api/status), and verification files for the MCP Registry and the OpenAI directory. Fixes since 2.2.0: OAuth addresses are always https behind any proxy, reconnecting from the same browser works, clear messages when a consent step was already used or opened in another browser, and adding to Claude works from a browser that has the Klik Flow app installed. - 2.2.0 (24 October 2026): 21 tools (18 write, 3 read) for landing pages, Bio Link, Smart Link, Content, broadcasts and media; an awaiting-approval queue in each module; broadcast limits per connection.
- 2.1.0 (24 October 2026): 15 write tools and
reveal_phonefor chats, contacts, pipeline, tickets, comments and follow-ups; send policies (Draft, Confirm in the AI app, Direct) and idempotency keys. - 2.0.0 (24 October 2026): 42 read tools across every module, 5 prompts, OAuth sign-in and access keys.