Docs menuTools, prompts & scopes
MCP documentationBahasa Indonesia

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
ParameterTypeDescription
querystringText to search for.
limitinteger 1–25Items per page (1-25, default 20).
cursorstringThe 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
ParameterTypeDescription
querystringName, phone, email, company, city or username.
limitinteger 1–25Items per page (1-25, default 20).
cursorstringThe 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
ParameterTypeDescription
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
ParameterTypeDescription
job_idinteger 1–The prospect search (job) id from a list or search result.
limitinteger 1–25Items per page (1-25, default 20).
cursorstringThe 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)
ParameterTypeDescription
contact_idinteger 1–The contact (omit to create a new contact) id from a list or search result.
namestring
phonestringNot changeable when this person's role sees masked numbers.
emailstring
companystring
citystring
provincestring
addressstring
custom_fieldsobjectValues by custom field key (keys from get_contact).
idempotency_key *stringA 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
ParameterTypeDescription
contact_id *integer 1–The contact id from a list or search result.
add_tagsarrayTags to add (lowercase words).
remove_tagsarray
label_idinteger 1–A contact label id to set.
clear_labelboolean
category_idinteger 1–A contact category id to set.
clear_categoryboolean
idempotency_key *stringA 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
ParameterTypeDescription
contact_id *integer 1–The contact id from a list or search result.
title *stringWhat to do, e.g. "Follow up penawaran".
due_at *stringWhen: YYYY-MM-DDTHH:mm in the business time zone, or ISO 8601 with an offset.
assignee_user_idinteger 1–Who is reminded (default: this person) (a team member id from get_workspace).
idempotency_key *stringA 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
ParameterTypeDescription
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
ParameterTypeDescription
statusopen | pending | resolved
queuemine | unassigned | handoffmine = assigned to this person; unassigned = nobody has it and the AI is not answering; handoff = handed over by the AI.
unread_onlyboolean
channelstringwhatsapp, waba, instagram, messenger, telegram, livechat, email…
querystringText to search for.
limitinteger 1–25Items per page (1-25, default 20).
cursorstringThe 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
ParameterTypeDescription
conversation_id *integer 1–The conversation id from a list or search result.
limitinteger 1–50Messages (default 20, newest).
before_message_idinteger 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
ParameterTypeDescription
query *stringWords to find in message text (3+ characters).
daysinteger 1–90How far back (default 30).
limitinteger 1–25Items per page (1-25, default 20).
cursorstringThe 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)
ParameterTypeDescription
conversation_id *integer 1–The conversation id from a list or search result.
statusopen | pending | resolvedNew status. Resolving ends a handoff and may hand the chat back to the AI agent.
assign_to_user_idinteger 1–Who handles the chat; your own id takes it yourself (a team member id from get_workspace).
unassignbooleantrue: nobody handles the chat any more.
label_idinteger 1–A contact label id (labels of type contact) to set on the chat.
clear_labelbooleantrue: remove the chat's label.
ai_modeai | off"ai": the AI agent answers this chat again (nobody holds it); "off": switch the AI off for this chat.
idempotency_key *stringA 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:manage or contacts:write
Role permission
Depends on the part changed (see the description)
ParameterTypeDescription
conversation_idinteger 1–The conversation id from a list or search result.
contact_idinteger 1–The contact id from a list or search result.
text *stringThe note. Staff see it; customers never do.
mention_user_idsarrayTeam members to notify (chat notes only).
idempotency_key *stringA 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
ParameterTypeDescription
conversation_id *integer 1–The conversation id from a list or search result.
text *stringThe reply as the customer would read it, in the customer's language.
idempotency_key *stringA 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
ParameterTypeDescription
conversation_id *integer 1–The conversation id from a list or search result.
text *stringThe reply as the customer will read it, in the customer's language.
idempotency_key *stringA 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
ParameterTypeDescription
phone *stringWhatsApp number, e.g. 6281234567890 or 081234567890.
text *stringThe first message, in the customer's language.
contact_namestringName for a new contact (optional).
device_idinteger 1–Which WhatsApp number of the business sends it (from get_workspace); default: the first connected one this person may use.
idempotency_key *stringA 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
ParameterTypeDescription
pipeline_idinteger 1–The pipeline id from a list or search result.
viewall | mine | reply | followup | stuck | hot
querystringText to search for.
cards_per_stageinteger 1–25Cards 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
ParameterTypeDescription
conversation_idinteger 1–The conversation (the card of a chat) id from a list or search result.
contact_idinteger 1–The contact (the card of a contact without a chat) id from a list or search result.
stage_idinteger 1–Pipeline stage id from get_pipeline.
outcomewon | lost | reopenClose the card as won or lost, or reopen a closed card.
valuenumber 0–Deal value in IDR (for won, or to set the value).
lost_reasonstringRequired when the outcome is lost.
idempotency_key *stringA 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
ParameterTypeDescription
viewopen | mine | unassigned | overdue | resolved | archived | all
querystringText to search for.
limitinteger 1–25Items per page (1-25, default 20).
cursorstringThe 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
ParameterTypeDescription
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
ParameterTypeDescription
subject *stringShort summary of the issue.
descriptionstring
priorityurgent | high | normal | low
conversation_idinteger 1–The conversation the ticket is about id from a list or search result.
contact_idinteger 1–The contact the ticket is about id from a list or search result.
category_idinteger 1–
assignee_user_idinteger 1–Who handles it (default: the business's ticket rules) (a team member id from get_workspace).
notify_customerbooleantrue: send the business's own "ticket created" notice to the customer, as set in Tiket settings. Default false.
idempotency_key *stringA 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)
ParameterTypeDescription
ticket_id *integer 1–The ticket id from a list or search result.
statusopen | in_progress | pending | on_hold | resolved | closedNeeds the ticket status permission; customer notices follow the business's ticket settings.
priorityurgent | high | normal | low
assignee_user_idinteger 1–New assignee (a team member id from get_workspace).
subjectstring
category_idinteger 1–
internal_notestringA note for the team on the ticket (never sent to the customer).
idempotency_key *stringA 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
ParameterTypeDescription
viewall | todo | question | complaint | review | drafted | spam | done | ignored | backlog
platformstring
querystringText to search for.
limitinteger 1–25Items per page (1-25, default 20).
cursorstringThe 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
ParameterTypeDescription
comment_id *integer 1–The comment id from a list or search result.
text *stringThe public reply. Platform limits apply (e.g. TikTok 150, X 280 characters).
idempotency_key *stringA 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
ParameterTypeDescription
comment_id *integer 1–The comment id from a list or search result.
text *stringThe private message.
idempotency_key *stringA 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
ParameterTypeDescription
statusdraft | scheduled | running | done | paused | failed
limitinteger 1–25Items per page (1-25, default 20).
cursorstringThe 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
ParameterTypeDescription
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
ParameterTypeDescription
name *string
channel *whatsapp | waba"waba" sends an approved WhatsApp template only.
messagestringText (channel whatsapp); {nama} style fields as in the wizard.
sender_account_idinteger 1–WhatsApp API account (channel waba).
template_idinteger 1–Approved template id from list_templates (channel waba).
template_valuesobjectTemplate fields by key (channel waba).
device_idsarraySending numbers (channel whatsapp); default: those this person may use.
label_idinteger 1–
category_idinteger 1–
stage_idinteger 1–
tagsarray
segmentcustomers | not_customers | free_claimers | dormant | recent_chatcustomers = bought (a free claim is no purchase); free_claimers = claimed a free product, never bought.
contact_idsarray
media_idinteger 1–Photo, video or document from the media library (channel whatsapp).
idempotency_key *stringA 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
ParameterTypeDescription
broadcast_id *integer 1–The broadcast id from a list or search result.
idempotency_key *stringA 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
ParameterTypeDescription
broadcast_id *integer 1–The broadcast draft id from a list or search result.
schedule_atstringWhen: YYYY-MM-DDTHH:mm in the business time zone; omit to send now.
idempotency_key *stringA 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
ParameterTypeDescription
kindfollow_up | upsellDefault 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
ParameterTypeDescription
sequence_id *integer 1–The follow-up sequence from list_sequences (kind follow_up) id from a list or search result.
conversation_idinteger 1–The conversation id from a list or search result.
contact_idinteger 1–The contact (a WhatsApp chat is opened when it has none) id from a list or search result.
idempotency_key *stringA 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
ParameterTypeDescription
enrollment_idinteger 1–The enrollment id from a list or search result.
sequence_idinteger 1–The follow-up sequence id from a list or search result.
conversation_idinteger 1–The conversation id from a list or search result.
idempotency_key *stringA 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
ParameterTypeDescription
page_id *integer 1–The landing page or Bio Link page id from a list or search result.
days7 | 30 | 90Window 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
ParameterTypeDescription
page_id *integer 1–The landing page or Bio Link page id from a list or search result.
limitinteger 1–25Items per page (1-25, default 20).
cursorstringThe 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
ParameterTypeDescription
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
ParameterTypeDescription
titlestring
templatestringTemplate id ("kosong" for a blank page); an unknown id returns the list.
duplicate_ofinteger 1–The landing page to copy instead of a template id from a list or search result.
wa_phonestringWhatsApp number for the template's buttons.
idempotency_key *stringA 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
ParameterTypeDescription
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 *arrayEdits 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 *stringA 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
ParameterTypeDescription
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 *stringA 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
ParameterTypeDescription
page_id *integer 1–The landing page id from a list or search result.
idempotency_key *stringA 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
ParameterTypeDescription
fromstring (date)Start date YYYY-MM-DD in the business time zone (default: 7 days ago).
tostring (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
ParameterTypeDescription
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
ParameterTypeDescription
fromstring (date)Start date YYYY-MM-DD in the business time zone (default: 7 days ago).
tostring (date)End date YYYY-MM-DD in the business time zone, inclusive (default: today).
statustodo | in_progress | ready_upload | uploaded | needs_revision | done
limitinteger 1–25Items per page (1-25, default 20).
cursorstringThe 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
ParameterTypeDescription
folder_idinteger 1–The folder id from a list or search result.
limitinteger 1–25Items per page (1-25, default 20).
cursorstringThe 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
ParameterTypeDescription
titlestring
caption *string
accounts *arrayAccount keys from list_content_accounts.
media_idsarrayMedia library file ids (list_media, upload_media or create_upload_link). One video goes out as Instagram Reels and as a TikTok video.
link_urlstring
idempotency_key *stringA 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
ParameterTypeDescription
brief *stringWhat the post is about.
tonesantai | promo | formal | lucu
platformsarray
idempotency_key *stringA 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
ParameterTypeDescription
post_id *integer 1–The content draft id from a list or search result.
atstringWhen: YYYY-MM-DDTHH:mm in the business time zone; omit for as soon as possible.
idempotency_key *stringA 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
ParameterTypeDescription
post_id *integer 1–The scheduled post id from a list or search result.
idempotency_key *stringA 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
ParameterTypeDescription
post_id *integer 1–The post id from a list or search result.
captionstringThe new main caption.
titlestringThe new title; an empty text removes it.
link_urlstringThe new link; an empty text removes it.
media_idsarrayMedia library file ids replacing the post's files, in order; [] removes them.
accountsarrayAccount keys (list_content_accounts) replacing the post's accounts.
account_captionsobjectA caption for one account by its key (get_post); null or an empty text = the main caption.
idempotency_key *stringA 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
ParameterTypeDescription
title *string
descriptionstring
platformInstagram | TikTok | YouTube | Facebook | LinkedIn | Threads | Shopee | Website | Lainnya
scheduled_datestring (date)
scheduled_timestring
assignee_user_idinteger 1–Team member (assigning someone else needs the assign permission).
prioritylow | normal | high
captionstring
idempotency_key *stringA 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
ParameterTypeDescription
task_id *integer 1–The content task id from a list or search result.
statustodo | in_progress | ready_upload | uploaded | needs_revision | doneuploaded and done need a post link or proof.
titlestring
descriptionstring
scheduled_datestring (date)
assignee_user_idinteger 1–
prioritylow | normal | high
captionstring
post_urlstring
idempotency_key *stringA 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
ParameterTypeDescription
urlstringPublic 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_base64stringOr the file itself in base64 (max about 500 KB): fine for a small image; send videos by url.
file_namestring
folder_idinteger 1–Media library folder (list_media).
idempotency_key *stringA 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
ParameterTypeDescription
querystringText to search for.
statusactive | draft | inactive | archived
limitinteger 1–25Items per page (1-25, default 20).
cursorstringThe 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
ParameterTypeDescription
filterall | ship | paid | pending | attentionship = paid physical orders still to send; attention = delivery failed.
pageinteger 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
ParameterTypeDescription
order_no *stringThe 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
ParameterTypeDescription
tabringkasan | penjualan | pemasaran | pipeline | layanan | ai | operasionalReport tab (default ringkasan).
periodtoday | 7d | mtd | 30d | 90d | last_monthDefault 7d; mtd = month to date.
channelwhatsapp | waba | telegram | instagram | messenger | livechat | email
comparebooleanCompare 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
ParameterTypeDescription
days7 | 30 | 90Window 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
ParameterTypeDescription
days7 | 30 | 90Window 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
ParameterTypeDescription
flow_idinteger 1–The automation flow id from a list or search result.
statusok | skipped | failed | waiting
limitinteger 1–25Items 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
ParameterTypeDescription
agent_id *integer 1–The AI Agent id from a list or search result.
limitinteger 1–25Items 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 as get_contact.
  • klikflow://conversation/{id}: One chat by id with its latest messages: the same record get_conversation returns. Customer text is marked untrusted. Same as get_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. Uses list_conversations, list_tickets.
  • follow-up-prospek: Find prospects that need a follow-up and draft suggested messages (nothing is sent). Uses get_pipeline, list_conversations, get_contact.
  • laporan-mingguan: A weekly report: chats, leads, sales and team performance compared with the week before. Uses get_report.
  • performa-landing: How the landing pages perform: visits, leads and conversion, with suggestions. Uses list_landing_pages, get_landing_analytics.
  • rencana-konten-minggu-ini: This week's content plan: scheduled posts, gaps and open content tasks. Uses get_content_calendar, list_content_tasks.

Connection scopes

ScopeNameRole permission
business:readView business profile. Business name, time zone, channel status, and team members for assignment.Every member
contacts:readView contacts. Search and open contacts. Numbers follow your role's masking.contact-data.lihat
contacts:writeEdit contacts. Add or edit contacts, labels, notes and reminders.contact-data.edit
conversations:readRead chats. Chat list and messages, within your chat and device scope.crm-chats.lihat-crm
conversations:manageManage chats. Assignment, status, labels, AI mode and internal notes.crm-chats.edit-informasi
messages:draftPrepare replies. AI suggestion drafts that staff send from the Inbox.crm-chats.balas-crm
messages:sendSend replies. Reply to existing chats. With the Draft policy, replies wait for staff approval.crm-chats.balas-crm
messages:newChat 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:readView pipeline. Pipeline stages, totals and cards.crm-chats.lihat-crm
pipeline:writeEdit pipeline. Move stages, mark won or lost.kanban.drag-drop-kanban
tickets:readView tickets. Tickets, status, priority and SLA.ticket.lihat
tickets:writeEdit tickets. Create and edit tickets.ticket.edit
comments:readView comments. The comment queue and post previews.repliz.lihat
comments:replyReply to comments. Reply to comments and send comment DMs.repliz.balas-komentar
broadcast:readView broadcasts. Broadcast list and reports.whatsapp-broadcast.lihat
broadcast:draftPrepare broadcasts. Broadcast drafts with a recipient preview, quota and cost.whatsapp-broadcast.tambah
broadcast:sendRequest broadcast sending. Request that a broadcast be sent, with a small daily limit.whatsapp-broadcast.tambah
outreach:readView follow-ups. Follow-up and upsell sequences with their reports.up-selling.lihat
outreach:enrollEnrol in follow-ups. Add a contact to an existing follow-up sequence, or stop it.crm-chats.balas-crm
landing:readView landing pages. Pages, statistics and form leads.landing-page.lihat
landing:writeEdit landing page drafts. Create drafts and change their text or images.landing-page.edit
landing:publishPublish landing pages. Publish or unpublish a landing page.landing-page.publikasi
biolink:readView Bio Link. Pages, blocks, statistics and leads.bio-link.lihat
biolink:writeEdit Bio Link drafts. Add, edit, reorder and hide blocks in the draft.bio-link.ubah
biolink:publishPublish Bio Link. Publish the Bio Link draft.bio-link.terbitkan
smartlink:readView Smart Link. Links, click and lead reports, and where links are used.smart-link.lihat
smartlink:writeEdit Smart Link. Create links and change the destination, CS numbers or message.smart-link.kelola
content:readView content. Calendar, posts, ideas and tasks.content-studio.lihat
content:writePrepare content. Post drafts, captions, ideas and tasks.content-studio.tambah
content:publishSchedule content. Schedule or publish posts.content-studio.publish
media:readView media. Files in the media library and storage use.media-manager.lihat-media
media:writeUpload media. Add images or videos to the media library, within the package's storage limit.media-manager.upload-media
store:readView store. Products, stock, orders and shipping status. No payment data.product.lihat
reports:readView reports. Report summary figures. Money figures need the View figures permission.laporan.lihat
ads:readView ad signals. Signal health and the ads-to-revenue report.business.lihat
prospects:readView Prospect Finder results. Saved prospect search results. Numbers follow your role's masking.scraping-google-maps.lihat
automation:readView automations. Automation flows and their run results.otomasi.lihat
ai_agent:readView 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_tasks marks it follows_post: true with the post's state in post_state (for example "Terjadwal 12 Nov 19.00" or "Gagal terbit: …"). update_content_task refuses to change its status (except to done once published) or its scheduled date with CONFLICT: change the post instead.
  • 2.3.6 (28 October 2026): update_post changes 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 needs content:publish and follows the send policy). A published post cannot change. The answer's notes name accounts with their own caption, formats changed for new media and accounts where the post is already out. get_post gives each target account's key and its own_caption when it has one.
  • 2.3.5 (27 October 2026): Free products: search_products marks them free: true and counts free claims apart (free_claims_30d); list_orders and get_order mark a claim free_claim: true with payment_method Gratis, so a claim (total 0, no payment, no fee) is never read as a sale. create_broadcast_draft takes the audience free_claimers (claimed a free product, never bought). customers and not_customers no longer count a free claim as a purchase.
  • 2.3.4 (26 October 2026): get_content_calendar gives 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, marked caption_truncated. get_post gives captions up to 5,000 characters. get_post lists 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 as upload_media; the answer has the media_id for create_content_draft and schedule_post.
  • 2.3.2 (26 October 2026): upload_media takes 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 says kind (image or video), mime and 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} and klikflow://conversation/{id}, for AI apps that read resources. Both are read through their tool, with the same permissions and limits. A /.well-known/security.txt file, 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_phone for 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.

Full changelog

Connect Klik Flow to your AI app.

Mulai dengan paket Free. Ajak tim setelah ruang kerja siap.