Developer Platform

Tools Reference

Complete reference for all Chipp MCP Server tools

|View as Markdown
1 min read
#mcp#api#tools#reference

This guide documents the tools available in the Chipp MCP Server, organized by category.

Quick Reference

Jump to a category or use this table to find tools quickly:

CategoryToolsDescription
Apps15Create, update settings (one app or many), publish, duplicate, rollback, and deploy applications
Config13System prompts, models, settings, branding, auth, tool overrides
Knowledge13Add URLs, documents, text, link sources, crawl monitoring
Enterprise KB Evidence5Scoped evidence retrieval: discover grants, search, cite, read
Analytics14Usage data, conversations, metrics, search, moderation
Tags10Intent tagging, classification, utterance generation
Tag Examples5Training utterances: list, create, update, bulk import
Evals8Quality testing and evaluation
Custom Actions6API integrations and testing
MCP Integrations6External MCP servers and hosted integrations
Components11Component Studio custom UI: create, refine, share, link
Deployments12Slack, WhatsApp, Discord, GitHub, Email, Voice
Consumers4End-user management and memory
Workspaces4Workspace management
Billing5Subscription, credits, usage, capabilities
Prompt Engineering5AI-assisted prompt improvement and suggestions
Action Collections10Reusable action bundles with sharing
Variables5Application config variables
Heartbeat4Proactive messaging configuration, history, manual trigger
Agent Links4Agent-to-agent delegation
Database Connections5External database connections
Monetization5Consumer credit packages
Conversation Logging1Log externally-handled conversations into chat history
Discovery2Find agents by capability, search the integration catalog
App Administration7Access whitelist, move app, custom domain status, Receipt Sync, workspace App Defaults
App Connections6Integration switches, Factory per-user integrations, Vanta write access, knowledge refresh schedule
Utilities2Identity introspection and platform docs search

Related APIs: the MCP server is one of three programmatic surfaces. The Builder API is a REST API using per-app chipp_ keys (sessions, consumers, conversation logging over HTTP), and the Org Export API uses org-wide chipp_org_ keys for bulk transcript export. MCP tokens (chipp_sk_ / OAuth) are organization-scoped and cover the full tool surface below.


Apps

Core CRUD operations for managing Chipp applications.

list_apps

List all applications accessible to the authenticated user.

Scope: apps:read

ParameterTypeRequiredDescription
workspace_idstringNoFilter to a specific workspace
limitnumberNoMax results (default 20, max 50)
offsetnumberNoPagination offset

Example:

plaintext
"List all my Chipp apps"
"Show apps in workspace 42"

get_app

Get detailed information about a specific application.

Scope: apps:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID

Example:

plaintext
"Get details for app 123"
"Show me the configuration of my FAQ bot"

create_app

Create a new application in a workspace.

Scope: apps:write

ParameterTypeRequiredDescription
namestringYesApp name (1-100 chars)
workspace_idstringYesWorkspace to create in
display_namestringNoClient-facing display name (max 100 chars). Omit to use the internal name
descriptionstringNoApp description (max 2000 chars)
system_promptstringNoInitial system prompt. Server accepts up to 2M chars; the builder UI cap is derived per-model from the context window (~50% of the window at 4 chars/token).
model_idstringNoModel ID (default: the platform new-agent default, currently claude-sonnet-5-5). An openrouter:<slug> model cannot be set on create; use update_model afterward

Example:

plaintext
"Create a customer support bot called HelpDesk in workspace 5"
"Make a new app named FAQ Bot with a helpful assistant prompt"

update_app

Update an app’s settings. settings takes the same fields the Chipp Alchemist uses: name, display_name, description, instructions (the system prompt), model, temperature, capabilities, brand styles and colors, voice, auth mode, email gating, language, custom CSS, starter messages, uploads, spending limit and more. The fields you send are merged into the current config; the rest are kept.

Scope: apps:write. Each field needs the matching workspace permission, as in the dashboard (for example, a theme needs Branding and a name needs App Settings); the spending limit needs App Settings and a plan with spending limits.

ParameterTypeRequiredDescription
app_idstringYesApplication ID
settingsobjectNoFields to update (see the schema the server lists for the full set)
reasoningstringNoBrief explanation, kept in the server log

instructions, welcomeMessage, greetingPrompt and customCss replace the whole value: read the current value first (get_system_prompt, get_settings) and keep what should stay.

ragConfig tunes knowledge retrieval: maxResults (1-25, default 5), minScore (0-1, default 0.15), vectorWeight (0-1, default 0.7), textWeight (0-1, default 0.3), useDocumentBoosting (default true) and documentWeight (0-1, default 0.3). Only the keys you send change. An unknown key or an out-of-range value is refused. It takes effect after the app is re-published. See RAG Settings.

The earlier flat parameters name, display_name, description and is_public still work.

Returns success, the updated field list and a message; after an instructions change, instructionsLength and instructionsPreview show what was stored. A refused payload returns success: false and an error naming the fix (for example, a [component:Name] placeholder, or custom CSS that tries to hide the microphone button, which has its own toggle).

Example:

plaintext
"Rename app 123 to 'Support Bot v2'"
"Turn on web search and switch my FAQ app to the classic-chipp theme"

bulk_update_app_settings

Apply the same settings to many apps in one call (up to 200), for example a theme on every app in a workspace. Each app is written on its own: an app you cannot reach, or that fails, is listed in failed and never blocks the others.

Scope: apps:write, with the same per-field workspace permissions as update_app on every app.

ParameterTypeRequiredDescription
app_idsstring[]YesApps to update (1 to 200)
settingsobjectYesFields to update, the same shape as update_app
reasoningstringNoBrief summary of the change

Returns success (true only when every app was updated), total, succeeded, failed ({ appId, error } for each app not updated; an app you cannot reach reads “not found or no access”), updatedFields and a message. Retry with only the failed ids.

Example:

plaintext
"Set the classic-chipp theme on every app in my Support workspace"

delete_app

Soft-delete an application.

Scope: apps:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID

Example:

plaintext
"Delete app 123"
"Remove the test app I created"

chat_with_app

Send a message to an application and get a response. Useful for testing.

Scope: apps:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID
messagestringYesMessage to send
session_idstringNoContinue existing session
💡

Use this tool to test your apps after making changes. It’s faster than switching to the web UI.

Example:

plaintext
"Test my FAQ bot with the question 'What are your hours?'"
"Send 'hello' to app 123 to check if it's working"

Response shape:

json
{
  "response": "The assistant's reply text (may be empty if only a UI component rendered).",
  "session_id": "uuid",
  "model": "claude-sonnet-4-6",
  "component_invocations": [
    {
      "component_id": "uuid",
      "component_name": "PricingTable",
      "props": { "tier": "STUDIO_PRO" },
      "tool_call_id": "call_abc"
    }
  ],
  "usage": { "input_tokens": 1234, "output_tokens": 567 }
}

component_invocations lists every custom UI component the app rendered during the turn (render_<snake_name> tool calls). The array is always present, empty when no components rendered. Use this when your app uses Component Studio and you need to see what rendered (the response text is often empty for component-rendering turns).


search_apps

Search apps by name or description across the workspaces you can reach. An API key searches its own organization unless all_orgs is true.

Scope: apps:read

ParameterTypeRequiredDescription
querystringYesText matched case-insensitively against app names and descriptions (1 to 100 characters)
limitnumberNoMax results (default 10, max 25)
all_orgsbooleanNoAPI keys: also search your other organizations

Returns apps (each with its slug, workspace and organization), count, the query, your current_workspace_id and current_organization_id, and a hint. A UUID never matches app text, so a UUID query is refused with a pointer to get_app.


publish_app

Publish the current app configuration to make it live for consumers. Creates a version snapshot and deploys it.

Scope: apps:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
tagstringNoVersion tag/label (e.g. v2.0, bugfix)

Returns: version_id, already_published flag, and the tag used.


list_app_versions

List published version history for an app.

Scope: apps:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID
limitnumberNoMax results (default 20, max 100)

duplicate_app

Create a copy of an existing app with all its configuration, system prompt, and settings.

Scope: apps:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID to duplicate
namestringNoName for the copy (default: Original Name (Copy))
workspace_idstringNoTarget workspace (defaults to same workspace)
include_tagsbooleanNoCopy tags and their example utterances (notifications reset). Default true
include_evalsbooleanNoCopy evals, test cases and publish config (no run history). Default true

restore_app_version

Restore an app’s configuration to a previous version. Does not publish: use publish_app afterward if needed.

Scope: apps:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
version_idstringYesVersion ID to restore (from list_app_versions)

rollback_app_version

Rollback an app to a previously published version and immediately publish it. Combines restore + publish in one step.

Scope: apps:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
version_idstringYesVersion ID to rollback to (must be a previously launched version)

get_app_url

Get the consumer-facing URL for an app (custom domain, vanity subdomain, or default path). Also returns the embed widget snippet.

Scope: apps:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID

Returns: consumer_url, default_url, has_custom_domain, and embed_snippet.


update_app_slug

Change an app’s URL slug (the short identifier in the consumer chat URL, e.g. my-sales-bot).

Scope: apps:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
slugstringYesNew URL slug. Lowercase alphanumeric and hyphens only, 3-60 characters

Configuration

Manage application settings, system prompts, and branding.

get_system_prompt

Get the system prompt for an application.

Scope: apps:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID

update_system_prompt

Update an application’s system prompt.

Scope: apps:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
system_promptstringYesNew system prompt text
⚠️

Changes take effect immediately for new conversations. Use chat_with_app to test before deploying to users.


get_model

Get the AI model configuration for an application.

Scope: apps:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID

update_model

Change the AI model and/or temperature for an application.

Scope: apps:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
modelstringNoModel ID (e.g. claude-sonnet-4-6, gpt-4.1, gemini-2.5-pro), or openrouter:<slug> for an OpenRouter model
temperaturenumberNoTemperature between 0 and 2

get_settings

Get detailed settings including RAG configuration.

Scope: apps:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID

update_settings

Update application settings, capabilities, welcome messages, and suggested starters.

Scope: apps:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
settingsobjectNoSettings JSONB (auth, chat options, etc.)
capabilitiesobjectNoCapabilities JSONB (features to enable/disable)
welcome_messagesstring[]NoWelcome message rotation
suggested_messagesstring[]NoConversation starter suggestions shown to users

Top-level settings keys are shallow-merged. settings.ragConfig is the exception: it is validated and merged key by key, so sending {"ragConfig": {"minScore": 0.25}} keeps every other retrieval setting. It takes maxResults (1-25), minScore, vectorWeight, textWeight and documentWeight (each 0-1), useDocumentBoosting, plus the full-document keys fullDocumentMode, fullDocumentMaxPages (1-600) and fullDocumentCacheTtl ("5m" or "1h"). An unknown key or an out-of-range value fails the call and nothing is written. "ragConfig": null clears every retrieval setting back to the defaults. Changes take effect after re-publish. See RAG Settings.


update_branding

Update visual branding for the application.

Scope: apps:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
primary_colorstringNoHex color code (e.g. #3B82F6)
logo_urlstringNoURL to logo image (light mode)
logo_url_darkstringNoURL to logo image (dark mode)
input_text_hintstringNoPlaceholder text for the chat input
disclaimer_textstringNoDisclaimer shown below the chat (max 1000 chars)
themestringNoChat theme preset: default, imessage, or classic-chipp
dark_modestringNooff, on, or auto
bot_message_colorstringNoAssistant message bubble background hex
user_message_colorstringNoUser message bubble background hex
bot_message_font_colorstringNoAssistant message text hex (legacy; may not render in all themes)
user_message_font_colorstringNoUser message text hex (legacy; may not render in all themes)
chat_input_border_colorstringNoChat input border hex (legacy; may not render in all themes)
force_dark_modebooleanNoLegacy dark mode flag (prefer dark_mode)
show_tool_statusbooleanNoShow tool status to consumers (legacy)
custom_cssstringNoCustom CSS for the consumer chat UI. Empty string clears it. Live on save
auth_custom_cssstringNoCustom CSS for the consumer login and signup screens only. Empty string clears it. Live on save
email_display_namestringNoSender and subject name for consumer system emails (OTP, welcome, invites). Empty string clears it

list_suggestions

Get the suggested conversation starters shown to users on the chat interface.

Scope: apps:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID

update_suggestions

Set the suggested conversation starters shown to users. Pass an empty array to clear all suggestions.

Scope: apps:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
suggestionsstring[]YesArray of suggestion strings (max 6 recommended)

Example:

plaintext
"Set the starter prompts for my support bot to: 'Track my order', 'Return an item', 'Speak to a human'"

update_auth

Update an app’s consumer authentication settings. All fields are optional and live-on-save (no re-publish needed).

Scope: apps:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
auth_modestringNoConsumer access mode: open, encouraged, required, or restricted
require_authbooleanNoWhether authentication is required before consumers can chat. auth_mode='required' implies this
signups_restricted_to_domainstringNoOnly email addresses from this domain (e.g. acme.com) may sign up. Pass an empty string to clear

set_tool_override

Toggle enable/disable or update the LLM-facing description for a single tool override on an app.

Scope: apps:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
tool_keystringYesThe tool key: a built-in (camelCase, e.g. browseWeb), a hosted-integration tool, a custom component tool (render_*), a custom action, or an MCP integration tool. Call list_tool_keys for this app’s exact valid keys
enabledbooleanNoWhether the tool is enabled. Omit to preserve the existing state
descriptionstring | nullNoCustom description shown to the LLM. Pass null to revert to the platform default

list_tool_keys

List every valid tool_key for an app: built-in tools, hosted-integration tools, custom component tools (render_*), custom action tools, and MCP integration tools.

Scope: apps:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID

get_default_capabilities

Get the canonical platform-default state for capabilities, settings, and tool overrides. Takes no parameters.

Scope: apps:read


Knowledge Sources

Manage RAG (Retrieval-Augmented Generation) knowledge bases.

list_knowledge_sources

List all knowledge sources for an application.

Scope: knowledge:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID
statusstringNoFilter by status: pending, processing, completed, failed
typestringNoFilter by type: url, file, text, youtube, youtube_channel, sitemap, confluence
limitnumberNoMax results (default 50)
offsetnumberNoPagination offset

get_knowledge_source

Get details about a specific knowledge source.

Scope: knowledge:read

ParameterTypeRequiredDescription
source_idstringYesKnowledge source ID

add_url_source

Add a URL as a knowledge source. Automatically detects YouTube, Instagram, TikTok, and regular web pages.

Scope: knowledge:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
urlstringYesURL to crawl
max_depthnumberNoHow many levels deep to crawl links (default 1)
crawl_linksbooleanNoWhether to follow links on the page
max_pagesnumberNoMaximum number of pages to crawl
namestringNoCustom name for the source
ℹ️

Smart Detection: YouTube URLs extract transcripts, social media extracts content, regular URLs are crawled.

Example:

plaintext
"Add https://docs.example.com to my FAQ app and crawl 3 levels deep"
"Add this YouTube video to my training bot's knowledge base"

add_text_source

Add raw text content as a knowledge source.

Scope: knowledge:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
contentstringYesText content to add
namestringYesName for the source

Example:

plaintext
"Add this FAQ text to my support bot's knowledge base"

delete_knowledge_source

Remove a knowledge source from an application.

Scope: knowledge:write

ParameterTypeRequiredDescription
source_idstringYesKnowledge source ID

refresh_knowledge_source

Re-crawl or re-process a knowledge source to update its content.

Scope: knowledge:write

ParameterTypeRequiredDescription
source_idstringYesKnowledge source ID

list_active_crawls

List knowledge sources currently being processed or queued for an app.

Scope: knowledge:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID

Returns: Active processing jobs with job type, status, attempt counts, and the source name/URL being processed.


cancel_crawl

Cancel all pending and in-progress processing jobs for a knowledge source.

Scope: knowledge:write

ParameterTypeRequiredDescription
source_idstringYesKnowledge source ID to cancel

The source status is set to failed. Jobs that are already running on a worker may complete, but no new queued jobs will start.


add_document_source

Upload one or more document files as knowledge sources. Files are provided as base64-encoded content.

Scope: knowledge:write

Supported formats: PDF, DOCX, TXT, MD, CSV, JSON, XLSX, XLS, and audio files (MP3, WAV, M4A, etc.).

ParameterTypeRequiredDescription
app_idstringYesApplication ID
filesobject[]YesArray of files (1–20)

Each file object requires fileName (with extension) and content (base64-encoded).


get_crawl_progress

Get the processing progress for a knowledge source: current status, chunk count, pages completed, and any error messages.

Scope: knowledge:read

ParameterTypeRequiredDescription
source_idstringYesKnowledge source ID

Link a knowledge source from one app to another, sharing its RAG data without duplicating it.

Scope: knowledge:write

ParameterTypeRequiredDescription
source_idstringYesKnowledge source ID to link
target_app_idstringYesApplication ID to link the source to

Remove a linked knowledge source from an app. Does not delete the original source.

Scope: knowledge:write

ParameterTypeRequiredDescription
source_idstringYesKnowledge source ID
app_idstringYesApplication ID to unlink from

list_linked_knowledge_sources

List knowledge sources linked to an app from other apps (shared sources).

Scope: knowledge:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID

Enterprise KB Evidence

Read-only evidence retrieval over the org/workspace-scoped enterprise knowledge base. Authorization is resolved live on every call, so a revoked grant or a narrowed sharing scope takes effect immediately. Denials are uniform: a source that does not exist and one you are not authorized for return the same response, so nothing leaks about the wider corpus.

These are distinct from the Knowledge Sources tools above, which manage an app’s OWN sources. Here app_id names the app acting as the retrieval caller, and you must already have access to it.

discover_kb_capabilities

List which org/workspace-scoped KB sources this app is currently granted access to. Always live, never a cached snapshot.

Scope: knowledge:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID acting as the retrieval caller

search_kb_evidence

Run a bounded, paginated hybrid search (vector similarity + BM25 + document boosting) across the granted KB sources. Every hit carries a citation (source id + chunk anchor) that get_kb_cited_chunk resolves to exact content.

Scope: knowledge:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID acting as the retrieval caller
querystringYesThe search query text
pagenumberNoPage number, 1-based (default 1)
page_sizenumberNoResults per page (default 10, max 25)

get_kb_source_metadata

Get sanitized metadata (display name, sanitized url, type, sharing scope) for one granted source. Storage credentials and signed URLs are never returned.

Scope: knowledge:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID acting as the retrieval caller
source_idstringYesKnowledge source ID

get_kb_cited_chunk

Resolve one search citation to its exact chunk content. Authorization is re-checked at read time, so a chunk cited by an earlier search is denied if the grant has since been revoked.

Scope: knowledge:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID acting as the retrieval caller
chunk_idstringYesNumeric chunk anchor from a search hit’s citation (not a UUID)

read_kb_full_document

Read the full content of one granted source. Gated by the same policy as search and metadata; there is no separate, weaker full-document grant.

Scope: knowledge:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID acting as the retrieval caller
source_idstringYesKnowledge source ID

Analytics

Access usage data, conversations, and metrics.

Access usage data, conversations, and metrics.

get_app_analytics

Get summary analytics for an application: total sessions, messages, unique users, and date range stats.

Scope: analytics:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID
sincestringNoISO date to filter from (defaults to last 30 days)

Returns: Total sessions, messages, unique users, first and last session timestamps.


search_conversations

Search conversations with filters.

Scope: analytics:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID
querystringNoText to search for in messages
sincestringNoISO date to filter from
limitnumberNoMax results (default 20)
offsetnumberNoPagination offset (default 0)

Example:

plaintext
"Find conversations about refunds in my support bot"
"Show recent conversations from the last week"

get_conversation

Get a specific conversation with all messages.

Scope: analytics:read

ParameterTypeRequiredDescription
session_idstringYesSession ID

get_top_queries

Get the most common user queries.

Scope: analytics:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID
limitnumberNoNumber of queries (default 20)
sincestringNoISO date to filter from (defaults to last 30 days)

get_model_usage

Get LLM model usage breakdown (token counts by model) for an app.

Scope: analytics:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID
sincestringNoISO date to filter from (defaults to last 30 days)

get_response_time_analytics

Get response time statistics based on message timestamps.

Scope: analytics:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID
sincestringNoISO date to filter from (defaults to last 7 days)

Returns: Total responses, avg response ms, p50, p95.


get_user_engagement

Get user engagement metrics: sessions per user, messages per session, return rate.

Scope: analytics:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID
sincestringNoISO date to filter from (defaults to last 30 days)

search_messages

Search for specific text within messages across all conversations in an app.

Scope: analytics:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID
querystringYesText to search for
rolestringNoFilter by role: user, assistant, or system
sincestringNoISO date to filter from
limitnumberNoMax results (default 50, max 200)
offsetnumberNoPagination offset (default 0)

Returns matching messages with a 500-character content preview and session context.


search_documentation

Full-text search within an app’s knowledge base (RAG chunks).

Scope: knowledge:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID
querystringYesText to search for in knowledge content
limitnumberNoMax results (default 20)

Useful for checking what content is indexed before a chat, or debugging RAG retrieval issues.


get_tag_analytics

Get tag usage statistics for an app over a time period.

Scope: analytics:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID
sincestringNoISO date to filter from (defaults to last 30 days)

Returns: Per-tag counts for total fires, active fires, removed fires, text-replaced count, avg similarity, and last fired timestamp.


get_file_analytics

Get file upload statistics for an app: upload counts and total storage by MIME type.

Scope: analytics:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID
sincestringNoISO date to filter from (defaults to last 30 days)

Returns: Breakdown for both chat session uploads and consumer brain files.


get_moderation_stats

Get moderation statistics: how many conversations were frozen, had responses replaced, or triggered notifications.

Scope: analytics:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID
sincestringNoISO date to filter from (defaults to last 30 days)

Returns: Tag fire counts broken down by action type (freeze, static text, notification, webhook, manually removed) and affected session count.


Get the most-used apps in your organization, ranked by session count and unique users.

Scope: analytics:read

ParameterTypeRequiredDescription
sincestringNoISO date to filter from (defaults to last 30 days)
limitnumberNoMax results (default 10)

export_conversations

Export conversations as JSON for an app within a date range.

Scope: analytics:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID
sincestringYesISO date to export from (e.g. 2026-01-01)
untilstringNoISO date to export until (defaults to now)
limitnumberNoMax sessions to export (default 100, max 500)

Tags

Manage intent tags for message classification and automated responses.

list_tags

List all tags for an application.

Scope: apps:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID

get_tag

Get details for a specific tag including utterances.

Scope: apps:read

ParameterTypeRequiredDescription
tag_idstringYesTag ID

create_tag

Create a new intent tag.

Scope: apps:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
namestringYesTag name
colorstringYesTag color hex (e.g. #ef4444)
descriptionstringNoWhen this tag should trigger. Jev classifies from the name and this text, so be specific
static_textstringNoFixed text to respond with when the tag triggers
similarity_thresholdnumberNoCosine similarity threshold 0-1 (default 0.8). Legacy embedding tags and the embedding fallback only
jev_thresholdnumberNoJev match probability threshold 0-1 (default 0.5)
freeze_conversationbooleanNoFreeze the conversation when the tag triggers (default false)
notification_enabledbooleanNoSend notifications (default false)
notification_emailstringNoEmail to notify
webhook_urlstringNoWebhook URL to call when the tag triggers
positive_examplesstring[]NoExample phrases that should trigger this tag
negative_examplesstring[]NoCounter-examples that must not trigger this tag

Actions when the tag matches:

  • static_text: Replace AI response with fixed text
  • freeze_conversation: Stop conversation flow
  • notification_enabled with notification_email or webhook_url: Send an email or webhook alert

Example:

plaintext
"Create a tag called 'pricing' for my sales bot with examples like 'how much does it cost'"

update_tag

Update an existing tag.

Scope: apps:write

ParameterTypeRequiredDescription
tag_idstringYesTag ID
namestringNoNew name
colorstringNoNew color
descriptionstringNoNew description
static_textstringNoNew static text
similarity_thresholdnumberNoNew similarity threshold (embedding tags)
jev_thresholdnumber or nullNoNew Jev threshold 0-1; null resets to the default 0.5
enabledbooleanNoEnable or disable the tag
freeze_conversationbooleanNoFreeze on trigger
notification_enabledbooleanNoEnable notifications
notification_emailstringNoNotification email
webhook_urlstringNoWebhook URL
positive_examplesstring[]NoExamples to append (deduped). Use set_tag_examples to replace the set
negative_examplesstring[]NoCounter-examples to append (deduped)

delete_tag

Delete a tag.

Scope: apps:write

ParameterTypeRequiredDescription
tag_idstringYesTag ID

list_tag_instances

List messages that matched a specific tag.

Scope: analytics:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID
tag_idstringNoFilter by specific tag (optional)
limitnumberNoMax results (default 50)

remove_tag_instance

Soft-delete a specific tag detection instance from a message. The instance is marked as removed rather than permanently deleted.

Scope: apps:write

ParameterTypeRequiredDescription
tag_instance_idstringYesTag instance ID to remove

generate_utterances

Generate training utterances for a tag using AI. Utterances are example phrases that should trigger the tag, and more utterances means better detection accuracy.

Scope: apps:write

ParameterTypeRequiredDescription
tag_namestringYesThe tag name (e.g. wants to cancel, billing question)
tag_descriptionstringYesDescription of what this tag detects
countnumberNoNumber of utterances to generate (default 20, max 100)

Example:

plaintext
"Generate 30 training utterances for a tag called 'pricing question' that detects when users ask about cost"

set_tag_examples

Replace a tag’s positive and/or negative example utterances without touching its other config.

Scope: apps:write

ParameterTypeRequiredDescription
tag_idstringYesThe tag ID
positive_examplesstring[]NoFull replacement set of positive examples. Omit to leave unchanged; pass [] to clear
negative_examplesstring[]NoFull replacement set of negative examples. Omit to leave unchanged; pass [] to clear

add_tag_examples

Append positive and/or negative example utterances to an existing tag without touching its other config.

Scope: apps:write

ParameterTypeRequiredDescription
tag_idstringYesThe tag ID
positive_examplesstring[]NoPositive examples to append
negative_examplesstring[]NoNegative examples to append

Tag Examples

Fine-grained management of individual training utterances (examples) attached to a tag. For whole-set replace/append operations, see set_tag_examples and add_tag_examples.

list_tag_examples

List positive and negative examples (training utterances) for a tag.

Scope: apps:read

ParameterTypeRequiredDescription
tag_idstringYesThe tag ID
typestringNoFilter to a single polarity: positive or negative. Returns both when omitted

create_tag_examples

Create (attach) one or more examples for a tag, all sharing the same polarity. Duplicate text for the tag is skipped and counted, not errored.

Scope: apps:write

ParameterTypeRequiredDescription
tag_idstringYesThe tag ID to attach examples to
examplesstring[]YesExample phrases to add (1-50)
typestringNoPolarity for all examples in this call: positive or negative (default positive)

update_tag_example

Update an existing tag example’s text and/or polarity.

Scope: apps:write

ParameterTypeRequiredDescription
tag_idstringYesThe tag ID
example_idstringYesThe example (utterance) ID to update
utterancestringNoNew example text
typestringNoNew polarity: positive or negative

delete_tag_example

Delete (detach) a tag example.

Scope: apps:write

ParameterTypeRequiredDescription
tag_idstringYesThe tag ID
example_idstringYesThe example ID to delete

import_tag_examples

Bulk-import tag examples from CSV or JSONL. CSV needs a header row with a required utterance column plus optional type (positive|negative, default positive) and source columns. JSONL is one JSON object per line: {utterance, type?, source?}. Duplicate text (either polarity) is skipped and counted, not errored.

Scope: apps:write

ParameterTypeRequiredDescription
tag_idstringYesThe tag ID to import examples into
formatstringYescsv or jsonl
contentstringYesThe raw CSV or JSONL text to import (up to 500 example rows)

Evaluations

Create and run quality tests for your applications.

list_evals

List all evaluations for an application.

Scope: apps:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID

get_eval

Get details for a specific evaluation.

Scope: apps:read

ParameterTypeRequiredDescription
eval_idstringYesEvaluation ID

create_eval

Create a new evaluation with test cases for an app.

Scope: apps:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
namestringYesEvaluation name
test_casesobject[]YesArray of test cases
evaluation_methodstringNofactuality, faithfulness, answer_relevancy, context_relevancy, or comprehensive (default: factuality)
publish_gatebooleanNoBlock publishing when this suite has never run or scored below publish_pass_threshold
publish_pass_thresholdintegerNoScore percentage (0-100) needed to pass the publish gate (default: 100)
run_on_publishbooleanNoRun this suite as a background job after every successful publish
webhook_urlstringNoHTTPS URL that receives a signed POST when a run completes or fails. null clears it
webhook_signing_secretstringNoSecret for the HMAC-SHA256 X-Chipp-Signature header. null clears it

Test case format:

json
{
  "input": "What are your hours?",
  "expected_output": "We're open 9-5 Monday through Friday"
}

update_eval

Update an existing evaluation’s name, test cases, or method.

Scope: apps:write

ParameterTypeRequiredDescription
eval_idstringYesEvaluation ID
namestringNoNew name
test_casesobject[]NoUpdated test cases
evaluation_methodstringNoNew evaluation method
publish_gatebooleanNoBlock publishing when this suite has never run or scored below publish_pass_threshold
publish_pass_thresholdintegerNoScore percentage (0-100) needed to pass the publish gate (default: 100)
run_on_publishbooleanNoRun this suite as a background job after every successful publish
webhook_urlstringNoHTTPS URL that receives a signed POST when a run completes or fails. null clears it
webhook_signing_secretstringNoSecret for the HMAC-SHA256 X-Chipp-Signature header. null clears it

delete_eval

Delete an evaluation.

Scope: apps:write

ParameterTypeRequiredDescription
eval_idstringYesEvaluation ID

run_eval

Run an evaluation against the app to score its responses on the test cases.

Scope: apps:write

ParameterTypeRequiredDescription
eval_idstringYesEvaluation ID
tagstringNoRun only test cases with this tag: smoke, regression, or integration

list_eval_results

List past evaluation runs.

Scope: apps:read

ParameterTypeRequiredDescription
eval_idstringYesEvaluation ID
limitnumberNoMax results

get_eval_result

Get detailed results from a specific evaluation run.

Scope: apps:read

ParameterTypeRequiredDescription
result_idstringYesResult ID

Custom Actions

Manage API integrations for your applications.

list_custom_actions

List all custom actions for an application.

Scope: actions:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID

get_custom_action

Get the full current row of a custom action: url, method, headers, query_params, body_params, path_params, variables and auth, plus a hint.

Scope: actions:read

ParameterTypeRequiredDescription
action_idstringYesAction ID

The arrays use the names update_custom_action takes, so you can pass them back unchanged.


create_custom_action

Create a new API integration.

Scope: actions:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
namestringYesAction name
descriptionstringYesWhat the action does
methodstringYesGET, POST, PUT, DELETE, or PATCH
urlstringYesAPI endpoint URL. Use {name} placeholders for path parameters
headersarrayNoRequest headers as {key, value} objects
path_paramsarrayNoPath parameters as {name, description, required} objects. Each name matches a {name} placeholder in the URL
query_paramsarrayNoQuery parameters as {name, description, required} objects
body_paramsarrayNoBody parameters as {name, type, description, required} objects
authobjectNoAuthentication. type is one of none, bearer, basic, api_key_header, oauth2_client_credentials, or mtls
ℹ️

Custom actions have complex schemas. See the Custom Actions Guide for detailed examples.


update_custom_action

Update an existing custom action.

Scope: actions:write, plus write access to Custom Actions in the app’s workspace.

ParameterTypeRequiredDescription
action_idstringYesAction ID
namestringNoName
descriptionstringNoDescription
urlstringNoAbsolute https:// endpoint URL
methodstringNoGET, POST, PUT, PATCH or DELETE
headersarrayNoHeaders. Replaces the whole list
query_paramsarrayNoQuery parameters. Replaces the whole list
body_paramsarrayNoBody parameters. Replaces the whole list
path_paramsarrayNoPath parameters. Replaces the whole list
authobject or nullNoAuthentication, as in create_custom_action. null clears it
reasoningstringNoBrief explanation

headers and the three params arrays replace the stored lists: call get_custom_action first and send back every entry you want to keep. A URL that belongs to a first-party hosted integration is refused with a hint to connect that integration instead. Returns the updated action with success, the updated field list and a message.


delete_custom_action

Delete a custom action.

Scope: actions:write

ParameterTypeRequiredDescription
action_idstringYesAction ID

test_custom_action

Test a custom action by executing it with sample parameters.

Scope: actions:write

ParameterTypeRequiredDescription
action_idstringYesAction ID
parametersobjectNoTest parameters to pass
external_idstringNoValue to simulate {{system.external_id}} for this test call. Omit to test as an anonymous session

MCP Integrations

Connect external MCP servers to your applications.

list_mcp_integrations

List all connected MCP servers for an application.

Scope: actions:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID

get_mcp_integration

Get details about a connected MCP server.

Scope: actions:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID
integration_idstringYesIntegration ID

connect_mcp_server

Connect an external MCP server to an application.

Scope: actions:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
server_urlstringYesMCP server URL (must be HTTPS)
namestringNoDisplay name (defaults to server URL)
auth_typestringNoAuthentication type: NONE, BEARER, or OAUTH (default: NONE)
auth_tokenstringNoBearer token (when auth_type is BEARER)

update_mcp_integration_tools

Enable or disable the entire MCP integration, or toggle specific tools by name.

Scope: actions:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
integration_idstringYesIntegration ID
is_activebooleanNoEnable or disable the entire integration
enabled_toolsstring[]NoTool names to enable (unlisted tools are disabled)

disconnect_mcp_server

Remove an MCP server connection.

Scope: actions:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
integration_idstringYesIntegration ID

list_hosted_integrations

List hosted integration providers connected to an app (Google Drive, Gmail, Outlook, OneDrive, Slack, and others).

Scope: apps:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID

Returns: For each integration: provider, label, is_active, account_email, and requires_consumer_auth.


Components

Manage Component Studio custom UI components: HTML fragments (with embedded <style>/<script>) rendered in a sandboxed iframe inside the consumer chat via render_<name> tools.

list_components

List custom UI components for an app. Returns owned components first, then components linked via sharing. Each component includes its full source code and the render_tool_name the chat LLM calls to render it.

Scope: components:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID

get_component

Get a single component by ID, including its full source code and render_tool_name. Always call this before update_component: never refine a component from page context alone.

Scope: components:read

ParameterTypeRequiredDescription
component_idstringYesComponent ID

create_component

Create a custom UI component owned by an app. The code is an HTML fragment with embedded <style> and <script> that runs in a sandboxed iframe. Dangerous patterns (fetch, eval, external scripts, localStorage) are rejected.

Scope: components:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
namestringYesPascalCase component name (e.g. ProductCard), exposed as the tool render_<snake_case>
codestringYesHTML fragment with embedded style/script (max 100,000 chars)
props_schemaobject[]NoProps the component reads from window.chipp.props, as {name, type, description, required} objects

update_component

Update an existing component. Call get_component first to read the full current code. name, code, and props_schema are all optional; only supplied fields change.

Scope: components:write

ParameterTypeRequiredDescription
component_idstringYesComponent ID
namestringNoNew name
codestringNoNew HTML fragment (max 100,000 chars)
props_schemaobject[]NoNew props schema

delete_component

Delete a component. Idempotent: deleting an already-deleted component returns already_deleted: true. Also removes all links referencing the component.

Scope: components:write

ParameterTypeRequiredDescription
component_idstringYesComponent ID

copy_component

Copy a component into another app as an independent copy (edits never propagate back to the source). The new copy starts with sharing_scope=PRIVATE.

Scope: components:write

ParameterTypeRequiredDescription
source_component_idstringYesComponent to copy
target_app_idstringYesApp to copy into
namestringNoName for the copy (defaults to the source name)

Link a shared component to another application. The source must have sharing_scope=WORKSPACE or ORGANIZATION, and the target app must be in the same scope.

Scope: components:write

ParameterTypeRequiredDescription
component_idstringYesComponent ID
target_app_idstringYesApp to link it to

Unlink a shared component from an application. Idempotent: unlinking a non-existent link returns already_unlinked: true.

Scope: components:write

ParameterTypeRequiredDescription
component_idstringYesComponent ID
target_app_idstringYesApp to unlink it from

update_component_sharing

Update a component’s sharing scope. PRIVATE is always allowed; WORKSPACE requires the shared-components capability (BUILDER+); ORGANIZATION requires the org-components capability (STUDIO+). Narrowing the scope cleans up now-out-of-scope links.

Scope: components:write

ParameterTypeRequiredDescription
component_idstringYesComponent ID
sharing_scopestringYesPRIVATE, WORKSPACE, or ORGANIZATION

list_available_shared_components

List shared components available for linking to an app: WORKSPACE-scoped components from the same workspace, plus ORGANIZATION-scoped components when the org-components capability is active.

Scope: components:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID
include_orgbooleanNoInclude ORGANIZATION-scoped components

list_linked_components

List components currently linked to an app (owned by another app, shared into this one). For owned + linked together, use list_components.

Scope: components:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID

Deployments

Manage multi-channel deployments (Slack, WhatsApp, Email, Voice).

list_slack_deployments

List Slack integrations across all apps in your organization. Takes no parameters.

Scope: apps:read


get_slack_deployment

Get the Slack integration config for an app.

Scope: apps:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID

list_slack_installations

List available Slack workspaces that have been connected to any app in your organization. Takes no parameters.

Scope: apps:read


connect_slack_deployment

Connect an app to a Slack workspace.

Scope: apps:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
installation_idnumberNoSlack installation ID (from list_slack_installations). Use this OR team_id
team_idstringNoSlack workspace team ID (e.g. T08QUQEH7BJ). Use this OR installation_id
channel_idstringNoSlack channel ID for heartbeat broadcasts. When provided, heartbeat posts proactively to this channel
channel_namestringNoSlack channel name (e.g. #all-chipp). Required if channel_id is provided

disconnect_slack_deployment

Remove the Slack connection from an app.

Scope: apps:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID

get_whatsapp_deployment

Get WhatsApp business configuration.

Scope: apps:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID

get_voice_config

Get voice agent configuration.

Scope: apps:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID

update_voice_config

Update voice agent settings.

Scope: apps:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
voice_enabledbooleanNoEnable or disable the voice agent
voice_greetingstringNoGreeting text when a voice session starts
voice_stack_tierstringNoVoice pipeline tier

get_email_deployment

Get email channel configuration.

Scope: apps:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID

update_email_deployment

Update email channel settings.

Scope: apps:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
is_activebooleanNoEnable or disable the email channel
from_namestringNoSender display name
outbound_policystringNoOutbound send policy: allow_replies, read_only, or moderated
moderation_mailbox_addressstringNoReal, deliverable mailbox that receives a moderated policy’s redirected sends. Empty string clears it
outbound_policy_exceptionsobject[]NoOrdered exception rules. Each item: match_key (envelope_recipient, inbound_alias, or subject_token), match_value, policy, optional moderation_mailbox_address

get_discord_deployment

Get the Discord bot integration status for an app.

Scope: apps:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID

Returns: connected, discord_app_id, is_active, and connection timestamp.


get_github_deployment

Get the GitHub App integration status for an app (auto-respond to issues and PRs).

Scope: apps:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID

Returns: connected, account_login, auto_respond_issues, and installation details.


Consumers

Manage end-users (consumers) of your applications.

list_consumers

List consumers of an app with search and filtering.

Scope: analytics:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID
searchstringNoSearch by name, email, or identifier
has_emailbooleanNoFilter to consumers with/without email
sort_bystringNocreated_at, credits, name, or email (default: created_at)
sort_dirstringNoasc or desc (default: desc)
limitnumberNoMax results (default 25, max 100)
offsetnumberNoPagination offset (default 0)

get_consumer

Get details about a specific consumer including their session count.

Scope: analytics:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID
consumer_idstringYesConsumer ID

update_consumer

Update a consumer’s credit balance or subscription status.

Scope: apps:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
consumer_idstringYesConsumer ID
creditsnumberNoSet credit balance (integer >= 0)
subscription_activebooleanNoEnable or disable the subscription

get_user_memories

Get the AI memories stored for a specific consumer: facts and context the AI has learned across conversations.

Scope: analytics:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID
consumer_idstringYesConsumer ID
memory_typestringNoFilter by memory type (optional)
limitnumberNoMax memories to return (default 50, max 100)

Only active (non-superseded) memories are returned.


Workspaces

Manage workspaces and team members.

list_workspaces

List all workspaces you have access to.

Scope: workspace:read

ParameterTypeRequiredDescription
limitnumberNoMax workspaces (default 20, max 100)
offsetnumberNoPagination offset (default 0)
searchstringNoFilter by name (case-insensitive substring match)

get_workspace

Get details about a specific workspace.

Scope: workspace:read

ParameterTypeRequiredDescription
workspace_idstringYesWorkspace ID

list_workspace_members

List members of a workspace.

Scope: workspace:read

ParameterTypeRequiredDescription
workspace_idstringYesWorkspace ID

create_workspace

Create a new workspace in your organization.

Scope: workspace:write

ParameterTypeRequiredDescription
namestringYesWorkspace name
organization_idstringNoOrganization to create the workspace in. Required when you belong to more than one organization

Example:

plaintext
"Create a new workspace called Marketing"

Billing

View subscription and credit information.

get_subscription

Get subscription details for an organization.

Scope: billing:read

ParameterTypeRequiredDescription
(none)

get_credits

Get credit balance and usage.

Scope: billing:read

ParameterTypeRequiredDescription
(none)

get_usage

Get LLM token usage and non-LLM usage events for the organization.

Scope: billing:read

ParameterTypeRequiredDescription
sincestringNoISO date to filter from (defaults to last 30 days)

Returns: token_usage — one row per model, with:

FieldMeaning
call_countNumber of billing.token_usage rows for this model in the window.
input_tokensOrdinary (non-cache) input tokens: SUM(input_tokens).
cache_read_input_tokensAnthropic prompt-cache reads: SUM(cache_read_input_tokens). 0 when the model has no cache activity.
cache_creation_input_tokensAnthropic prompt-cache writes: SUM(cache_creation_input_tokens). 0 when the model has no cache activity.
total_effective_input_tokensThe real input volume you were billed for: input_tokens + cache_read_input_tokens + cache_creation_input_tokens. Use this for cost analysis, not input_tokens alone.
total_output_tokensSUM(output_tokens).

Plus usage_events (non-LLM usage: document parsing, etc.) with usage_type, event_count, total_quantity.

Breaking change (CHIPPD-1437): the old total_input_tokens field (which counted ordinary input tokens only) has been removed, not renamed. Anthropic prompt-caching tokens (cache_read_input_tokens / cache_creation_input_tokens) are DISJOINT from input_tokens, not a subset — for cache-heavy apps they can be 100-500x the ordinary input count. Silently folding them into total_input_tokens risked double counting for any client already summing components client-side. If your integration read total_input_tokens, switch to total_effective_input_tokens (the full picture) or input_tokens (ordinary-only, matching the old field’s actual semantics).

Worked example (mirrors a real cache-dominant app): a model with input_tokens: 51374, cache_read_input_tokens: 29000000, cache_creation_input_tokens: 838515 has total_effective_input_tokens: 29889889 — cache accounts for ~99.8% of real input volume. Reading input_tokens alone would under-report by ~580x.


get_usage_by_app

Get token usage broken down by app for the organization.

Scope: billing:read

ParameterTypeRequiredDescription
sincestringNoISO date to filter from (defaults to last 30 days)

Returns: app_breakdown — one row per app, with application_id, app_name, call_count, and the SAME input-token breakdown as get_usage above: input_tokens, cache_read_input_tokens, cache_creation_input_tokens, total_effective_input_tokens, total_output_tokens. See get_usage’s breaking-change note — total_input_tokens was removed here too, for the same reason.


get_capabilities

Get a boolean map of all feature capabilities for the organization: what features are available based on tier, add-ons, and feature flags.

Scope: billing:read

ParameterTypeRequiredDescription
(none)

Prompt Engineering

AI-assisted tools for improving prompts and selecting models.

list_available_models

List all AI models available for use.

Scope: apps:read

ParameterTypeRequiredDescription
(none)

generate_system_prompt

Generate a new system prompt from a description.

Scope: apps:write

ParameterTypeRequiredDescription
descriptionstringYesWhat the app should do, its personality, and target audience
tonestringNoDesired tone (professional, friendly, technical, casual)

improve_system_prompt

Use AI to analyze and improve an existing system prompt.

Scope: apps:write

ParameterTypeRequiredDescription
system_promptstringYesThe current system prompt to improve
focusstringNoWhat to focus on: clarity, safety, personality, instructions, all (default: all)

recommend_model

Get AI-powered model recommendations for your use case.

Scope: apps:read

ParameterTypeRequiredDescription
use_casestringYesDescription of the use case (e.g. customer support, code generation)
prioritystringNoquality, speed, or cost (default: quality)

generate_suggestions

Generate conversation starter suggestions for an app based on its system prompt. These are the suggested messages shown to users to begin a conversation.

Scope: apps:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID
countnumberNoNumber of suggestions to generate (default 4, max 10)
stylestringNoquestion, task, exploratory, or mixed (default: mixed)

Example:

plaintext
"Generate 6 starter suggestions for my customer support bot"

Action Collections

Manage reusable action bundles that can be linked to multiple applications.

list_action_collections

List action collections owned by you or shared within your organization.

Scope: actions:read

ParameterTypeRequiredDescription
workspace_idstringNoFilter by workspace

get_action_collection

Get details for a specific action collection.

Scope: actions:read

ParameterTypeRequiredDescription
collection_idstringYesCollection ID

create_action_collection

Create a new action collection.

Scope: actions:write

ParameterTypeRequiredDescription
namestringYesCollection name
descriptionstringYesCollection description
workspace_idstringNoWorkspace to create in

update_action_collection

Update an action collection’s name or description.

Scope: actions:write

ParameterTypeRequiredDescription
collection_idstringYesCollection ID
namestringNoNew collection name
descriptionstringNoNew collection description

delete_action_collection

Delete an action collection. Also removes it from any linked apps.

Scope: actions:write

ParameterTypeRequiredDescription
collection_idstringYesCollection ID

Link an action collection to an application, making its actions available.

Scope: actions:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
collection_idstringYesCollection ID

Remove an action collection from an application.

Scope: actions:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
collection_idstringYesCollection ID

list_linked_collections

List all action collections linked to a specific application.

Scope: actions:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID

update_collection_sharing

Update the sharing scope of an action collection.

Scope: actions:write

ParameterTypeRequiredDescription
collection_idstringYesCollection ID
sharing_scopestringYesPRIVATE, WORKSPACE, or PUBLIC
  • PRIVATE: only you can see it
  • WORKSPACE: anyone in your workspace can discover and link it
  • PUBLIC: visible in the marketplace

import_collection_tools

Import tools from an action collection into an app as standalone custom actions. Unlike link_collection_to_app, imported tools are independent copies you can modify freely without affecting the source collection.

Scope: actions:write

ParameterTypeRequiredDescription
collection_idstringYesCollection ID to import from
app_idstringYesApplication ID to import into

Returns: Count of imported tools and any that were skipped due to slug conflicts.


Variables

Manage application variables (key-value configuration used by custom actions).

list_app_variables

List all variables for an application.

Scope: apps:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID

get_app_variable

Get details for a specific application variable.

Scope: apps:read

ParameterTypeRequiredDescription
variable_idstringYesVariable ID

create_app_variable

Create a new application variable.

Scope: apps:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
namestringYesVariable name (machine-readable, e.g. API_KEY)
labelstringYesDisplay label
valuestringYesVariable value
typestringNostring, number, or boolean (default: string)
descriptionstringNoVariable description
requiredbooleanNoWhether the variable is required (default: false)
is_encryptedbooleanNoEncrypt the value at rest; use for secrets (default: false)
placeholderstringNoPlaceholder text shown in the UI

update_app_variable

Update an application variable’s value, label, or description.

Scope: apps:write

ParameterTypeRequiredDescription
variable_idstringYesVariable ID
valuestringNoNew variable value
labelstringNoNew display label
descriptionstringNoNew description
requiredbooleanNoWhether the variable is required

delete_app_variable

Delete an application variable.

Scope: apps:write

ParameterTypeRequiredDescription
variable_idstringYesVariable ID

Heartbeat

Configure and monitor proactive messaging (heartbeat): your app reaching out to consumers on a schedule.

get_heartbeat_config

Get the heartbeat configuration for an app.

Scope: apps:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID

Returns: heartbeat_config (enabled, every, prompt, targets, schedules, and the rest), plus the diagnostics that explain delivery: tierInfo, freeQuota, channelReadiness, broadcastRecipients, consumerEligibility (who is eligible now and why others are skipped; there is no consumer opt-in step), receiptFiling, deliveryHealth per schedule, recentRuns, and taskCredentialReadiness when a schedule runs as a background task.


update_heartbeat_config

Update heartbeat configuration. Set the interval, prompt, delivery channels, and model.

Scope: apps:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
enabledbooleanNoEnable or disable heartbeat
everystringNoInterval (e.g. 30m, 1h, 4h, 1d)
promptstringNoCustom prompt for heartbeat messages
checkliststringNoCriteria for what the heartbeat should check
targetsstring[]NoDelivery channels: whatsapp, slack, email, webchat, webhook, sms, imessage, google_chat, push
modelstringNoLLM model to use for heartbeat messages
timezonestringNoIANA timezone, e.g. America/New_York
schedulesobject[]NoNamed schedules (up to 10), each with its own name, prompt and timing. Replaces the whole list: keep each existing schedule’s id. Pass [] to clear
slack_channelsobject[]NoSlack channels for heartbeat broadcasts, as {channel_id, channel_name}. Needs a Slack workspace from connect_slack_deployment. Replaces the existing list

list_heartbeat_runs

List recent heartbeat runs for an app. Shows which consumers were contacted and outcomes.

Scope: analytics:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID
limitnumberNoMax results (default 20)

trigger_heartbeat

Manually trigger a heartbeat run for an app.

Scope: apps:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID

Link agents (apps) together so one app can call another as a tool during chat.

List agents linked to an app.

Scope: apps:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID

list_available_agents

List agents available to link to an app (apps in the same organization not already linked).

Scope: apps:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID
all_workspacesbooleanNoList agents across every workspace in the app’s organization that you can access (default false)
workspace_idsstring[]NoLimit to these workspaces in the app’s organization. Ignored when all_workspaces is true

Link another agent (app) to this app so it can be called as a tool during chat.

Scope: apps:write

ParameterTypeRequiredDescription
app_idstringYesSource application ID (the app that will call the agent)
target_app_idstringYesTarget application ID (the agent to link)

Example:

plaintext
"Link the 'Booking Agent' app to my 'Customer Support' app"

Remove an agent link from an app.

Scope: apps:write

ParameterTypeRequiredDescription
app_idstringYesSource application ID
target_app_idstringYesTarget application ID to unlink

Database Connections

Manage external database connections attached to apps. Supported types: postgres, mysql, mssql, bigquery, snowflake, clickhouse.

list_database_connections

List external database connections for an app.

Scope: apps:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID

get_database_connection

Get details about a database connection.

Scope: apps:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID
connection_idstringYesConnection ID

create_database_connection

Create a new external database connection for an app. Connection strings are encrypted at rest.

Scope: apps:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
namestringYesDisplay name
db_typestringYespostgres, mysql, mssql, bigquery, snowflake, or clickhouse
connection_stringstringYesConnection string/DSN
default_access_levelstringNoread or read_write (default: read)
allowed_tablesstring[]NoRestrict access to specific tables (all tables if omitted)
max_rowsnumberNoMax rows per query result (default: 1000)

delete_database_connection

Delete a database connection from an app.

Scope: apps:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
connection_idstringYesConnection ID

test_database_connection

Test a database connection and discover its schema (tables, columns, types).

Scope: apps:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
connection_idstringYesConnection ID

Monetization

Manage credit packages that consumers can purchase within your app.

list_consumer_packages

List credit packages available for consumers to purchase in an app.

Scope: apps:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID

create_consumer_package

Create a new credit package for consumer purchase. Supports one-time and subscription packages.

Scope: apps:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
namestringYesPackage name (e.g. Starter Pack)
typestringYesONE_TIME or SUBSCRIPTION
creditsnumberYesNumber of credits in the package
price_centsnumberYesPrice in cents (e.g. 999 = $9.99)
descriptionstringNoPackage description
billing_intervalstringNoFor subscriptions: month or year (default: month)
sort_ordernumberNoDisplay order (lower = first, default: 0)

update_consumer_package

Update a consumer credit package.

Scope: apps:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
package_idstringYesPackage ID
namestringNoNew name
creditsnumberNoNew credit amount
price_centsnumberNoNew price in cents
descriptionstringNoNew description
is_activebooleanNoEnable/disable
statusstringNoDRAFT or PUBLISHED
sort_ordernumberNoNew display order

delete_consumer_package

Delete a consumer credit package (soft delete).

Scope: apps:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
package_idstringYesPackage ID

get_monetization_stats

Get monetization analytics for an app: total revenue, purchases, active subscriptions, and unique customers.

Scope: analytics:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID

Conversation Logging

log_chat_message

Log a user message and/or AI response into a Chipp app’s chat history so it appears in the Conversations dashboard, analytics, and tag detection. Useful when the actual conversation happens outside Chipp (your own backend, a custom channel). The Builder API offers the same capability over REST.

Scope: analytics:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
messagesobject[]YesOrdered list of turns to append (1-50). Each item: role (user or assistant), content, optional model
session_idstringNoContinue an existing session. Mutually exclusive with external_id for new sessions
external_idstringNoStable identifier to dedupe sessions across calls (recommended for cross-call threading)
channelstringNoapi (default), custom, whatsapp, sms, imessage, telegram, discord, teams, slack, or email
consumerobjectNoInfo about the end user (channel_user_id, email, name). Omit for anonymous sessions
titlestringNoSession title (only used on creation)
notify_subscribersbooleanNoFire app-level chat notifications (default true)
detect_tagsbooleanNoRun tag detection on user messages (default true; skipped in ZDR mode)
client_request_idstringNoIdempotency key. Replaying the same id within 10 minutes returns the cached result

Discovery

Questions across every agent you can reach, and the integration catalog.

find_agents_by_capability

Find which of your agents can do something: what each agent is connected to or has switched on (hosted integrations, custom actions, MCP servers, knowledge sources, channels, built-ins). An org API key searches only its own org.

Scope: apps:read

ParameterTypeRequiredDescription
termsstring[]Yes1-10 names for the capability, e.g. calendar, google calendar
familiesstring[]NoLimit to hosted_integration, custom_action, mcp_integration, knowledge_source, channel, builtin
limitintegerNoMax agents (default 25, max 100)

Returns: agents rows with the agent id, name, org, workspace, published and the matching capabilities.


search_integration_catalog

Search the hosted and MCP integration catalogs by provider name, key or alias. Check this before building a custom integration.

Scope: apps:read

ParameterTypeRequiredDescription
querystringYesProvider name, key or alias, e.g. GHL, Notion

Returns: matches with each entry’s nextStep. A result with error means the catalog could not be read, so availability is unverified.


App Administration

Access, placement, domains and workspace defaults.

add_whitelisted_email

Add an email to an app’s access whitelist. Idempotent: an email already there returns alreadyExists: true.

Scope: apps:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
emailstringYesEmail address
namestringNoDisplay name for who was added
expires_in_daysintegerNoDays until the entry expires; omit for permanent access

remove_whitelisted_email

Remove an email from an app’s access whitelist. Idempotent.

Scope: apps:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
emailstringYesEmail address

move_app

Move an app to another workspace you belong to. An org API key can only move within its org.

Scope: apps:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
target_workspace_idstringYesTarget workspace ID

get_domain_status

Live SSL and DNS status for an app’s custom chat domains, with the exact DNS records to enter.

Scope: apps:read

ParameterTypeRequiredDescription
app_idstringYesApplication ID

Returns: hostnames with sslStatus, sslFailureReason, userMessage, dcvToken and dnsRecords.


update_receipt_sync_visibility

Show or hide the Receipt Sync add-on in signed-in consumers’ chat menu. Hiding it does not disconnect anyone. Idempotent.

Scope: apps:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
enabledbooleanYestrue to show, false to hide for new setup

get_workspace_app_defaults

Read the access and compliance defaults stamped onto new apps in a workspace, and which compliance fields the plan does not support.

Scope: workspace:read

ParameterTypeRequiredDescription
workspace_idstringYesWorkspace ID

Returns: defaults and tierLockedFields.


update_workspace_app_defaults

Replace a workspace’s App Defaults for new apps (existing apps are unchanged). Org owners and admins only.

Scope: workspace:write

ParameterTypeRequiredDescription
workspace_idstringYesWorkspace ID
defaultsobjectYesFull defaults bag: authMode, signupsRestrictedToDomain, botProtectionEnabled, hipaaEnabled, encryptedChatEnabled, onDevicePrivacyEnabled

App Connections

Switch an app’s integrations on or off and schedule its knowledge sources.

set_integration_active

Turn an MCP integration on the app on or off.

Scope: actions:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
integration_idstringYesMCP integration ID
is_activebooleanYestrue to enable, false to disable

toggle_platform_managed_integration

Enable or disable a platform-managed hosted integration (Chipp holds the credentials). Verifies the result; a blocked result names the reason.

Scope: actions:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
provider_keystringYesProvider key, e.g. bible, steel
enabledbooleanYestrue to enable, false to disable

set_factory_integration_enabled

Let the app’s signed-in end users connect their own Gmail, Google Drive, Google Calendar or Google Sheets account.

Scope: actions:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
providerstringYesgmail, google-drive, google-calendar or google-sheets
enabledbooleanYestrue to enable, false to disable

set_mcp_write_access

Turn approval-gated write access on or off for a Vanta integration. Vanta connections are read-only by default. With write access on, the agent can propose changes in Vanta, and a member of your organization approves each change on an approval card before it runs.

Scope: actions:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
integration_idstringYesThe Vanta MCP integration ID
enabledbooleanYestrue for approval-gated writes, false for read-only

add_sitemap_source

Add a sitemap as a knowledge source that adds newly published pages on each scheduled refresh.

Scope: knowledge:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
sitemap_urlstringYesFull sitemap URL
refresh_interval_hoursintegerNo1, 6, 12, 24 (default), 48 or 168; null disables
include_pathsstring[]NoOnly URLs containing one of these
exclude_pathsstring[]NoSkip URLs containing any of these

update_knowledge_source

Rename a knowledge source and/or set its auto-refresh interval.

Scope: knowledge:write

ParameterTypeRequiredDescription
app_idstringYesApplication ID
source_idstringYesKnowledge source ID
namestringNoNew display name
refresh_interval_hoursintegerNo1, 6, 12, 24, 48 or 168; null disables

Utilities

get_me

Get the current authenticated identity: user email, all accessible organizations, tier, and scopes. Use this to verify which account the MCP is connected to. Takes no parameters and requires no specific scope.


search_docs

Search Chipp’s platform documentation with a natural-language query. Returns the most relevant doc excerpts, useful for answering “how do I…” questions about Chipp itself. (Distinct from search_documentation, which searches an app’s own knowledge base.)

ParameterTypeRequiredDescription
querystringYesNatural language search query
limitnumberNoMax results (default 5, max 10)

Appendix

Permission Scopes

ScopeDescription
apps:readRead app configurations
apps:writeCreate, update, delete apps
knowledge:readRead knowledge sources
knowledge:writeManage knowledge sources
actions:readRead custom actions
actions:writeManage custom actions
components:readRead custom components
components:writeManage custom components
analytics:readRead analytics data
analytics:writeWrite analytics data (e.g. log_chat_message)
workspace:readRead workspace info
workspace:writeManage workspaces
billing:readRead billing data
*All permissions

Common Error Codes

CodeDescriptionResolution
UNAUTHORIZEDInvalid or expired tokenRe-authenticate
FORBIDDENInsufficient scopeRequest additional scopes
NOT_FOUNDResource doesn’t existCheck ID is correct
RATE_LIMITEDToo many requestsWait and retry
VALIDATION_ERRORInvalid parametersCheck parameter types/values

Next Steps