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 | 16 | Create, update settings (one app or many), publish, duplicate, rollback, and deploy applications |
| Config | 13 | 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 |
| Discovery | 2 | Find agents by capability, search the integration catalog |
| App Administration | 7 | Access whitelist, move app, custom domain status, Receipt Sync, workspace App Defaults |
| App Connections | 6 | Integration switches, Factory per-user integrations, Vanta write access, knowledge refresh schedule |
| Utilities | 3 | Identity introspection, platform docs search, and the book (full text on paid plans) |
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. Chipp MCP: core
| Parameter | Type | Required | Description |
|---|---|---|---|
| workspace_id | string | No | Filter by workspace ID (optional) |
| limit | number | No | Max number of apps to return (default 20, max 50) |
| offset | number | No | Pagination offset (default 0) |
Example:
"List all my Chipp apps"
"Show apps in workspace 42"get_app
Get detailed information about a specific application.
Scope: apps:read. Chipp MCP: core
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The 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. Chipp MCP: apps
| Parameter | Type | Required | Description |
|---|---|---|---|
| name | string | Yes | App name |
| description | string | No | App description (optional) |
| workspace_id | string | Yes | Workspace to create the app in |
| display_name | string | No | Client-facing display name shown in the chat header, HQ listings, and notifications. Omit or set to null to use the internal name as the display name. Max 100 chars. (optional) |
| system_prompt | string | No | Initial system prompt (optional, up to 2,000,000 characters) |
| model_id | string | No | LLM model ID (optional, defaults to the platform new-agent default, currently claude-sonnet-5-5). An openrouter:<slug> model cannot be set on create: create the app, then call update_model. |
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 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. Chipp MCP: app-settings
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| settings | object | No | Fields to update Fields: name, display_name, description, instructions, model, temperature, maxTokens, thinkingEffort, uptimeFallback, authMode, domainRestriction, hideApprovedDomains, artifactFrameAncestors, emailGatingEnabled, botProtectionEnabled, publicLeaderboardOptIn, suggestedMessages, welcomeMessage, primaryColor, customCss, authCustomCss, isPublic, language, textDirection, currency, consumerSharingOptOut, capabilities, spendingLimitCents, brandStyles, showSources, multiplayerEnabled, multiplayerRequireAuth, multiplayerRequireActiveSubscription, greetingEnabled, greetingPrompt, fileUploadEnabled, imageUploadEnabled, audioInputEnabled, imageInputEnabled, maxImagesPerConversation, imageLimitReachedMessage, streamResponses, monetizationEnabled, trialDurationDays, trialUsageLimitCents, shareConsumerCredentialsWithLinkedAgents, linkedAgentMaxIterations, maxKnowledgeChunksPerQuery, ragConfig, fullDocumentKnowledge, fullDocumentMaxPages, fullDocumentCacheTtl. |
| reasoning | string | No | Brief explanation |
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.
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:
"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. Chipp MCP: app-settings
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_ids | string[] | Yes | Apps to update (from get_app_overview / list_apps or search_apps). |
| settings | object | Yes | Same fields as update_app’s settings Fields: name, display_name, description, instructions, model, temperature, maxTokens, thinkingEffort, uptimeFallback, authMode, domainRestriction, hideApprovedDomains, artifactFrameAncestors, emailGatingEnabled, botProtectionEnabled, publicLeaderboardOptIn, suggestedMessages, welcomeMessage, primaryColor, customCss, authCustomCss, isPublic, language, textDirection, currency, consumerSharingOptOut, capabilities, spendingLimitCents, brandStyles, showSources, multiplayerEnabled, multiplayerRequireAuth, multiplayerRequireActiveSubscription, greetingEnabled, greetingPrompt, fileUploadEnabled, imageUploadEnabled, audioInputEnabled, imageInputEnabled, maxImagesPerConversation, imageLimitReachedMessage, streamResponses, monetizationEnabled, trialDurationDays, trialUsageLimitCents, shareConsumerCredentialsWithLinkedAgents, linkedAgentMaxIterations, maxKnowledgeChunksPerQuery, ragConfig, fullDocumentKnowledge, fullDocumentMaxPages, fullDocumentCacheTtl. |
| reasoning | string | No | Brief summary of the change and why |
Each app needs the same per-field workspace permissions as update_app.
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:
"Set the classic-chipp theme on every app in my Support workspace"get_app_settings_help
The guidance for app settings fields: what each one does, its default, when to use it, and what it is not for. Read it before you change a field such as capabilities.memory, trialMode, sessionTerminationEnabled, ragConfig or customCss with update_app or bulk_update_app_settings. It reads no app data.
Scope: apps:read. Chipp MCP: app-settings
| Parameter | Type | Required | Description |
|---|---|---|---|
| fields | string[] | No | Settings paths, e.g. capabilities.memory or ragConfig. Omit for every field with guidance. |
Returns fields (the guidance text for each path) and unknown (paths that have no guidance).
Example:
"What does session termination do before I turn it on?"delete_app
Soft-delete an application.
Scope: apps:write. Chipp MCP: apps
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID to delete |
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. Chipp MCP: apps
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID to chat with |
| message | string | Yes | The message to send |
| session_id | string | No | Session ID for continuing a conversation (optional, creates new session if omitted) |
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 across the workspaces you can reach. An API key searches its own organization unless all_orgs is true.
Scope: apps:read. Chipp MCP: core
| Parameter | Type | Required | Description |
|---|---|---|---|
| query | string | Yes | Text matched case-insensitively against app names and descriptions |
| limit | number | No | Max results (default 10, max 25) |
| all_orgs | boolean | No | API keys: also search the user’s other organizations (default false) |
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. Chipp MCP: apps
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID to publish |
| tag | string | No | Optional 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. Chipp MCP: apps
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| limit | number | No | Max 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. Chipp MCP: apps
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID to duplicate |
| name | string | No | Name for the copy (default: ‘Original Name (Copy)‘) |
| workspace_id | string | No | Target workspace (optional, defaults to same workspace) |
| include_tags | boolean | No | Copy the source app’s tags + example utterances onto the clone (notification destinations preserved unless reset). Default true. |
| reset_tag_notifications | boolean | No | OPT-IN, default false. Copy tags with notifications off and no email, channels or webhook. |
| include_evals | boolean | No | Copy the source app’s evals + test cases + publish config onto the clone (no run history/scores). 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. Chipp MCP: apps
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| version_id | string | Yes | The 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. Chipp MCP: apps
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| version_id | string | Yes | The 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. Chipp MCP: core
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The 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. Chipp MCP: apps
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| slug | string | Yes | New URL slug for the app (e.g. ‘my-sales-bot’). 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. Chipp MCP: apps
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
update_system_prompt
Update an application’s system prompt.
Scope: apps:write. Chipp MCP: apps
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| system_prompt | string | Yes | The 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. Chipp MCP: apps
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
update_model
Change the AI model and/or temperature for an application.
Scope: apps:write. Chipp MCP: apps
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| model | string | No | Model ID (e.g. claude-sonnet-4-6, gpt-4.1, gemini-2.5-pro), or openrouter:<slug> for an OpenRouter model |
| temperature | number | No | Temperature value between 0 and 2 (optional) |
get_settings
Get detailed settings including RAG configuration.
Scope: apps:read. Chipp MCP: app-settings
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
update_settings
Update application settings, capabilities, welcome messages, and suggested starters.
Scope: apps:write. Chipp MCP: app-settings
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| settings | object | No | App settings JSONB (optional). Top-level keys are shallow-merged: sending one key preserves the rest. settings.ragConfig (knowledge retrieval tuning) is validated and FIELD-merged, so sending one key keeps the others: 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), documentWeight (0-1, default 0.3), fullDocumentMode, fullDocumentMaxPages (1-600), fullDocumentCacheTtl (“5m” or “1h”). Unknown keys or out-of-range values are refused. Takes effect after re-publish. |
| capabilities | object | No | App capabilities JSONB (optional). Top-level capability BLOCKS are shallow-merged. WARNING: capabilities.toolOverrides is REPLACED WHOLESALE: partial sends erase other overrides. Use set_tool_override for safe single-tool toggles. |
| welcome_messages | string[] | No | Welcome messages shown to users (optional). Replaces the whole array. |
| suggested_messages | string[] | No | Suggested conversation starters (optional). Replaces the whole array. |
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. Chipp MCP: app-settings
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| primary_color | string | No | Brand primary color hex (e.g. #6366f1) |
| logo_url | string | No | Logo image URL |
| logo_url_dark | string | No | Logo image URL for dark mode |
| input_text_hint | string | No | Placeholder text for the chat input |
| disclaimer_text | string | No | Disclaimer text shown below chat input |
| theme | "default" or "imessage" or "classic-chipp" | No | Chat theme preset |
| dark_mode | "off" or "on" or "auto" | No | Dark mode behavior |
| bot_message_color | string | No | Assistant message bubble background hex (e.g. #F3F4F6) |
| user_message_color | string | No | User message bubble background hex (e.g. #4F46E5) |
| bot_message_font_color | string | No | Assistant message text hex (legacy compatibility; may not render in all themes) |
| user_message_font_color | string | No | User message text hex (legacy compatibility; may not render in all themes) |
| chat_input_border_color | string | No | Chat input border hex (legacy compatibility; may not render in all themes) |
| force_dark_mode | boolean | No | Legacy dark mode forcing flag (prefer dark_mode) |
| show_tool_status | boolean | No | Show tool invocation status to consumers (legacy compatibility) |
| custom_css | string | No | Custom CSS injected into the consumer chat UI. Affects all screens globally. Pass an empty string to clear. Live-on-save (no re-publish needed). |
| auth_custom_css | string | No | Custom CSS injected only into the consumer auth screens (login, signup). Pass an empty string to clear. Live-on-save (no re-publish needed). |
| email_display_name | string | No | Optional per-app sender/subject display name used ONLY for patient-facing system emails (OTP verification, password reset, welcome, circle invites). When set, overrides the app’s branding display name for email purposes. When unset (or cleared with an empty string), emails fall back to the app’s branding display name, then a neutral default — never the internal app name/slug. |
list_suggestions
Get the suggested conversation starters shown to users on the chat interface.
Scope: apps:read. Chipp MCP: apps
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
update_suggestions
Set the suggested conversation starters shown to users. Pass an empty array to clear all suggestions.
Scope: apps:write. Chipp MCP: apps
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The 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. Chipp MCP: app-settings
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| auth_mode | "open" or "encouraged" or "required" or "restricted" | No | Consumer access mode (see description above) |
| require_auth | boolean | No | Whether authentication is required before consumers can chat. Setting auth_mode=‘required’ implies require_auth=true. |
| signups_restricted_to_domain | string | No | If set, only email addresses from this domain (e.g. ‘acme.com’) may sign up as consumers. Pass an empty string to clear the restriction. |
set_tool_override
Toggle enable/disable or update the LLM-facing description for a single tool override on an app.
Scope: apps:write. Chipp MCP: app-settings
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| tool_key | string | Yes | The tool key to override. This app’s VALID keys are the union of: built-in tools (camelCase, e.g. ‘browseWeb’, ‘generateVideo’, ‘searchKnowledge’); hosted-integration tool names (snake_case, provider-prefixed, e.g. ‘slack_send_message’) for integrations connected on this app; custom component tools (‘render_<snake_case>’, e.g. ‘render_personnel_file’); custom action tools (their slug/name and any short alias); and MCP integration tools (‘<integration>_<remote_tool>’). Call list_tool_keys with this app’s app_id to get the exact valid keys, including this app’s custom ones. |
| enabled | boolean | No | Whether the tool is enabled. Optional; if omitted, the existing enabled state is preserved. |
| description | string | No | Custom description shown to the LLM when the tool is registered. Pass null to clear and revert to the platform default. Omit to leave unchanged. |
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. Chipp MCP: app-settings
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
get_default_capabilities
Get the canonical platform-default state for capabilities, settings, and tool overrides. Takes no parameters.
Scope: apps:read. Chipp MCP: app-settings
No parameters.
Knowledge Sources
Manage RAG (Retrieval-Augmented Generation) knowledge bases.
list_knowledge_sources
List all knowledge sources for an application.
Scope: knowledge:read. Chipp MCP: knowledge
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| status | string | No | Filter by status: pending, processing, completed, failed (optional) |
| type | string | No | Filter by type: url, file, text, youtube, youtube_channel, sitemap, confluence (optional) |
| limit | number | No | Max results (default 50) |
| offset | number | No | Pagination offset (default 0) |
get_knowledge_source
Get details about a specific knowledge source.
Scope: knowledge:read. Chipp MCP: knowledge
| Parameter | Type | Required | Description |
|---|---|---|---|
| source_id | string | Yes | The 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. Chipp MCP: knowledge
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| url | string | Yes | The URL to crawl and index |
| name | string | No | Display name for this source (optional, defaults to URL) |
| crawl_links | boolean | No | Whether to follow and crawl linked pages (default: false). When true, crawls child pages up to max_depth levels deep. |
| max_depth | number | No | How many levels deep to crawl linked pages (1-3, default: 1, capped at your plan’s crawl depth). Only applies when crawl_links is true. |
| max_pages | number | No | Maximum number of pages to crawl (default: 10, capped at your plan’s crawl page limit). Only applies when crawl_links is true. |
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. Chipp MCP: knowledge
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| name | string | Yes | Display name for this source |
| content | string | Yes | The text content to index. Can be plain text, markdown, or Q&A format. |
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. Chipp MCP: knowledge
| Parameter | Type | Required | Description |
|---|---|---|---|
| source_id | string | Yes | The knowledge source ID to delete |
refresh_knowledge_source
Re-crawl or re-process a knowledge source to update its content.
Scope: knowledge:write. Chipp MCP: knowledge
| Parameter | Type | Required | Description |
|---|---|---|---|
| source_id | string | Yes | The knowledge source ID to refresh |
list_active_crawls
List knowledge sources currently being processed or queued for an app.
Scope: knowledge:read. Chipp MCP: knowledge
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The 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. Chipp MCP: knowledge
| Parameter | Type | Required | Description |
|---|---|---|---|
| source_id | string | Yes | The knowledge source ID whose crawl should be cancelled |
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. Chipp MCP: knowledge
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| files | object[] | Yes | Array of files to upload Fields: fileName, content. |
Supported formats: PDF, DOCX, TXT, MD, CSV, JSON, XLSX, XLS, and audio files (MP3, WAV, M4A, etc.).
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. Chipp MCP: knowledge
| Parameter | Type | Required | Description |
|---|---|---|---|
| source_id | string | Yes | The knowledge source ID to check progress for |
link_knowledge_source
Link a knowledge source from one app to another, sharing its RAG data without duplicating it.
Scope: knowledge:write. Chipp MCP: knowledge
| Parameter | Type | Required | Description |
|---|---|---|---|
| source_id | string | Yes | The knowledge source ID to link |
| target_app_id | string | Yes | The 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. Chipp MCP: knowledge
| Parameter | Type | Required | Description |
|---|---|---|---|
| source_id | string | Yes | The knowledge source ID to unlink |
| app_id | string | Yes | The application ID to unlink the source from |
list_linked_knowledge_sources
List knowledge sources linked to an app from other apps (shared sources).
Scope: knowledge:read. Chipp MCP: knowledge
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The 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. Chipp MCP: knowledge
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The 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. Chipp MCP: knowledge
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The 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. Chipp MCP: knowledge
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID acting as the retrieval caller |
| source_id | string | Yes | The 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. Chipp MCP: knowledge
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID acting as the retrieval caller |
| chunk_id | string | Yes | The 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. Chipp MCP: knowledge
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID acting as the retrieval caller |
| source_id | string | Yes | The knowledge source ID to read in full |
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. Chipp MCP: analytics
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| since | string | No | ISO date string to filter from (optional, 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. Chipp MCP: analytics
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| query | string | No | Text to search for in messages (optional) |
| since | string | No | ISO date to filter from (optional) |
| 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. Chipp MCP: analytics
| Parameter | Type | Required | Description |
|---|---|---|---|
| session_id | string | Yes | The chat session ID |
get_top_queries
Get the most common user queries.
Scope: analytics:read. Chipp MCP: analytics
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| limit | number | No | Max results (default 20) |
| since | string | No | ISO date to filter from (optional) |
get_model_usage
Get LLM model usage breakdown (token counts by model) for an app.
Scope: analytics:read. Chipp MCP: analytics
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| since | string | No | ISO date to filter from (optional, defaults to 30 days) |
get_response_time_analytics
Get response time statistics based on message timestamps.
Scope: analytics:read. Chipp MCP: analytics
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| since | string | No | ISO date to filter from (optional, defaults to 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. Chipp MCP: analytics
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| since | string | No | ISO date to filter from (optional, defaults to 30 days) |
search_messages
Search for specific text within messages across all conversations in an app.
Scope: analytics:read. Chipp MCP: analytics
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| query | string | Yes | Text to search for in message content |
| role | string | No | Filter by message role: user, assistant, or system (optional) |
| since | string | No | ISO date to filter from (optional) |
| 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. Chipp MCP: analytics
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The 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. Chipp MCP: analytics
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| since | string | No | ISO date to filter from (optional, 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. Chipp MCP: analytics
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| since | string | No | ISO date to filter from (optional, 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. Chipp MCP: analytics
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| since | string | No | ISO date to filter from (optional, 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. Chipp MCP: analytics
| Parameter | Type | Required | Description |
|---|---|---|---|
| since | string | No | ISO date to filter from (optional, 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. Chipp MCP: analytics
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| since | string | Yes | ISO date to export from (required) |
| until | string | No | ISO date to export until (optional, 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. Chipp MCP: tags
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
get_tag
Get details for a specific tag including utterances.
Scope: apps:read. Chipp MCP: tags
| Parameter | Type | Required | Description |
|---|---|---|---|
| tag_id | string | Yes | The tag ID |
create_tag
Create a new intent tag.
Scope: apps:write. Chipp MCP: tags
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| name | string | Yes | Tag name |
| color | string | Yes | Tag color hex (e.g. #ef4444) |
| description | string | No | Definition of when this tag should trigger. Jev classifies new tags from the name and this text, so be specific (recommended). |
| static_text | string | No | Static text to respond with when this tag triggers (optional) |
| similarity_threshold | number | No | Cosine similarity threshold 0-1 (default 0.8). Applies only to legacy embedding_v1 tags and the embedding fallback. |
| jev_threshold | number | No | Jev match probability threshold 0-1 for jev_v1 tags (optional, default 0.5). |
| freeze_conversation | boolean | No | Whether to freeze the conversation when this tag triggers (default false) |
| notification_enabled | boolean | No | Whether to send notifications (default false) |
| notification_email | string | No | Email to send notifications to (optional) |
| webhook_url | string | No | Webhook URL to call when tag triggers (optional) |
| positive_examples | string[] | No | Example utterances that SHOULD trigger this tag. Embedded server-side within this same call (the same pipeline the builder UI uses). For a jev_v1 tag they are boundary examples for Jev and the embedding fallback when Jev is unavailable; the tag matches without them. Optional. |
| negative_examples | string[] | No | Counter-example utterances that must NOT trigger this tag, embedded alongside the positives. Optional. |
Actions when the tag matches:
static_text: Replace AI response with fixed textfreeze_conversation: Stop conversation flownotification_enabledwithnotification_emailorwebhook_url: Send an email or webhook alert
Example:
"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. Chipp MCP: tags
| Parameter | Type | Required | Description |
|---|---|---|---|
| tag_id | string | Yes | The tag ID |
| name | string | No | New name (optional) |
| color | string | No | New color (optional) |
| description | string | No | New description (optional) |
| static_text | string | No | New static text (optional) |
| similarity_threshold | number | No | New similarity threshold for embedding_v1 tags (optional) |
| jev_threshold | number | No | New Jev probability threshold 0-1 for jev_v1 tags; null resets to the default 0.5 (optional) |
| enabled | boolean | No | Enable/disable (optional) |
| freeze_conversation | boolean | No | Freeze on trigger (optional) |
| notification_enabled | boolean | No | Enable notifications (optional) |
| notification_email | string | No | Notification email (optional) |
| webhook_url | string | No | Webhook URL (optional) |
| positive_examples | string[] | No | Additional example utterances that SHOULD trigger this tag. APPENDED to any existing positive examples (deduped) and embedded server-side within this call — never replaces the existing set. Use set_tag_examples to replace the set instead. Optional. |
| negative_examples | string[] | No | Additional counter-example utterances that must NOT trigger this tag. APPENDED to any existing negative examples (deduped) and embedded server-side within this call. Optional. |
delete_tag
Delete a tag.
Scope: apps:write. Chipp MCP: tags
| Parameter | Type | Required | Description |
|---|---|---|---|
| tag_id | string | Yes | The tag ID to delete |
list_tag_instances
List messages that matched a specific tag.
Scope: analytics:read. Chipp MCP: tags
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The 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. Chipp MCP: tags
| Parameter | Type | Required | Description |
|---|---|---|---|
| tag_instance_id | string | Yes | The tag 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. Chipp MCP: tags
| 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. Chipp MCP: tags
| 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. Chipp MCP: tags
| Parameter | Type | Required | Description |
|---|---|---|---|
| tag_id | string | Yes | The tag ID |
| positive_examples | string[] | No | Positive examples to append (optional). |
| negative_examples | string[] | No | Negative examples to append (optional). |
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. Chipp MCP: tags
| Parameter | Type | Required | Description |
|---|---|---|---|
| tag_id | string | Yes | The tag ID |
| type | "positive" or "negative" | No | Filter to a single polarity (optional; returns both when omitted) |
| format | "json" or "csv" | No | ’json’ (default) returns the rows. ‘csv’ returns the same rows as a CSV string in csv (every cell quoted, formula characters defanged). |
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. Chipp MCP: tags
| 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 | "positive" or "negative" | No | Polarity for all examples in this call (default ‘positive’) |
update_tag_example
Update an existing tag example’s text and/or polarity.
Scope: apps:write. Chipp MCP: tags
| 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 (optional) |
| type | "positive" or "negative" | No | New polarity (optional) |
delete_tag_example
Delete (detach) a tag example.
Scope: apps:write. Chipp MCP: tags
| Parameter | Type | Required | Description |
|---|---|---|---|
| tag_id | string | Yes | The tag ID |
| example_id | string | Yes | The example (utterance) 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. Chipp MCP: tags
| Parameter | Type | Required | Description |
|---|---|---|---|
| tag_id | string | Yes | The tag ID to import examples into |
| format | "csv" or "jsonl" | Yes | The payload format |
| 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. Chipp MCP: analytics
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
get_eval
Get details for a specific evaluation.
Scope: apps:read. Chipp MCP: analytics
| Parameter | Type | Required | Description |
|---|---|---|---|
| eval_id | string | Yes | The evaluation ID (from list_evals) |
create_eval
Create a new evaluation with test cases for an app.
Scope: apps:write. Chipp MCP: analytics
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| name | string | Yes | Evaluation name |
| test_cases | object[] | Yes | Array of test case objects. Single-turn: {input, expected_output}. Scripted per-turn conversation: {turns, tag?}: an ordered array of {role, content, expected_response} turns replayed through the app’s real chat pipeline, each user turn scored independently against its own expected_response (strict superset of single-turn: a 1-turn turns array is equivalent to input/expected_output). Older multi-turn scripted conversation: {user_turns, expected_output, per_turn_criteria?}: the app generates each intervening assistant turn and the case is judged as ONE conversation. At most one of turns / user_turns / persona_prompt may be set per case. Fields: input, expected_output, turns, tag, user_turns, per_turn_criteria, persona_prompt, max_turns. |
| evaluation_method | string | No | Evaluation method: factuality, faithfulness, answer_relevancy, context_relevancy, or comprehensive (default: factuality) |
| publish_gate | boolean | No | If true, publishing the app is blocked when this suite has never run or scored below publish_pass_threshold |
| publish_pass_threshold | number | No | Score percentage (0-100) required to pass the publish gate (default: 100). Only used when publish_gate is true. |
| run_on_publish | boolean | No | If true, automatically enqueue this eval suite as a background job after every successful publish |
| webhook_url | string | No | HTTPS URL to receive a signed POST when an eval run completes or fails. Set to null to clear. |
| webhook_signing_secret | string | No | Secret used to sign the webhook payload (HMAC-SHA256, X-Chipp-Signature header). Set to null to clear. |
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. Chipp MCP: analytics
| Parameter | Type | Required | Description |
|---|---|---|---|
| eval_id | string | Yes | The evaluation ID |
| name | string | No | New name (optional) |
| test_cases | array | No | New test cases, FULL REPLACEMENT (optional). Single-turn: {input, expected_output}. Scripted per-turn conversation: {turns: [{role, content, expectedResponse?}], tag?}. See create_eval’s test_cases schema for the full shape. Older multi-turn scripted conversation: {user_turns: string[], expected_output (conversation-level criteria), per_turn_criteria?}. |
| evaluation_method | string | No | New evaluation method (optional) |
| publish_gate | boolean | No | Block publish when this suite has never run or scores below publish_pass_threshold |
| publish_pass_threshold | number | No | Score percentage (0-100) required to pass the publish gate (default: 100) |
| run_on_publish | boolean | No | Automatically enqueue this suite as a background job after every successful publish |
| webhook_url | string | No | HTTPS URL to POST when an eval run completes or fails. Null to clear. |
| webhook_signing_secret | string | No | Secret used to sign webhook payloads (HMAC-SHA256). Null to clear. |
delete_eval
Delete an evaluation.
Scope: apps:write. Chipp MCP: analytics
| Parameter | Type | Required | Description |
|---|---|---|---|
| eval_id | string | Yes | The evaluation ID to delete |
run_eval
Run an evaluation against the app to score its responses on the test cases.
Scope: apps:write. Chipp MCP: analytics
| Parameter | Type | Required | Description |
|---|---|---|---|
| eval_id | string | Yes | The evaluation ID to run |
| tag | "smoke" or "regression" or "integration" | No | Only run test cases carrying this tag |
list_eval_results
List past evaluation runs.
Scope: apps:read. Chipp MCP: analytics
| Parameter | Type | Required | Description |
|---|---|---|---|
| eval_id | string | Yes | The evaluation ID |
| limit | number | No | Max results (default 20) |
get_eval_result
Get detailed results from a specific evaluation run.
Scope: apps:read. Chipp MCP: analytics
| Parameter | Type | Required | Description |
|---|---|---|---|
| result_id | string | Yes | The evaluation run ID |
Custom Actions
Manage API integrations for your applications.
list_custom_actions
List all custom actions for an application.
Scope: actions:read. Chipp MCP: actions
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application 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. Chipp MCP: actions
| Parameter | Type | Required | Description |
|---|---|---|---|
| action_id | string | Yes | The custom action ID (from get_app_actions / list_custom_actions) |
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. Chipp MCP: actions
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| name | string | Yes | Action name (used as the tool name for the LLM) |
| description | string | Yes | Description of what this action does |
| url | string | Yes | The HTTP endpoint URL. Use {name} placeholders for path parameters. |
| method | "GET" or "POST" or "PUT" or "DELETE" or "PATCH" | Yes | HTTP method |
| headers | array | No | Request headers as array of {key, value} objects (optional) |
| path_params | array | No | Path parameters as array of {name, description, required} objects (optional). Each name must match a {name} placeholder in the URL (e.g. url ‘https://api.example.com/users/{userId}/orders/{orderId}’ with path_params [{name: ‘userId’, …}, {name: ‘orderId’, …}]). The value is supplied by the model at execution time and URL-encoded into the placeholder — this is a distinct source from an Application Variable or a system variable, and does NOT require creating one. |
| query_params | array | No | Query parameters as array of {name, type, description, required} objects (optional). Each entry may also carry “schema” (Optional structured schema for this parameter’s value (JSON-Schema subset, enforced before the request runs and before any approval card). Arrays: items, minItems, maxItems; objects: properties, required, additionalProperties (true/false); strings: enum, pattern, minLength, maxLength; numbers/integers: minimum, maximum. Nested nodes need a type. Example for an array of orders: {“items”: {“type”: “object”, “properties”: {“ref”: {“type”: “string”}}, “required”: [“ref”], “additionalProperties”: false}, “minItems”: 1, “maxItems”: 50}. Always give an array param an items schema.) and “dryRunIsReadOnly” (Only for a boolean AI-supplied parameter named exactly “dryRun”: true declares that dryRun=true calls are a read-only preview, so they run without a human approval card even when the action requires approval. Default false.) |
| body_params | array | No | Body parameters as array of {name, type, description, required} objects (optional). Each entry may also carry “schema” (Optional structured schema for this parameter’s value (JSON-Schema subset, enforced before the request runs and before any approval card). Arrays: items, minItems, maxItems; objects: properties, required, additionalProperties (true/false); strings: enum, pattern, minLength, maxLength; numbers/integers: minimum, maximum. Nested nodes need a type. Example for an array of orders: {“items”: {“type”: “object”, “properties”: {“ref”: {“type”: “string”}}, “required”: [“ref”], “additionalProperties”: false}, “minItems”: 1, “maxItems”: 50}. Always give an array param an items schema.) and “dryRunIsReadOnly” (Only for a boolean AI-supplied parameter named exactly “dryRun”: true declares that dryRun=true calls are a read-only preview, so they run without a human approval card even when the action requires approval. Default false.) |
| auth | object | No | Authentication for the action. Credentials are referenced by Application Variable name (create them first with create_app_variable, type=‘secret’); never inline a secret here. Fields: type, source, variableName, aiParamKey, aiParamDescription, headerName, valuePrefix, basicUsername, tokenUrl, clientIdVariableName, clientSecretVariableName, scope, clientAuthMethod, certificateVariableName, privateKeyVariableName, assertionAudience, assertionAlgorithm. |
Custom actions have complex schemas. See the Custom Actions Guide for detailed examples.
update_custom_action
Update an existing custom action.
Scope: actions:write. Chipp MCP: actions
| Parameter | Type | Required | Description |
|---|---|---|---|
| action_id | string | Yes | The custom action ID (from get_app_actions / list_custom_actions) |
| name | string | No | Name |
| description | string | No | Description |
| url | string | No | Endpoint URL (absolute https://) |
| method | "GET" or "POST" or "PUT" or "PATCH" or "DELETE" | No | HTTP method |
| headers | array | No | Headers ({name, value}). FULL REPLACEMENT: send every entry to keep, as read_custom_action / get_custom_action returned it. |
| query_params | array | No | Query params ({name, description, type, required}). FULL REPLACEMENT: send every entry to keep, as read_custom_action / get_custom_action returned it. Each entry may also carry “schema” (Optional structured schema for this parameter’s value (JSON-Schema subset, enforced before the request runs and before any approval card). Arrays: items, minItems, maxItems; objects: properties, required, additionalProperties (true/false); strings: enum, pattern, minLength, maxLength; numbers/integers: minimum, maximum. Nested nodes need a type. Example for an array of orders: {“items”: {“type”: “object”, “properties”: {“ref”: {“type”: “string”}}, “required”: [“ref”], “additionalProperties”: false}, “minItems”: 1, “maxItems”: 50}. Always give an array param an items schema.) and “dryRunIsReadOnly” (Only for a boolean AI-supplied parameter named exactly “dryRun”: true declares that dryRun=true calls are a read-only preview, so they run without a human approval card even when the action requires approval. Default false.) |
| body_params | array | No | Body params ({name, description, type, required}). FULL REPLACEMENT: send every entry to keep, as read_custom_action / get_custom_action returned it. Each entry may also carry “schema” (Optional structured schema for this parameter’s value (JSON-Schema subset, enforced before the request runs and before any approval card). Arrays: items, minItems, maxItems; objects: properties, required, additionalProperties (true/false); strings: enum, pattern, minLength, maxLength; numbers/integers: minimum, maximum. Nested nodes need a type. Example for an array of orders: {“items”: {“type”: “object”, “properties”: {“ref”: {“type”: “string”}}, “required”: [“ref”], “additionalProperties”: false}, “minItems”: 1, “maxItems”: 50}. Always give an array param an items schema.) and “dryRunIsReadOnly” (Only for a boolean AI-supplied parameter named exactly “dryRun”: true declares that dryRun=true calls are a read-only preview, so they run without a human approval card even when the action requires approval. Default false.) |
| path_params | array | No | Path params ({name, description, required}); each name matches a {name} placeholder in the url. FULL REPLACEMENT: send every entry to keep, as read_custom_action / get_custom_action returned it. |
| auth | object | No | Authentication for the action. Credentials are referenced by Application Variable name (create them first with create_app_variable, type=‘secret’); never inline a secret here. Omit to keep it; send to replace it entirely; null clears it. Fields: type, source, variableName, aiParamKey, aiParamDescription, headerName, valuePrefix, basicUsername, tokenUrl, clientIdVariableName, clientSecretVariableName, scope, clientAuthMethod, certificateVariableName, privateKeyVariableName, assertionAudience, assertionAlgorithm. |
| reasoning | string | No | Brief explanation |
It also needs write access to Custom Actions in the app’s workspace.
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. Chipp MCP: actions
| Parameter | Type | Required | Description |
|---|---|---|---|
| action_id | string | Yes | The custom action ID to delete |
test_custom_action
Test a custom action by executing it with sample parameters.
Scope: actions:write. Chipp MCP: actions
| Parameter | Type | Required | Description |
|---|---|---|---|
| action_id | string | Yes | The custom action ID to test |
| parameters | object | No | Parameter values to send with the test request (optional) |
| external_id | string | No | Optional value to simulate {{system.external_id}} for this test call. Omit to test as an anonymous session — an action that references {{system.external_id}} will then be blocked with a field-specific notice instead of silently sending an empty value. |
MCP Integrations
Connect external MCP servers to your applications.
list_mcp_integrations
List all connected MCP servers for an application.
Scope: actions:read. Chipp MCP: integrations
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
get_mcp_integration
Get details about a connected MCP server.
Scope: actions:read. Chipp MCP: integrations
| Parameter | Type | Required | Description |
|---|---|---|---|
| integration_id | string | Yes | The integration ID |
| app_id | string | Yes | The application ID |
connect_mcp_server
Connect an external MCP server to an application.
Scope: actions:write. Chipp MCP: integrations
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| server_url | string | Yes | The MCP server URL (must be HTTPS) |
| name | string | No | Display name for this integration (optional) |
| auth_type | string | No | Authentication type: NONE, BEARER, or OAUTH (default: NONE) |
| auth_token | string | No | Bearer token for authentication (if auth_type is BEARER) |
update_mcp_integration_tools
Enable or disable the entire MCP integration, or toggle specific tools by name.
Scope: actions:write. Chipp MCP: integrations
| Parameter | Type | Required | Description |
|---|---|---|---|
| integration_id | string | Yes | The integration ID |
| app_id | string | Yes | The application ID |
| is_active | boolean | No | Enable or disable the entire integration (optional) |
| enabled_tools | string[] | No | List of tool names to enable. Tools not in this list will be disabled. Use list_mcp_integrations or get_mcp_integration to see available tool names. (optional) |
disconnect_mcp_server
Remove an MCP server connection.
Scope: actions:write. Chipp MCP: integrations
| Parameter | Type | Required | Description |
|---|---|---|---|
| integration_id | string | Yes | The integration ID to disconnect |
| app_id | string | Yes | The application ID |
list_hosted_integrations
List hosted integration providers connected to an app (Google Drive, Gmail, Outlook, OneDrive, Slack, and others).
Scope: apps:read. Chipp MCP: integrations
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The 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. Chipp MCP: actions
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The 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. Chipp MCP: actions
| Parameter | Type | Required | Description |
|---|---|---|---|
| component_id | string | Yes | The custom 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. Chipp MCP: actions
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID that will own this component |
| name | string | Yes | PascalCase component name (e.g. ProductCard). Maps to the consumer-chat tool name render_\<snake_case>. |
| code | string | Yes | HTML fragment with embedded <style> and <script> tags. Max 100,000 characters. Dangerous patterns are sanitized. |
| props_schema | array | No | Optional array of {name, type, description, required} objects describing the props the component expects via window.chipp.props. |
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. Chipp MCP: actions
| Parameter | Type | Required | Description |
|---|---|---|---|
| component_id | string | Yes | The custom component ID to update |
| name | string | No | New component name (optional) |
| code | string | No | New code (optional). Max 100,000 characters. Dangerous patterns are sanitized. |
| props_schema | array | No | New props schema (optional) |
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. Chipp MCP: actions
| Parameter | Type | Required | Description |
|---|---|---|---|
| component_id | string | Yes | The custom component ID to delete |
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. Chipp MCP: actions
| Parameter | Type | Required | Description |
|---|---|---|---|
| source_component_id | string | Yes | The component to copy from |
| target_app_id | string | Yes | The application to copy the component into |
| name | string | No | Optional new name for the copied component. Defaults to the source component’s 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. Chipp MCP: actions
| Parameter | Type | Required | Description |
|---|---|---|---|
| component_id | string | Yes | The shared component to link |
| target_app_id | string | Yes | The application to link the component to |
unlink_component
Unlink a shared component from an application. Idempotent: unlinking a non-existent link returns already_unlinked: true.
Scope: components:write. Chipp MCP: actions
| Parameter | Type | Required | Description |
|---|---|---|---|
| component_id | string | Yes | The component whose link should be removed |
| target_app_id | string | Yes | The application to unlink the component 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. Chipp MCP: actions
| Parameter | Type | Required | Description |
|---|---|---|---|
| component_id | string | Yes | The component whose sharing scope should change |
| sharing_scope | "PRIVATE" or "WORKSPACE" or "ORGANIZATION" | Yes | The new sharing scope |
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. Chipp MCP: actions
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application whose shared-component options you want to list |
| include_org | boolean | No | Include ORGANIZATION-scoped components from the same org. Defaults to auto-detect via the orgComponents capability. |
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. Chipp MCP: actions
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application whose linked components you want |
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. Chipp MCP: channels
No parameters.
get_slack_deployment
Get the Slack integration config for an app.
Scope: apps:read. Chipp MCP: channels
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
list_slack_installations
List available Slack workspaces that have been connected to any app in your organization. Takes no parameters.
Scope: apps:read. Chipp MCP: channels
No parameters.
connect_slack_deployment
Connect an app to a Slack workspace.
Scope: apps:write. Chipp MCP: channels
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The 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 (e.g. C08QUQF1PL0). When provided, heartbeat will post 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 the Slack connection from an app.
Scope: apps:write. Chipp MCP: channels
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
get_whatsapp_deployment
Get WhatsApp business configuration.
Scope: apps:read. Chipp MCP: channels
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
get_voice_config
Get voice agent configuration.
Scope: apps:read. Chipp MCP: channels
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
update_voice_config
Update voice agent settings.
Scope: apps:write. Chipp MCP: channels
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| voice_enabled | boolean | No | Enable/disable voice agent |
| voice_greeting | string | No | Greeting text when voice session starts |
| voice_stack_tier | string | No | Voice pipeline tier (optional) |
get_email_deployment
Get email channel configuration.
Scope: apps:read. Chipp MCP: channels
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
update_email_deployment
Update email channel settings.
Scope: apps:write. Chipp MCP: channels
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| is_active | boolean | No | Enable or disable the email channel |
| from_name | string | No | Sender display name (the ‘From’ name in emails) |
| outbound_policy | "allow_replies" or "read_only" or "moderated" | No | Alias-level outbound send policy: allow_replies | read_only | moderated. |
| moderation_mailbox_address | string | No | Destination mailbox for a moderated policy’s redirected sends. Must be a real, deliverable address — never a placeholder. Pass an empty string to clear it (only valid when neither the alias default nor any exception rule still needs it). |
| outbound_policy_exceptions | object[] | No | Ordered per-scope override rules. Replaces the full stored list. Each item: { match_key: envelope_recipient|inbound_alias|subject_token, match_value: string, policy: allow_replies|read_only|moderated, moderation_mailbox_address?: string }. Fields: match_key, match_value, policy, moderation_mailbox_address. |
get_discord_deployment
Get the Discord bot integration status for an app.
Scope: apps:read. Chipp MCP: channels
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The 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. Chipp MCP: channels
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The 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. Chipp MCP: analytics
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| search | string | No | Search by name, email, or identifier (optional) |
| has_email | boolean | No | Filter to consumers with/without email (optional) |
| sort_by | string | No | Sort field: created_at, credits, name, email (default: created_at) |
| sort_dir | string | No | Sort direction: 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. Chipp MCP: analytics
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| consumer_id | string | Yes | The consumer ID |
update_consumer
Update a consumer’s credit balance or subscription status.
Scope: apps:write. Chipp MCP: analytics
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| consumer_id | string | Yes | The consumer ID |
| credits | number | No | Set the consumer’s credit balance (integer >= 0) |
| subscription_active | boolean | No | Enable or disable the consumer’s 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. Chipp MCP: analytics
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| consumer_id | string | Yes | The consumer ID |
| memory_type | string | No | Filter by memory type (optional) |
| limit | number | No | Max 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. Chipp MCP: core
| Parameter | Type | Required | Description |
|---|---|---|---|
| limit | number | No | Max workspaces to return (default 20, max 100) |
| offset | number | No | Pagination offset (default 0) |
| search | string | No | Filter workspaces by name (case-insensitive substring match, optional) |
get_workspace
Get details about a specific workspace.
Scope: workspace:read. Chipp MCP: core
| Parameter | Type | Required | Description |
|---|---|---|---|
| workspace_id | string | Yes | The workspace ID |
list_workspace_members
List members of a workspace.
Scope: workspace:read. Chipp MCP: core
| Parameter | Type | Required | Description |
|---|---|---|---|
| workspace_id | string | Yes | The workspace ID |
create_workspace
Create a new workspace in your organization.
Scope: workspace:write. Chipp MCP: core
| Parameter | Type | Required | Description |
|---|---|---|---|
| name | string | Yes | Workspace name |
| organization_id | string | No | Organization to create the workspace in. Required when you belong to multiple organizations. Use list_workspaces or get_me to find your organization IDs. |
Example:
"Create a new workspace called Marketing"Billing
View subscription and credit information.
get_subscription
Get subscription details for an organization.
Scope: billing:read. Chipp MCP: billing
No parameters.
get_credits
Get credit balance and usage.
Scope: billing:read. Chipp MCP: billing
No parameters.
get_usage
Get LLM token usage and non-LLM usage events for the organization.
Scope: billing:read. Chipp MCP: billing
| Parameter | Type | Required | Description |
|---|---|---|---|
| since | string | No | ISO date to filter from (optional, 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. Chipp MCP: billing
| Parameter | Type | Required | Description |
|---|---|---|---|
| since | string | No | ISO date to filter from (optional, 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. Chipp MCP: billing
No parameters.
Prompt Engineering
AI-assisted tools for improving prompts and selecting models.
list_available_models
List all AI models available for use.
Scope: apps:read. Chipp MCP: apps
No parameters.
generate_system_prompt
Generate a new system prompt from a description.
Scope: apps:write. Chipp MCP: apps
| Parameter | Type | Required | Description |
|---|---|---|---|
| description | string | Yes | A description of what the AI app should do, its personality, and target audience |
| tone | string | No | Desired tone: professional, friendly, technical, casual (optional) |
improve_system_prompt
Use AI to analyze and improve an existing system prompt.
Scope: apps:write. Chipp MCP: apps
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_prompt | string | Yes | The current system prompt to improve |
| focus | string | No | What to focus improvement on: clarity, safety, personality, instructions, all (default: all) |
recommend_model
Get AI-powered model recommendations for your use case.
Scope: apps:read. Chipp MCP: apps
| Parameter | Type | Required | Description |
|---|---|---|---|
| use_case | string | Yes | Description of the use case (e.g., customer support, code generation, creative writing) |
| priority | string | No | Priority: quality, speed, 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. Chipp MCP: apps
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID to generate suggestions for |
| count | number | No | Number of suggestions to generate (default 4, max 10) |
| style | string | No | Style of suggestions: question (asks the AI something), task (asks the AI to do something), exploratory (open-ended). 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. Chipp MCP: actions
| Parameter | Type | Required | Description |
|---|---|---|---|
| workspace_id | string | No | Filter by workspace (optional) |
get_action_collection
Get details for a specific action collection.
Scope: actions:read. Chipp MCP: actions
| Parameter | Type | Required | Description |
|---|---|---|---|
| collection_id | string | Yes | The collection ID |
create_action_collection
Create a new action collection.
Scope: actions:write. Chipp MCP: actions
| Parameter | Type | Required | Description |
|---|---|---|---|
| name | string | Yes | Collection name |
| description | string | Yes | Collection description |
| workspace_id | string | No | Workspace to create the collection in (optional) |
update_action_collection
Update an action collection’s name or description.
Scope: actions:write. Chipp MCP: actions
| Parameter | Type | Required | Description |
|---|---|---|---|
| collection_id | string | Yes | The collection ID |
| name | string | No | New collection name (optional) |
| description | string | No | New collection description (optional) |
delete_action_collection
Delete an action collection. Also removes it from any linked apps.
Scope: actions:write. Chipp MCP: actions
| Parameter | Type | Required | Description |
|---|---|---|---|
| collection_id | string | Yes | The collection ID to delete |
link_collection_to_app
Link an action collection to an application, making its actions available.
Scope: actions:write. Chipp MCP: actions
| Parameter | Type | Required | Description |
|---|---|---|---|
| collection_id | string | Yes | The collection ID to link |
| app_id | string | Yes | The application ID |
unlink_collection_from_app
Remove an action collection from an application.
Scope: actions:write. Chipp MCP: actions
| Parameter | Type | Required | Description |
|---|---|---|---|
| collection_id | string | Yes | The collection ID to unlink |
| app_id | string | Yes | The application ID |
list_linked_collections
List all action collections linked to a specific application.
Scope: actions:read. Chipp MCP: actions
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
update_collection_sharing
Update the sharing scope of an action collection.
Scope: actions:write. Chipp MCP: actions
| Parameter | Type | Required | Description |
|---|---|---|---|
| collection_id | string | Yes | The collection ID |
| sharing_scope | string | Yes | New sharing scope: 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. Chipp MCP: actions
| Parameter | Type | Required | Description |
|---|---|---|---|
| collection_id | string | Yes | The collection ID to import from |
| app_id | string | Yes | The application ID to import tools 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. Chipp MCP: apps
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
get_app_variable
Get details for a specific application variable.
Scope: apps:read. Chipp MCP: apps
| Parameter | Type | Required | Description |
|---|---|---|---|
| variable_id | string | Yes | The variable ID |
create_app_variable
Create a new application variable.
Scope: apps:write. Chipp MCP: apps
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| name | string | Yes | Variable name (machine-readable, e.g. API_KEY, BASE_URL) |
| label | string | Yes | Human-readable label (e.g. API Key, Base URL) |
| type | string | No | Value type: string, number, boolean (default: string) |
| value | string | Yes | Variable value |
| description | string | No | Description of what this variable is used for (optional) |
| required | boolean | No | Whether this variable is required (default: false) |
| is_encrypted | boolean | No | Whether to encrypt the value at rest (use for secrets, default: false) |
| placeholder | string | No | Placeholder text shown in UI (optional) |
update_app_variable
Update an application variable’s value, label, or description.
Scope: apps:write. Chipp MCP: apps
| Parameter | Type | Required | Description |
|---|---|---|---|
| variable_id | string | Yes | The variable ID to update |
| value | string | No | New variable value (optional) |
| label | string | No | New display label (optional) |
| description | string | No | New description (optional) |
| required | boolean | No | Whether this variable is required (optional) |
delete_app_variable
Delete an application variable.
Scope: apps:write. Chipp MCP: apps
| Parameter | Type | Required | Description |
|---|---|---|---|
| variable_id | string | Yes | The variable ID to delete |
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. Chipp MCP: channels
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application 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. Chipp MCP: channels
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| enabled | boolean | No | Enable or disable heartbeat |
| every | string | No | Interval between heartbeats (e.g. ‘30m’, ‘1h’, ‘4h’, ‘1d’) |
| prompt | string | No | Custom prompt for heartbeat messages (optional) |
| checklist | string | No | Checklist/criteria for what the heartbeat should check (optional) |
| targets | array of ("whatsapp" or "slack" or "email" or "webchat" or "webhook" or "sms" or "imessage" or "google_chat" or "push") | No | Delivery channels (optional). push sends to the Chipp iPhone app of each recipient who is a Chipp user with access to this app. |
| model | string | No | LLM model to use for heartbeat messages (optional) |
| timezone | string | No | IANA timezone for the heartbeat, e.g. ‘America/New_York’ (optional) |
| schedules | object[] | No | Named schedules (optional, up to 10), each with its own prompt and timing. Replaces the whole list: to remove one schedule, read the list with get_heartbeat_config and pass it back without that entry. Keep each existing schedule’s id. Pass [] to clear. Once any named schedule exists, only the named schedules run (the top-level schedule stops). A field a schedule omits keeps its stored value for skipTriage, requiresSourceData, scope, additionalRecipients, slackChannels, recipientsMode, maxSteps and interruptRetry; pass null to clear one. scope ‘app_wide’ runs a schedule ONCE per occurrence for the whole app (as the app’s service identity, so browser and project tools work) and delivers only to the schedule’s own additionalRecipients / slackChannels; maxSteps (up to 80, above 15 only for app_wide) sets its tool-step budget; interruptRetry (app_wide only, default false) runs an occurrence cut off by a server shutdown again once, for a schedule whose tools are safe to repeat. A tool that works through a list in batches returns a top-level pendingWork: { remaining: number, next: string } on the response that knows the true count and remaining: 0 when done (the newest result carrying it, from any tool, wins); a scheduled run then continues (bounded, within maxSteps) instead of ending early with nothing to report. Fields: id, name, prompt, enabled, schedule, every, model, targets, activeHours, executionMode, errorAlert, subjectTemplate, alwaysDeliverScheduledReport, skipTriage, requiresSourceData, scope, additionalRecipients, slackChannels, recipientsMode, maxSteps, interruptRetry. |
| slack_channels | object[] | No | Slack channels to post heartbeat broadcasts to (non-consumer, channel-level). Requires a Slack workspace connected via connect_slack_deployment. Replaces existing slack_channels if provided. Fields: channel_id, channel_name. |
list_heartbeat_runs
List recent heartbeat runs for an app. Shows which consumers were contacted and outcomes.
Scope: analytics:read. Chipp MCP: channels
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| limit | number | No | Max results (default 20) |
trigger_heartbeat
Manually trigger a heartbeat run for an app.
Scope: apps:write. Chipp MCP: channels
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The 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. Chipp MCP: apps
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
list_available_agents
List agents available to link to an app (apps in the same organization not already linked).
Scope: apps:read. Chipp MCP: apps
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| all_workspaces | boolean | No | If true, list available agents across every workspace in the source app’s organization that the caller can access. Defaults to false. |
| workspace_ids | string[] | No | Limit the search to specific workspace ids in the source app’s organization. Stale or inaccessible ids are silently dropped. Ignored when all_workspaces is true. |
link_agent
Link another agent (app) to this app so it can be called as a tool during chat.
Scope: apps:write. Chipp MCP: apps
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The source application ID (the app that will call the agent) |
| target_app_id | string | Yes | The target application ID (the agent to link). Use list_available_agents (with all_workspaces: true to span workspaces) to find options. |
Example:
"Link the 'Booking Agent' app to my 'Customer Support' app"unlink_agent
Remove an agent link from an app.
Scope: apps:write. Chipp MCP: apps
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The source application ID |
| target_app_id | string | Yes | The target application ID to unlink |
App Agents
An app can hold several user-facing agents. End users pick one in the chat, and each agent has its own instructions, allowed tools, and display settings. Every agent has a stable agent_id: tools change an agent by that id, never by its name. The default agent serves app links, embeds, and channels that name no agent.
list_app_agents
List the agents inside an app, with their stable ids.
Scope: apps:read. Chipp MCP: apps
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
sync_app_agent
Create an agent (omit agent_id) or update exactly one agent (pass its agent_id). Other agents are never changed. Creating with a name that is already taken returns the existing agent with already_exists: true and changes nothing.
Scope: apps:write. Chipp MCP: apps
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| agent_id | string | No | The agent’s stable id. Omit to create a new agent. |
| name | string | No | Display name. Required to create. |
| description | string | No | One line shown to end users in the agent picker. |
| instructions | string | No | The agent’s own instructions (system prompt). null = use the app’s instructions. |
| enabled_tools | string[] | No | Tool names this agent may call. null = every tool the app has. [] = no tools. |
| display_config | object | No | Optional display settings: label (short), icon (an emoji), avatarUrl (https), color (#rrggbb). Fields: label, icon, avatarUrl, color. |
| is_enabled | boolean | No | Show this agent to end users. The default agent is always on. |
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. Chipp MCP: actions
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
get_database_connection
Get details about a database connection.
Scope: apps:read. Chipp MCP: actions
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| connection_id | string | Yes | The connection ID |
create_database_connection
Create a new external database connection for an app. Connection strings are encrypted at rest.
Scope: apps:write. Chipp MCP: actions
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| name | string | Yes | Display name for the connection |
| db_type | string | Yes | Database type: postgres, mysql, mssql, bigquery, snowflake, clickhouse |
| connection_string | string | Yes | Connection string/DSN (will be encrypted at rest) |
| default_access_level | string | No | Default access: read or read_write (default: read) |
| allowed_tables | string[] | No | Restrict access to specific tables (optional, 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. Chipp MCP: actions
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| connection_id | string | Yes | The connection ID |
test_database_connection
Test a database connection and discover its schema (tables, columns, types).
Scope: apps:write. Chipp MCP: actions
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| connection_id | string | Yes | The 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. Chipp MCP: billing
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
create_consumer_package
Create a new credit package for consumer purchase. Supports one-time and subscription packages.
Scope: apps:write. Chipp MCP: billing
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| name | string | Yes | Package name (e.g. ‘Starter Pack’) |
| type | string | Yes | Package type: ONE_TIME or SUBSCRIPTION |
| credits | number | Yes | Number of credits in the package. For ONE_TIME packages, must be a positive number greater than zero (a zero-credit one-time package can be sold in Stripe but grants nothing on fulfillment and will be rejected at creation). For SUBSCRIPTION packages, 0 is valid and means unlimited access (the subscriber’s access comes from the subscription status, not a credit allotment). |
| price_cents | number | Yes | Price in cents (e.g. 999 = $9.99) |
| description | string | No | Package description (optional) |
| 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. Chipp MCP: billing
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| package_id | string | Yes | The package ID |
| name | string | No | New name (optional) |
| credits | number | No | New credit amount (optional). For ONE_TIME packages, must be a positive number greater than zero if provided. For SUBSCRIPTION packages, 0 is valid (unlimited-access pattern). |
| price_cents | number | No | New price in cents (optional) |
| description | string | No | New description (optional) |
| is_active | boolean | No | Enable/disable (optional) |
| status | string | No | Status: DRAFT or PUBLISHED (optional) |
| sort_order | number | No | New display order (optional) |
delete_consumer_package
Delete a consumer credit package (soft delete).
Scope: apps:write. Chipp MCP: billing
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| package_id | string | Yes | The package ID |
get_monetization_stats
Get monetization analytics for an app: total revenue, purchases, active subscriptions, and unique customers.
Scope: analytics:read. Chipp MCP: billing
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The 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. Chipp MCP: apps
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| session_id | string | No | Continue an existing session (optional). Mutually exclusive with external_id for new sessions. |
| external_id | string | No | Stable identifier to dedupe sessions across calls. Recommended for cross-call conversation threading. For WhatsApp use the format ‘whatsapp:<phone>:<app_id>‘. |
| channel | "api" or "custom" or "whatsapp" or "sms" or "imessage" or "telegram" or "discord" or "teams" or "slack" or "email" | No | Channel this conversation is happening on. Drives the source badge in the Conversations tab and the consumer identifier format. Default ‘api’. |
| consumer | object | No | Information about the end user on the other side of the conversation. Omit for anonymous sessions. Fields: channel_user_id, email, name. |
| messages | object[] | Yes | Ordered list of user/assistant turns to append. Fields: role, content, model. |
| title | string | No | Title for the session (only used on creation). |
| notify_subscribers | boolean | No | Fire app-level chat notifications. Default true. Subject to the per-app Email notifications toggle. |
| detect_tags | boolean | No | Run tag detection on user messages. Default true. Automatically skipped in ZDR mode. |
| client_request_id | string | No | Idempotency key. Replaying the same id within 10 minutes returns the cached result without re-inserting. |
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. Chipp MCP: apps
| Parameter | Type | Required | Description |
|---|---|---|---|
| terms | string[] | Yes | 1-10 words or names for the capability, e.g. [‘calendar’, ‘google calendar’, ‘outlook’]. Matched case-insensitively against provider names/keys/aliases/categories, channel and built-in names, custom action names/hosts, MCP server names/hosts, and knowledge source names/types. |
| families | array of ("hosted_integration" or "custom_action" or "mcp_integration" or "knowledge_source" or "channel" or "builtin") | No | Optional: only search these capability families. Omit to search all. |
| limit | number | No | Max agents to return (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. Chipp MCP: integrations
| Parameter | Type | Required | Description |
|---|---|---|---|
| query | string | Yes | Provider name, key or alias, e.g. ‘GoHighLevel’, ‘GHL’, ‘Notion’, ‘HubSpot’. |
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. Chipp MCP: app-settings
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| string | Yes | Email address | |
| name | string | No | Optional display name for who was added |
| expires_in_days | number | No | Optional days until this entry expires. Omit for permanent access. |
remove_whitelisted_email
Remove an email from an app’s access whitelist. Idempotent.
Scope: apps:write. Chipp MCP: app-settings
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| string | Yes | Email 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. Chipp MCP: apps
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| target_workspace_id | string | Yes | Target 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. Chipp MCP: apps
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application 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. Chipp MCP: app-settings
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| enabled | boolean | Yes | true to show Receipt Sync in the consumer menu; false to hide it 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. Chipp MCP: app-settings
| Parameter | Type | Required | Description |
|---|---|---|---|
| workspace_id | string | Yes | The workspace 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. Chipp MCP: app-settings
| Parameter | Type | Required | Description |
|---|---|---|---|
| workspace_id | string | Yes | The workspace ID |
| defaults | object | Yes | Full defaults bag (replace-whole). Send null for a field to clear it. Fields: 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. Chipp MCP: integrations
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| integration_id | string | Yes | MCP integration ID |
| is_active | boolean | Yes | true = enable, false = 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. Chipp MCP: integrations
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| provider_key | string | Yes | The provider key from availableHostedProviders (e.g. ‘bible’, ‘strata’, ‘steel’) |
| enabled | boolean | Yes | true to enable the integration for the app, false to disable it |
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. Chipp MCP: integrations
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| provider | "gmail" or "google-drive" or "google-calendar" or "google-sheets" | Yes | The Factory-curated integration to enable or disable for the app’s signed-in end users. |
| enabled | boolean | Yes | true to let end users connect their own account, false to turn it off |
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. Chipp MCP: app-settings
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| integration_id | string | Yes | The Vanta MCP integration ID (from get_app_actions) |
| enabled | boolean | Yes | true = approval-gated writes on, false = read-only |
add_sitemap_source
Add a sitemap as a knowledge source that adds newly published pages on each scheduled refresh.
Scope: knowledge:write. Chipp MCP: knowledge
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| sitemap_url | string | Yes | Full sitemap URL, e.g. https://example.com/sitemap.xml |
| refresh_interval_hours | 1 or 6 or 12 or 24 or 48 or 168 | No | How often to re-check for new URLs, in hours (168 = weekly). Default 24. null disables auto-refresh. |
| include_paths | string[] | No | Only ingest URLs containing one of these substrings (e.g. [‘/p/’, ‘/post/’]). Omit for all. |
| exclude_paths | string[] | No | Skip URLs containing any of these substrings (e.g. [‘/about’, ‘/archive’]). Applied after include_paths. |
update_knowledge_source
Rename a knowledge source and/or set its auto-refresh interval.
Scope: knowledge:write. Chipp MCP: knowledge
| Parameter | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | The application ID |
| source_id | string | Yes | Knowledge source ID |
| name | string | No | New display name (optional) |
| refresh_interval_hours | 1 or 6 or 12 or 24 or 48 or 168 | No | Auto-refresh interval in hours: 1, 6, 12, 24 (daily), 48, 168 (weekly). 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.
Scope: none (any valid token). Chipp MCP: core
No parameters.
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.)
Scope: none (any valid token). Chipp MCP: core
| Parameter | Type | Required | Description |
|---|---|---|---|
| query | string | Yes | Natural language search query describing what you want to know |
| limit | number | No | Number of results to return (default 5, max 10) |
get_book
Read Chipp’s book Autonomous Development. With no arguments it returns the book’s metadata and table of contents. With chapter it returns one page of that chapter’s markdown; with query it returns the best passages, each with a citation. The full text is for paying Chipp users: when your organization is on a paid plan you get chapter text and full passages; otherwise you get the table of contents and short cited snippets, and chapter reads answer BOOK_REQUIRES_PAID_PLAN.
Scope: none (any valid token). Chipp MCP: core
| Parameter | Type | Required | Description |
|---|---|---|---|
| chapter | string | No | Chapter id (from the table of contents), or a chapter number such as “6”. |
| section | string | No | A section id of that chapter (from the table of contents): read only that section. |
| query | string | No | A question or search words; returns cited passages from the book only. |
| include_toc | boolean | No | Include the table of contents with a chapter or query result. |
| toc_depth | 2 or 3 | No | Headings in the table of contents: 2 (default) lists each chapter’s ## sections; 3 adds the ### sections. |
| max_chars | number | No | Characters of chapter text per page (default 12000). |
| cursor | string | No | next_cursor from a previous chapter page. |
Appendix
Permission Scopes
A write scope also grants its read scope.
| Scope | Allows | Tools |
|---|---|---|
apps:read | View your apps: See your app configurations, settings, and prompts | 44 |
apps:write | Manage your apps: Create, update, and delete applications | 56 |
knowledge:read | View knowledge sources: Access your uploaded documents and training data | 11 |
knowledge:write | Manage knowledge: Upload, update, and delete knowledge sources | 10 |
actions:read | View custom actions: See your API integrations and action configurations | 7 |
actions:write | Manage custom actions: Create, update, and delete API integrations | 18 |
components:read | View custom components: See your custom UI components (Component Studio) | 4 |
components:write | Manage custom components: Create, update, delete, and share custom UI components (Component Studio) | 7 |
workspace:read | View workspace: See workspace settings, members, and organization info | 9 |
workspace:write | Manage workspaces: Create and update workspaces in your organization | 13 |
billing:read | View billing info: Access subscription status and usage information | 5 |
analytics:read | View analytics: Access conversation history and usage statistics | 19 |
analytics:write | Log conversations: Push external chat turns into the Conversations tab (for n8n / Zapier / custom pipelines) | 1 |
agents:chat | Chat with agents: Send messages to your hosted agents over their own MCP endpoint. The agent decides what to do and can use its own tools | 0 |
* | Every scope above | all |
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