Tools Reference
Complete reference for all Chipp MCP Server tools
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:
| Category | Tools | Description |
|---|---|---|
| Apps | 14 | Create, publish, duplicate, rollback, and deploy applications |
| Config | 12 | System prompts, models, settings, branding, auth, tool overrides |
| Knowledge | 13 | Add URLs, documents, text, link sources, crawl monitoring |
| Enterprise KB Evidence | 5 | Scoped evidence retrieval: discover grants, search, cite, read |
| Analytics | 14 | Usage data, conversations, metrics, search, moderation |
| Tags | 10 | Intent tagging, classification, utterance generation |
| Tag Examples | 5 | Training utterances: list, create, update, bulk import |
| Evals | 8 | Quality testing and evaluation |
| Custom Actions | 6 | API integrations and testing |
| MCP Integrations | 6 | External MCP servers and hosted integrations |
| Components | 11 | Component Studio custom UI: create, refine, share, link |
| Deployments | 12 | Slack, WhatsApp, Discord, GitHub, Email, Voice |
| Consumers | 4 | End-user management and memory |
| Workspaces | 4 | Workspace management |
| Billing | 5 | Subscription, credits, usage, capabilities |
| Prompt Engineering | 5 | AI-assisted prompt improvement and suggestions |
| Action Collections | 10 | Reusable action bundles with sharing |
| Variables | 5 | Application config variables |
| Heartbeat | 4 | Proactive messaging configuration, history, manual trigger |
| Agent Links | 4 | Agent-to-agent delegation |
| Database Connections | 5 | External database connections |
| Monetization | 5 | Consumer credit packages |
| Conversation Logging | 1 | Log externally-handled conversations into chat history |
| Utilities | 2 | Identity 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| workspace_id | string | No | Filter to a specific workspace |
| limit | number | No | Max results (1-100, default 20) |
| offset | number | No | Pagination offset |
Example:
"List all my Chipp apps"
"Show apps in workspace 42"get_app
Get detailed information about a specific application.
Scope: apps:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
Example:
"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
| Parameter | Type | Required | Description |
|---|---|---|---|
| name | string | Yes | App name (1-100 chars) |
| workspace_id | string | Yes | Workspace to create in |
| description | string | No | App description (max 2000 chars) |
| system_prompt | string | No | Initial 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_id | string | No | Model ID (default: GPT_4_1) |
Example:
"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 existing application’s properties.
Scope: apps:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| name | string | No | New name |
| description | string | No | New description |
| is_public | boolean | No | Make app publicly listed |
Example:
"Rename app 123 to 'Support Bot v2'"
"Make my FAQ app publicly listed"delete_app
Soft-delete an application.
Scope: apps:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
Example:
"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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| message | string | Yes | Message to send |
| session_id | string | No | Continue existing session |
Use this tool to test your apps after making changes. It’s faster than switching to the web UI.
Example:
"Test my FAQ bot with the question 'What are your hours?'"
"Send 'hello' to app 123 to check if it's working"Response shape:
{
"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 within your organization.
Scope: apps:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| query | string | Yes | Search query to match against app names and descriptions |
| limit | number | No | Max results (default 10) |
publish_app
Publish the current app configuration to make it live for consumers. Creates a version snapshot and deploys it.
Scope: apps:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| tag | string | No | Version 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| limit | number | No | Max results (default 20) |
duplicate_app
Create a copy of an existing app with all its configuration, system prompt, and settings.
Scope: apps:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID to duplicate |
| name | string | No | Name for the copy (default: Original Name (Copy)) |
| workspace_id | string | No | Target workspace (defaults to same workspace) |
restore_app_version
Restore an app’s configuration to a previous version. Does not publish — use publish_app afterward if needed.
Scope: apps:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| version_id | string | Yes | Version 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| version_id | string | Yes | Version 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| slug | string | Yes | New 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
update_system_prompt
Update an application’s system prompt.
Scope: apps:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| system_prompt | string | Yes | New 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
update_model
Change the AI model for an application.
Scope: apps:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| model | string | Yes | Model ID (e.g., GPT_4_1, CLAUDE_3_5_SONNET) |
get_settings
Get detailed settings including RAG configuration.
Scope: apps:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
update_settings
Update application settings, capabilities, welcome messages, and suggested starters.
Scope: apps:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| settings | object | No | Settings JSONB (auth, chat options, etc.) |
| capabilities | object | No | Capabilities JSONB (features to enable/disable) |
| welcome_messages | string[] | No | Welcome message rotation |
| suggested_messages | string[] | No | Conversation starter suggestions shown to users |
update_branding
Update visual branding for the application.
Scope: apps:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| primary_color | string | No | Hex color code (e.g. #3B82F6) |
| logo_url | string | No | URL to logo image (light mode) |
| logo_url_dark | string | No | URL to logo image (dark mode) |
| input_text_hint | string | No | Placeholder text for the chat input |
| disclaimer_text | string | No | Disclaimer shown below the chat |
list_suggestions
Get the suggested conversation starters shown to users on the chat interface.
Scope: apps:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
update_suggestions
Set the suggested conversation starters shown to users. Pass an empty array to clear all suggestions.
Scope: apps:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| suggestions | string[] | Yes | Array of suggestion strings (max 6 recommended) |
Example:
"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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| auth_mode | string | No | Consumer access mode: open, encouraged, required, or restricted |
| require_auth | boolean | No | Whether authentication is required before consumers can chat. auth_mode='required' implies this |
| signups_restricted_to_domain | string | No | Only 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| tool_key | string | Yes | The tool key (camelCase), e.g. browseWeb, generateVideo, searchKnowledge. Call get_default_capabilities for the full list |
| enabled | boolean | No | Whether the tool is enabled. Omit to preserve the existing state |
| description | string | null | No | Custom description shown to the LLM. Pass null to revert to the platform default |
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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| status | string | No | Filter by status: pending, processing, completed, failed |
| type | string | No | Filter by type: url, file, text, youtube, youtube_channel, sitemap, confluence |
| limit | number | No | Max results (default 50) |
| offset | number | No | Pagination offset |
get_knowledge_source
Get details about a specific knowledge source.
Scope: knowledge:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| source_id | string | Yes | Knowledge source ID |
add_url_source
Add a URL as a knowledge source. Automatically detects YouTube, Instagram, TikTok, and regular web pages.
Scope: knowledge:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| url | string | Yes | URL to crawl |
| max_depth | number | No | How many levels deep to crawl links (default 1) |
| crawl_links | boolean | No | Whether to follow links on the page |
| max_pages | number | No | Maximum number of pages to crawl |
| name | string | No | Custom name for the source |
Smart Detection: YouTube URLs extract transcripts, social media extracts content, regular URLs are crawled.
Example:
"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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| content | string | Yes | Text content to add |
| name | string | Yes | Name for the source |
Example:
"Add this FAQ text to my support bot's knowledge base"delete_knowledge_source
Remove a knowledge source from an application.
Scope: knowledge:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| source_id | string | Yes | Knowledge source ID |
refresh_knowledge_source
Re-crawl or re-process a knowledge source to update its content.
Scope: knowledge:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| source_id | string | Yes | Knowledge source ID |
list_active_crawls
List knowledge sources currently being processed or queued for an app.
Scope: knowledge:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| source_id | string | Yes | Knowledge 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.).
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| files | object[] | Yes | Array 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| source_id | string | Yes | Knowledge source ID |
link_knowledge_source
Link a knowledge source from one app to another, sharing its RAG data without duplicating it.
Scope: knowledge:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| source_id | string | Yes | Knowledge source ID to link |
| target_app_id | string | Yes | Application ID to link the source to |
unlink_knowledge_source
Remove a linked knowledge source from an app. Does not delete the original source.
Scope: knowledge:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| source_id | string | Yes | Knowledge source ID |
| app_id | string | Yes | Application ID to unlink from |
list_linked_knowledge_sources
List knowledge sources linked to an app from other apps (shared sources).
Scope: knowledge:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID acting as the retrieval caller |
| query | string | Yes | The search query text |
| page | number | No | Page number, 1-based (default 1) |
| page_size | number | No | Results 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID acting as the retrieval caller |
| source_id | string | Yes | Knowledge 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID acting as the retrieval caller |
| chunk_id | string | Yes | Numeric 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID acting as the retrieval caller |
| source_id | string | Yes | Knowledge 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| since | string | No | ISO 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| query | string | No | Text to search for in messages |
| since | string | No | ISO date to filter from |
| limit | number | No | Max results (default 20) |
| offset | number | No | Pagination offset (default 0) |
Example:
"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
| Parameter | Type | Required | Description |
|---|---|---|---|
| session_id | string | Yes | Session ID |
get_top_queries
Get the most common user queries.
Scope: analytics:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| limit | number | No | Number of queries (default 20) |
| since | string | No | ISO 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| since | string | No | ISO date to filter from (defaults to last 30 days) |
get_response_time_analytics
Get response time statistics based on message timestamps.
Scope: analytics:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| since | string | No | ISO 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| since | string | No | ISO 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| query | string | Yes | Text to search for |
| role | string | No | Filter by role: user, assistant, or system |
| since | string | No | ISO date to filter from |
| limit | number | No | Max results (default 50, max 200) |
| offset | number | No | Pagination 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| query | string | Yes | Text to search for in knowledge content |
| limit | number | No | Max 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| since | string | No | ISO 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| since | string | No | ISO 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| since | string | No | ISO 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_popular_apps
Get the most-used apps in your organization, ranked by session count and unique users.
Scope: analytics:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| since | string | No | ISO date to filter from (defaults to last 30 days) |
| limit | number | No | Max results (default 10) |
export_conversations
Export conversations as JSON for an app within a date range.
Scope: analytics:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| since | string | Yes | ISO date to export from (e.g. 2026-01-01) |
| until | string | No | ISO date to export until (defaults to now) |
| limit | number | No | Max 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
get_tag
Get details for a specific tag including utterances.
Scope: apps:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| tag_id | string | Yes | Tag ID |
create_tag
Create a new intent tag.
Scope: apps:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| name | string | Yes | Tag name |
| description | string | No | Tag description |
| utterances | string[] | No | Example phrases that match this tag |
| action | object | No | Action to take when tag matches |
Action types:
staticText: Replace AI response with fixed textfreeze: Stop conversation flownotification: Send webhook or email alert
Example:
"Create a tag called 'pricing' for my sales bot with utterances like 'how much does it cost'"update_tag
Update an existing tag.
Scope: apps:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| tag_id | string | Yes | Tag ID |
| name | string | No | New name |
| utterances | string[] | No | New utterances |
| action | object | No | New action |
delete_tag
Delete a tag.
Scope: apps:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| tag_id | string | Yes | Tag ID |
list_tag_instances
List messages that matched a specific tag.
Scope: analytics:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| tag_id | string | No | Filter by specific tag (optional) |
| limit | number | No | Max 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| tag_instance_id | string | Yes | Tag instance ID to remove |
generate_utterances
Generate training utterances for a tag using AI. Utterances are example phrases that should trigger the tag — more utterances means better detection accuracy.
Scope: apps:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| tag_name | string | Yes | The tag name (e.g. wants to cancel, billing question) |
| tag_description | string | Yes | Description of what this tag detects |
| count | number | No | Number of utterances to generate (default 20, max 100) |
Example:
"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
| Parameter | Type | Required | Description |
|---|---|---|---|
| tag_id | string | Yes | The tag ID |
| positive_examples | string[] | No | Full replacement set of positive examples. Omit to leave unchanged; pass [] to clear |
| negative_examples | string[] | No | Full 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| tag_id | string | Yes | The tag ID |
| positive_examples | string[] | No | Positive examples to append |
| negative_examples | string[] | No | Negative 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| tag_id | string | Yes | The tag ID |
| type | string | No | Filter 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| tag_id | string | Yes | The tag ID to attach examples to |
| examples | string[] | Yes | Example phrases to add (1-50) |
| type | string | No | Polarity 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| tag_id | string | Yes | The tag ID |
| example_id | string | Yes | The example (utterance) ID to update |
| utterance | string | No | New example text |
| type | string | No | New polarity: positive or negative |
delete_tag_example
Delete (detach) a tag example.
Scope: apps:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| tag_id | string | Yes | The tag ID |
| example_id | string | Yes | The 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| tag_id | string | Yes | The tag ID to import examples into |
| format | string | Yes | csv or jsonl |
| content | string | Yes | The 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
get_eval
Get details for a specific evaluation.
Scope: apps:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| eval_id | string | Yes | Evaluation ID |
create_eval
Create a new evaluation with test cases for an app.
Scope: apps:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| name | string | Yes | Evaluation name |
| test_cases | object[] | Yes | Array of test cases |
| evaluation_method | string | No | factuality, faithfulness, answer_relevancy, context_relevancy, or comprehensive (default: factuality) |
Test case format:
{
"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
| Parameter | Type | Required | Description |
|---|---|---|---|
| eval_id | string | Yes | Evaluation ID |
| name | string | No | New name |
| test_cases | object[] | No | Updated test cases |
| evaluation_method | string | No | New evaluation method |
delete_eval
Delete an evaluation.
Scope: apps:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| eval_id | string | Yes | Evaluation ID |
run_eval
Run an evaluation against the app to score its responses on the test cases.
Scope: apps:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| eval_id | string | Yes | Evaluation ID |
list_eval_results
List past evaluation runs.
Scope: apps:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| eval_id | string | Yes | Evaluation ID |
| limit | number | No | Max results |
get_eval_result
Get detailed results from a specific evaluation run.
Scope: apps:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| result_id | string | Yes | Result ID |
Custom Actions
Manage API integrations for your applications.
list_custom_actions
List all custom actions for an application.
Scope: actions:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
get_custom_action
Get details for a specific custom action.
Scope: actions:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| action_id | string | Yes | Action ID |
create_custom_action
Create a new API integration.
Scope: actions:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| name | string | Yes | Action name |
| description | string | Yes | What the action does |
| method | string | Yes | HTTP method (GET, POST, etc.) |
| url | string | Yes | API endpoint URL |
| headers | object | No | Request headers |
| body_template | string | No | Request body template |
| parameters | object[] | No | Input parameters |
Custom actions have complex schemas. See the Custom Actions Guide for detailed examples.
update_custom_action
Update an existing custom action.
Scope: actions:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| action_id | string | Yes | Action ID |
| (other fields) | various | No | Fields to update |
delete_custom_action
Delete a custom action.
Scope: actions:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| action_id | string | Yes | Action ID |
test_custom_action
Test a custom action by executing it with sample parameters.
Scope: actions:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| action_id | string | Yes | Action ID |
| parameters | object | No | Test parameters to pass |
MCP Integrations
Connect external MCP servers to your applications.
list_mcp_integrations
List all connected MCP servers for an application.
Scope: actions:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
get_mcp_integration
Get details about a connected MCP server.
Scope: actions:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| integration_id | string | Yes | Integration ID |
connect_mcp_server
Connect an external MCP server to an application.
Scope: actions:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| server_url | string | Yes | MCP server URL (must be HTTPS) |
| name | string | No | Display name (defaults to server URL) |
| auth_type | string | No | Authentication type: NONE, BEARER, or OAUTH (default: NONE) |
| auth_token | string | No | Bearer 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| integration_id | string | Yes | Integration ID |
| is_active | boolean | No | Enable or disable the entire integration |
| enabled_tools | string[] | No | Tool names to enable (unlisted tools are disabled) |
disconnect_mcp_server
Remove an MCP server connection.
Scope: actions:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| integration_id | string | Yes | Integration ID |
list_hosted_integrations
List hosted integration providers connected to an app (Google Drive, Gmail, Outlook, OneDrive, Slack, and others).
Scope: apps:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| component_id | string | Yes | Component 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| name | string | Yes | Component name |
| code | string | Yes | HTML fragment with embedded style/script |
| props_schema | object | No | JSON Schema for the props the render tool accepts |
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
| Parameter | Type | Required | Description |
|---|---|---|---|
| component_id | string | Yes | Component ID |
| name | string | No | New name |
| code | string | No | New HTML fragment |
| props_schema | object | No | New 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| component_id | string | Yes | Component 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| source_component_id | string | Yes | Component to copy |
| target_app_id | string | Yes | App to copy into |
| name | string | No | Name for the copy (defaults to the source name) |
link_component
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
| Parameter | Type | Required | Description |
|---|---|---|---|
| component_id | string | Yes | Component ID |
| target_app_id | string | Yes | App to link it to |
unlink_component
Unlink a shared component from an application. Idempotent: unlinking a non-existent link returns already_unlinked: true.
Scope: components:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| component_id | string | Yes | Component ID |
| target_app_id | string | Yes | App 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| component_id | string | Yes | Component ID |
| sharing_scope | string | Yes | PRIVATE, 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| include_org | boolean | No | Include 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
Deployments
Manage multi-channel deployments (Slack, WhatsApp, Email, Voice).
list_slack_deployments
List Slack workspace connections.
Scope: apps:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
get_slack_deployment
Get details about a Slack deployment.
Scope: apps:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| deployment_id | string | Yes | Deployment 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| installation_id | number | No | Slack installation ID (from list_slack_installations). Use this OR team_id |
| team_id | string | No | Slack workspace team ID (e.g. T08QUQEH7BJ). Use this OR installation_id |
| channel_id | string | No | Slack channel ID for heartbeat broadcasts. When provided, heartbeat posts proactively to this channel |
| channel_name | string | No | Slack channel name (e.g. #all-chipp). Required if channel_id is provided |
disconnect_slack_deployment
Remove a Slack connection.
Scope: apps:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| deployment_id | string | Yes | Deployment ID |
get_whatsapp_deployment
Get WhatsApp business configuration.
Scope: apps:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
get_voice_config
Get voice agent configuration.
Scope: apps:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
update_voice_config
Update voice agent settings.
Scope: apps:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| voice_id | string | No | Voice model ID |
| language | string | No | Language code |
| telephony_enabled | boolean | No | Enable phone number |
get_email_deployment
Get email channel configuration.
Scope: apps:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
update_email_deployment
Update email channel settings.
Scope: apps:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| enabled | boolean | No | Enable/disable email |
| from_name | string | No | Sender display name |
get_discord_deployment
Get the Discord bot integration status for an app.
Scope: apps:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| search | string | No | Search by name, email, or identifier |
| has_email | boolean | No | Filter to consumers with/without email |
| sort_by | string | No | created_at, credits, name, or email (default: created_at) |
| sort_dir | string | No | asc or desc (default: desc) |
| limit | number | No | Max results (default 25, max 100) |
| offset | number | No | Pagination offset (default 0) |
get_consumer
Get details about a specific consumer including their session count.
Scope: analytics:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| consumer_id | string | Yes | Consumer ID |
update_consumer
Update a consumer’s credit balance or subscription status.
Scope: apps:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| consumer_id | string | Yes | Consumer ID |
| credits | number | No | Set credit balance (integer >= 0) |
| subscription_active | boolean | No | Enable 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| consumer_id | string | Yes | Consumer ID |
| memory_type | string | No | Filter by memory type (optional) |
| limit | number | No | Max memories to return (default 50) |
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
| Parameter | Type | Required | Description |
|---|---|---|---|
| (none) |
get_workspace
Get details about a specific workspace.
Scope: workspace:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| workspace_id | string | Yes | Workspace ID |
list_workspace_members
List members of a workspace.
Scope: workspace:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| workspace_id | string | Yes | Workspace ID |
create_workspace
Create a new workspace in your organization.
Scope: workspace:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| name | string | Yes | Workspace name |
Example:
"Create a new workspace called Marketing"Billing
View subscription and credit information.
get_subscription
Get subscription details for an organization.
Scope: billing:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| (none) |
get_credits
Get credit balance and usage.
Scope: billing:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| (none) |
get_usage
Get LLM token usage and non-LLM usage events for the organization.
Scope: billing:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| since | string | No | ISO date to filter from (defaults to last 30 days) |
Returns: token_usage — one row per model, with:
| Field | Meaning |
|---|---|
call_count | Number of billing.token_usage rows for this model in the window. |
input_tokens | Ordinary (non-cache) input tokens: SUM(input_tokens). |
cache_read_input_tokens | Anthropic prompt-cache reads: SUM(cache_read_input_tokens). 0 when the model has no cache activity. |
cache_creation_input_tokens | Anthropic prompt-cache writes: SUM(cache_creation_input_tokens). 0 when the model has no cache activity. |
total_effective_input_tokens | The 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_tokens | SUM(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_tokensfield (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 frominput_tokens, not a subset — for cache-heavy apps they can be 100-500x the ordinary input count. Silently folding them intototal_input_tokensrisked double counting for any client already summing components client-side. If your integration readtotal_input_tokens, switch tototal_effective_input_tokens(the full picture) orinput_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: 838515hastotal_effective_input_tokens: 29889889— cache accounts for ~99.8% of real input volume. Readinginput_tokensalone would under-report by ~580x.
get_usage_by_app
Get token usage broken down by app for the organization.
Scope: billing:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| since | string | No | ISO 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| (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
| Parameter | Type | Required | Description |
|---|---|---|---|
| (none) |
generate_system_prompt
Generate a new system prompt from a description.
Scope: apps:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| description | string | Yes | What the app should do, its personality, and target audience |
| tone | string | No | Desired tone (professional, friendly, technical, casual) |
improve_system_prompt
Use AI to analyze and improve an existing system prompt.
Scope: apps:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_prompt | string | Yes | The current system prompt to improve |
| focus | string | No | What to focus on: clarity, safety, personality, instructions, all (default: all) |
recommend_model
Get AI-powered model recommendations for your use case.
Scope: apps:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| use_case | string | Yes | Description of the use case (e.g. customer support, code generation) |
| priority | string | No | quality, 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| count | number | No | Number of suggestions to generate (default 4, max 10) |
| style | string | No | question, task, exploratory, or mixed (default: mixed) |
Example:
"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
| Parameter | Type | Required | Description |
|---|---|---|---|
| workspace_id | string | No | Filter by workspace |
get_action_collection
Get details for a specific action collection.
Scope: actions:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| collection_id | string | Yes | Collection ID |
create_action_collection
Create a new action collection.
Scope: actions:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| name | string | Yes | Collection name |
| description | string | No | Collection description |
| workspace_id | string | No | Workspace to create in |
update_action_collection
Update an action collection’s name or description.
Scope: actions:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| collection_id | string | Yes | Collection ID |
| name | string | No | New collection name |
| description | string | No | New collection description |
delete_action_collection
Delete an action collection. Also removes it from any linked apps.
Scope: actions:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| collection_id | string | Yes | Collection ID |
link_collection_to_app
Link an action collection to an application, making its actions available.
Scope: actions:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| collection_id | string | Yes | Collection ID |
unlink_collection_from_app
Remove an action collection from an application.
Scope: actions:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| collection_id | string | Yes | Collection ID |
list_linked_collections
List all action collections linked to a specific application.
Scope: actions:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
update_collection_sharing
Update the sharing scope of an action collection.
Scope: actions:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| collection_id | string | Yes | Collection ID |
| sharing_scope | string | Yes | PRIVATE, 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| collection_id | string | Yes | Collection ID to import from |
| app_id | string | Yes | Application 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
get_app_variable
Get details for a specific application variable.
Scope: apps:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| variable_id | string | Yes | Variable ID |
create_app_variable
Create a new application variable.
Scope: apps:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| name | string | Yes | Variable name |
| label | string | No | Display label |
| type | string | No | Variable type |
| description | string | No | Variable description |
| required | boolean | No | Whether the variable is required |
update_app_variable
Update an application variable’s value, label, or description.
Scope: apps:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| variable_id | string | Yes | Variable ID |
| value | string | No | New variable value |
| label | string | No | New display label |
| description | string | No | New description |
delete_app_variable
Delete an application variable.
Scope: apps:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| variable_id | string | Yes | Variable 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
Returns: enabled, every, prompt, checklist, targets, and model.
update_heartbeat_config
Update heartbeat configuration. Set the interval, prompt, delivery channels, and model.
Scope: apps:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| enabled | boolean | No | Enable or disable heartbeat |
| every | string | No | Interval (e.g. 30m, 1h, 4h, 1d) |
| prompt | string | No | Custom prompt for heartbeat messages |
| checklist | string | No | Criteria for what the heartbeat should check |
| targets | string[] | No | Delivery channels: whatsapp, slack, email, webchat, webhook |
| model | string | No | LLM model to use for heartbeat messages |
list_heartbeat_runs
List recent heartbeat runs for an app — shows which consumers were contacted and outcomes.
Scope: analytics:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| limit | number | No | Max results (default 20) |
trigger_heartbeat
Manually trigger a heartbeat run for an app.
Scope: apps:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
Agent Links
Link agents (apps) together so one app can call another as a tool during chat.
list_agent_links
List agents linked to an app.
Scope: apps:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
list_available_agents
List agents available to link to an app (apps in the same organization not already linked).
Scope: apps:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
link_agent
Link another agent (app) to this app so it can be called as a tool during chat.
Scope: apps:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Source application ID (the app that will call the agent) |
| target_app_id | string | Yes | Target application ID (the agent to link) |
Example:
"Link the 'Booking Agent' app to my 'Customer Support' app"unlink_agent
Remove an agent link from an app.
Scope: apps:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Source application ID |
| target_app_id | string | Yes | Target 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
get_database_connection
Get details about a database connection.
Scope: apps:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| connection_id | string | Yes | Connection ID |
create_database_connection
Create a new external database connection for an app. Connection strings are encrypted at rest.
Scope: apps:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| name | string | Yes | Display name |
| db_type | string | Yes | postgres, mysql, mssql, bigquery, snowflake, or clickhouse |
| connection_string | string | Yes | Connection string/DSN |
| default_access_level | string | No | read or read_write (default: read) |
| allowed_tables | string[] | No | Restrict access to specific tables (all tables if omitted) |
| max_rows | number | No | Max rows per query result (default: 1000) |
delete_database_connection
Delete a database connection from an app.
Scope: apps:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| connection_id | string | Yes | Connection ID |
test_database_connection
Test a database connection and discover its schema (tables, columns, types).
Scope: apps:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| connection_id | string | Yes | Connection 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
create_consumer_package
Create a new credit package for consumer purchase. Supports one-time and subscription packages.
Scope: apps:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| name | string | Yes | Package name (e.g. Starter Pack) |
| type | string | Yes | ONE_TIME or SUBSCRIPTION |
| credits | number | Yes | Number of credits in the package |
| price_cents | number | Yes | Price in cents (e.g. 999 = $9.99) |
| description | string | No | Package description |
| billing_interval | string | No | For subscriptions: month or year (default: month) |
| sort_order | number | No | Display order (lower = first, default: 0) |
update_consumer_package
Update a consumer credit package.
Scope: apps:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| package_id | string | Yes | Package ID |
| name | string | No | New name |
| credits | number | No | New credit amount |
| price_cents | number | No | New price in cents |
| description | string | No | New description |
| is_active | boolean | No | Enable/disable |
| status | string | No | DRAFT or PUBLISHED |
| sort_order | number | No | New display order |
delete_consumer_package
Delete a consumer credit package (soft delete).
Scope: apps:write
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| package_id | string | Yes | Package ID |
get_monetization_stats
Get monetization analytics for an app: total revenue, purchases, active subscriptions, and unique customers.
Scope: analytics:read
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | Application ID |
| messages | object[] | Yes | Ordered list of turns to append (1-50). Each item: role (user or assistant), content, optional model |
| session_id | string | No | Continue an existing session. Mutually exclusive with external_id for new sessions |
| external_id | string | No | Stable identifier to dedupe sessions across calls (recommended for cross-call threading) |
| channel | string | No | Source channel label, e.g. api, custom, whatsapp, sms, discord, teams |
| consumer | object | No | Info about the end user (email, name). Omit for anonymous sessions |
| title | string | No | Session title (only used on creation) |
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.)
| Parameter | Type | Required | Description |
|---|---|---|---|
| query | string | Yes | Natural language search query |
| limit | number | No | Max results |
Appendix
Permission Scopes
| Scope | Description |
|---|---|
apps:read | Read app configurations |
apps:write | Create, update, delete apps |
knowledge:read | Read knowledge sources |
knowledge:write | Manage knowledge sources |
actions:read | Read custom actions |
actions:write | Manage custom actions |
components:read | Read custom components |
components:write | Manage custom components |
analytics:read | Read analytics data |
analytics:write | Write analytics data (e.g. log_chat_message) |
workspace:read | Read workspace info |
workspace:write | Manage workspaces |
billing:read | Read billing data |
* | All permissions |
Common Error Codes
| Code | Description | Resolution |
|---|---|---|
UNAUTHORIZED | Invalid or expired token | Re-authenticate |
FORBIDDEN | Insufficient scope | Request additional scopes |
NOT_FOUND | Resource doesn’t exist | Check ID is correct |
RATE_LIMITED | Too many requests | Wait and retry |
VALIDATION_ERROR | Invalid parameters | Check parameter types/values |
Next Steps
- Common Workflows - Step-by-step examples
- Rate Limits - Usage limits and best practices
- Authentication - Token management
- Builder API - REST API with per-app keys (sessions, consumers, conversation logging)
- Org Export API - Org-wide transcript export with
chipp_org_keys