HomeDocumentation

MCP Server Integration

ChatReact implements the Model Context Protocol (MCP), allowing you to connect your ChatReact account to AI assistants like Claude Desktop, Cursor, and other MCP-compatible tools.

What is MCP?

The Model Context Protocol is an open standard that enables AI assistants to interact with external services and data sources. With ChatReact's MCP integration, you can:

  • Manage chatbots — create, configure (persona, languages, widget, behavior, restrictions), embed and delete chatbots
  • Build the knowledge base — add documents, crawl websites, manage crawled pages and core instructions
  • Manage FAQs — FAQs, categories, suggestions, translations and the FAQ widget
  • Review chats — rate conversations, assign confidence categories, run the Improvement Agent
  • Work with leads and forms — leads, lead categories, capture settings, contact forms and submissions
  • Act as a live chat agent — set your availability, take over waiting chats, reply and close sessions
  • Administer your company — profile, brand colors, team members and invitations
  • Use the Email Assistant — mailbox connections, categories, contacts and activity
  • Read analytics and notifications

Everything you can do in the dashboard is available through MCP (and the REST API); only browser-bound actions such as payments, mailbox OAuth, passkeys, account deletion and API key management stay in the dashboard.

Getting Started

1. Generate an API Key

  1. Navigate to your Dashboard → Company → API tab
  2. Click Create API Key
  3. Give your key a descriptive name (e.g., "Claude Desktop") and select at least one permission
  4. Copy the generated key (starts with cr_)

API keys are available on paid plans — see our Pricing page.

Store your API key securely. It cannot be retrieved after creation.

2. Configure Your MCP Client

The ChatReact MCP server is hosted at https://www.chatreact.ai/api/mcp and communicates over HTTP (JSON-RPC). Authenticate with an Authorization: Bearer header — an X-API-Key header with the same key is also accepted.

Cursor IDE

Cursor supports remote MCP servers directly. Add to your Cursor MCP settings:

{
  "mcpServers": {
    "chatreact": {
      "url": "https://www.chatreact.ai/api/mcp",
      "headers": {
        "Authorization": "Bearer cr_your_api_key_here"
      }
    }
  }
}

Claude Desktop

Claude Desktop's configuration file supports command-based servers, so use the standard mcp-remote bridge to connect to the hosted endpoint:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "chatreact": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://www.chatreact.ai/api/mcp",
        "--header",
        "X-API-Key:cr_your_api_key_here"
      ]
    }
  }
}

This setup requires Node.js to be installed. The example uses the X-API-Key header because some clients don't handle spaces in arguments reliably.

3. Restart Your AI Assistant

After saving the configuration, restart Claude Desktop or Cursor to establish the connection.

Available Tools

ChatReact MCP exposes the tools below, grouped by area. The Scope column shows the API key permission a tool requires (any = every valid key). Everything the dashboard can do is available here as well; tools run with the same permissions, plan limits and side effects as the dashboard.

Destructive tools (delete, reset, close, merge) ask for confirmation when used through the Dashboard Assistant. Via API key they execute immediately.

Account

ToolDescriptionScope
account_usage_getGet the current plan (tier, status), the current billing period's usage counters (companies, chatbots, team members, chats, tokens) and the plan limits, plus the effective limits and feature flags of the company the call is scoped to.any
user_companiesList all companies the current user has access to, with the user's role in each.any
user_notification_mark_readMark one of the current user's notifications as read.any
user_notification_preferences_getGet the current user's notification preferences: global email/push toggles, digest frequency/time/weekday/timezone, quiet hours and per-type channel settings.any
user_notification_preferences_updateUpdate the current user's global notification preferences (email/push toggles, digest schedule, quiet hours).any
user_notification_type_setting_updateEnable or disable email / in-app delivery for a single notification type of the current user (e.g.any
user_notification_types_listList all notification types grouped by category (chatbot, leads, live chat, knowledge, team, billing).any
user_notification_unread_countGet the number of unread notifications of the current user.any
user_notificationsList the current user's notifications, newest first, with cursor pagination.any
user_notifications_delete_oldHousekeeping: permanently delete the current user's notifications that are already read and older than 30 days.any
user_notifications_mark_all_readMark all of the current user's notifications as read.any
user_profileGet the current user's profile (id, name, email, role, subscription tier).any

Company & Team

ToolDescriptionScope
company_chatbots_listList all chatbots for a specific company with summary stats.chatbots:read
company_getGet detailed information about a company: profile, owner, brand settings (colors, notification email) and counts.any
company_invite_cancelCancel (delete) a team invitation so the link stops working.company:write
company_invite_resendResend a pending team invitation: issues a new token, extends the expiry by 7 days and sends the invitation email again.company:write
company_invites_listList team invitations of a company (pending by default; set includeExpired to also return expired ones).company:read
company_listList all companies the user has access to (API keys and the Dashboard Assistant only see their own company).any
company_logo_removeRemove the company logo (deletes the stored image and clears the logo URL).company:write
company_member_inviteInvite a team member by email with a role (ADMIN, MANAGER, AGENT or VIEWER).company:write
company_member_removeRemove a team member from the company.company:write
company_member_update_roleChange a team member's role (ADMIN, MANAGER, AGENT or VIEWER).company:write
company_members_listList the members of a company with their roles (OWNER, ADMIN, MANAGER, AGENT, VIEWER).any
company_settings_updateUpdate company brand settings: primaryColor / secondaryColor (#RRGGBB) and the notificationEmail for chat reviews.company:write
company_updateUpdate the company profile: name (2-100 chars), description (max 1000 chars) or website (https:// is added automatically; pass an empty string to clear website/description).company:write

Chatbot Management

ToolDescriptionScope
chatbot_add_instructionAdd a new core instruction to a chatbot (1-5000 chars).chatbots:write
chatbot_confirm_embedMark a chatbot as embedded on the website (hides the setup reminder in the dashboard).chatbots:write
chatbot_createCreate a new chatbot (same as the dashboard wizard).chatbots:write
chatbot_deletePermanently delete a chatbot with all its FAQs, documents, chats, leads and forms (cannot be undone).chatbots:write
chatbot_delete_instructionDelete a core instruction from a chatbot.chatbots:write
chatbot_getGet detailed information about a chatbot: general settings, personality (persona, tonality, languages, restrictions), widget settings, live chat, learning phase, embed status and counts.chatbots:read
chatbot_get_embed_codeGet the HTML snippet to install a chatbot on a website (script URL + <script> tag) and whether the embed has been confirmed.chatbots:read
chatbot_get_instructionsGet all core instructions for a chatbot.chatbots:read
chatbot_improve_instructionsRewrite core-instruction text with the platform's AI improver (same as the dashboard's 'Improve with AI').chatbots:write
chatbot_learning_phase_getGet the learning-phase settings of a chatbot: behaviour preset (CAUTIOUS, BALANCED, CONFIDENT), custom prompt and whether the bot is still in the learning phase.chatbots:read
chatbot_learning_phase_updateSet the learning-phase behaviour preset (CAUTIOUS = refer to human when unsure, BALANCED, CONFIDENT) and/or a custom learning-phase prompt.chatbots:write
chatbot_listList all chatbots the user has access to, with summary statistics.chatbots:read
chatbot_reorder_instructionsSet the order of a chatbot's core instructions.chatbots:write
chatbot_templates_listList the chatbot templates (presets for persona, tonality, messages and widget behaviour) that can be passed as templateId to chatbot_create, and whether the company's plan may use them.chatbots:read
chatbot_toggle_activeActivate or deactivate a chatbot.chatbots:write
chatbot_toggle_learningEnd (false) or re-enable (true) the learning phase of a chatbot.chatbots:write
chatbot_updateUpdate a chatbot's general settings: name, description, isActive, live chat (liveChatEnabled/liveChatMode, plan feature), showBranding (white-label plans), chat-review emails, FAQ auto-generation, legacy coreInstructions text, learning phase (isInLearningPhase, learningPhaseBehavior, learningPhaseCustomPrompt).chatbots:write
chatbot_update_instructionUpdate an existing core instruction (content, isActive, channel, sortOrder).chatbots:write
chatbot_update_personalityUpdate the personality of a chatbot: persona (usePersonaName, personaName, personaRole, personaBackground, communicationStyle), tonality sliders 1-5, languages (primaryLanguage, supportedLanguages, technicalLevel, timezone, formalAddress, speakAsCompany), messages (welcomeMessage, fallbackMessage, proactive greeting) and restrictions (blacklistTopics, complianceRules, maxResponseLength, human handoff).chatbots:write
widget_settings_getGet the current widget settings for a chatbot (all appearance, branding, behaviour and pre-chat form fields).chatbots:read
widget_settings_updateUpdate the chat widget of a chatbot: position (incl.chatbots:write
widget_translations_getGet the per-language widget translations of a chatbot: { '<lang>': { welcomeMessage, fallbackMessage, headerTitle, headerSubtitle, bubbleText } }.chatbots:read
widget_translations_updateSet per-language widget translations.chatbots:write

Knowledge Base

ToolDescriptionScope
crawler_job_cancelCancel a PENDING or RUNNING crawl job; remaining pages are skipped.knowledge:write
crawler_job_getGet a crawl job's status, progress (pagesCrawled/pagesFound, tokensUsed) and the status of each page.knowledge:read
crawler_jobs_listList a chatbot's crawl jobs (newest first) with status and progress.knowledge:read
crawler_limitsGet the plan's crawl limits for a chatbot (max pages per crawl, tokens per page, crawls per month) and whether a new crawl can be started this month.knowledge:read
crawler_preview_scanScan a website and list its crawlable pages (url, title, isRecommended) without importing anything.knowledge:write
crawler_startStart a crawl job that imports the selected URLs into the chatbot's knowledge base (processed in the background; poll crawler_job_get).knowledge:write
knowledge_document_add_from_urlDownload a document (PDF, TXT, MD, CSV, JSON, DOCX; max 10 MB) from a public http(s) URL and add it to a chatbot's knowledge base.knowledge:write
knowledge_document_add_textAdd a text or markdown document to a chatbot's knowledge base from inline content (max 10 MB).knowledge:write
knowledge_document_deleteDelete an uploaded document from the knowledge base.knowledge:write
knowledge_document_getGet details of an uploaded document including processing status, error message and a short-lived download URL.knowledge:read
knowledge_documents_listList the uploaded documents (PDF, TXT, MD, CSV, JSON, DOCX) in a chatbot's knowledge base with status and size.knowledge:read
knowledge_page_addCrawl a single URL and add it to the chatbot's knowledge base (fails with CONFLICT when the URL is already indexed, FORBIDDEN when the token limit is reached).knowledge:write
knowledge_page_deleteDelete a crawled page from the knowledge base (removes its vector-store file).knowledge:write
knowledge_page_getGet a crawled page including the markdown content that was indexed for the chatbot (useful to verify what the bot knows about a page).knowledge:read
knowledge_page_recrawlFetch a crawled page again and replace its indexed content (e.g.knowledge:write
knowledge_pages_deleteDelete several crawled pages of a chatbot at once.knowledge:write
knowledge_pages_listList crawled pages in a chatbot's knowledge base, optionally filtered by domain, status or a search term (URL/title).knowledge:read
knowledge_statsOverview of a chatbot's knowledge base: documents (by status, size), crawled pages and websites (by status), crawl jobs, core instructions split by source (manual vs improvement agent), FAQs, vector store status/size and storage usage vs.knowledge:read
knowledge_website_deleteDelete every crawled page of a website (domain) from the chatbot's knowledge base.knowledge:write
knowledge_website_recrawlRe-crawl every page of a website (domain) in the chatbot's knowledge base to refresh its content.knowledge:write
knowledge_website_recrawl_cancelCancel an in-progress website re-crawl: queued (PENDING) pages of the domain are reverted to their previous indexed state.knowledge:write
knowledge_websites_listList the websites (domains) whose pages are in a chatbot's knowledge base, with page counts by status and token totals.knowledge:read

FAQ Management

ToolDescriptionScope
faq_cache_purgeClear the cached FAQ widget data on all connected CMS sites (WordPress plugin).faqs:write
faq_categories_listList the FAQ categories of a chatbot with their FAQ counts, slugs, sort mode and translations.faqs:read
faq_categories_reorderSet the order of FAQ categories in the widget: position in categoryIds becomes the sortOrder.faqs:write
faq_category_createCreate a FAQ category for a chatbot (slug is generated from the name).faqs:write
faq_category_deleteDelete a FAQ category.faqs:write
faq_category_translations_updateReplace the translations of a FAQ category, e.g.faqs:write
faq_category_updateRename a FAQ category or change its description, icon or sort mode.faqs:write
faq_createCreate a FAQ for a chatbot.faqs:write
faq_deletePermanently delete a FAQ (also removes it from the chatbot's knowledge base and purges CMS widget caches).faqs:write
faq_embed_code_getGet the embed snippets for the FAQ widget: script tag, WordPress shortcode and Shopify Liquid snippet, plus per-category variants (use categorySlug from faq_categories_list to embed one category only).chatbots:read
faq_getGet the full details of a FAQ: question, answer, category, publish state, sort order, translations, SEO fields and feedback stats.faqs:read
faq_listList FAQs of a chatbot (use chatbot_list to find the chatbotId).faqs:read
faq_reorderSet the display order of FAQs in the widget.faqs:write
faq_suggestion_approveApprove a PENDING FAQ suggestion: creates a published FAQ (optionally with edited question/answer/category) and marks the suggestion APPROVED.faqs:write
faq_suggestion_getGet the full details of a FAQ suggestion (complete answer, AI reasoning, suggested category, review state).faqs:read
faq_suggestion_rejectReject a PENDING FAQ suggestion with an optional reason.faqs:write
faq_suggestions_generateLet the AI propose new FAQs from the chatbot's knowledge base (crawled pages / uploaded documents), optionally for one category.faqs:write
faq_suggestions_listList AI-generated FAQ suggestions of a chatbot (from chat conversations or faq_suggestions_generate).faqs:read
faq_translateTranslate a FAQ's question and answer with AI into the chatbot's other supported languages (or the given targetLanguages) and save the result.faqs:write
faq_translations_updateSave translations of a FAQ per language, e.g.faqs:write
faq_updateUpdate a FAQ's question, answer, category, publish state or manual sort order.faqs:write
faq_widget_settings_getGet the appearance and behaviour settings of the embeddable FAQ widget (colors, border radius, title, spacing, max width, allowMultipleOpen, autoOpenFirst, sort mode, title translations).chatbots:read
faq_widget_settings_updateUpdate the FAQ widget settings: colors (hex), borderRadius 0-32, title (max 100) + showTitle, spacing compact|normal|relaxed, maxWidth 0-2000 (0 = full width), allowMultipleOpen, autoOpenFirst, sortMode custom|date|name and title translations per language.chatbots:write

Chat History & Feedback

ToolDescriptionScope
chat_feedback_dismissMark a chat as reviewed without rating it (clears it from the pending queue, does not change the confidence score).chats:write
chat_feedback_getGet one chat review (feedback) with AI analysis, severity, confidence category, score change and the linked improvement session.chats:read
chat_feedback_listList chat reviews (feedback rows) of a chatbot with status filter and counts.chats:read
chat_feedback_set_severityOverride the severity classification (MINOR|MODERATE|MAJOR|CRITICAL) of a reviewed negative chat; severity weights the confidence-score drop.chats:write
chat_feedback_statsSession counts per review bucket for a chatbot (total, none, pending, positive, negative, reviewed, improved) — the stat cards of the dashboard chats page.chats:read
chat_feedback_submitRate a chat session as Good (isPositive=true) or Needs Work (isPositive=false).chats:write
chat_session_getGet a chat session with the full transcript (per-message token/model/latency/pageUrl), visitor details, started page URL, confidence category, feedback (severity, AI analysis, linked improvement session) and tags.chats:read
chat_session_searchSearch chat sessions of a chatbot by message content and/or visitor email.chats:read
chat_session_set_categoryAssign or change the confidence category of a chat session (corrects the AI categorization; per-category confidence is recalculated when the chat was reviewed).chats:write
chat_sessions_listList chat sessions of a chatbot, newest first, with the same review-queue filters as the dashboard chats page.chats:read

Improvement Agent

ToolDescriptionScope
confidence_categories_listList the confidence categories of a chatbot with per-category confidence score, review count and review-email frequency.chats:read
confidence_category_createCreate a confidence category for a chatbot.chatbots:write
confidence_category_deleteDelete a confidence category.chatbots:write
confidence_category_mergeMerge one confidence category into another of the same chatbot: all chats/reviews move to the target, the source is deleted and scores are recalculated.chatbots:write
confidence_category_updateRename a confidence category and/or set its review-email frequency (EVERY|HOURLY|DAILY|WEEKLY|NEVER; emailFrequencyHours 1-24 only for HOURLY).chatbots:write
confidence_status_getConfidence status of a chatbot: score, graduation threshold, learning phase flag, learning-phase behaviour (CAUTIOUS|BALANCED|CONFIDENT) and custom prompt, review counts and per-category confidence scores.analytics:read
improvement_proposal_approveApprove a PENDING improvement proposal and apply the change to the chatbot (core instruction add/update, FAQ create/update or persona update) — same logic and plan limits as the dashboard.chatbots:write
improvement_proposal_rejectReject a PENDING improvement proposal.chatbots:write
improvement_proposal_simulateSimulate how the chatbot would answer the problematic message with a proposal applied (original vs.chatbots:write
improvement_proposals_pendingList improvement proposals awaiting review (status PENDING) across the company or for one chatbot.chatbots:read
improvement_session_completeMark an improvement session as COMPLETED (the chat then counts as Improved in the review queue).chatbots:write
improvement_session_createOpen the Improvement Agent for a chat rated Needs Work.chatbots:write
improvement_session_getGet an improvement session with the original chat (messages have a 1-based index usable as targetMessageIndex), the agent conversation, all proposals (with their latest simulation) and simulations.chatbots:read
improvement_session_resetRestart an improvement session: deletes all agent messages, simulations and PENDING/REJECTED proposals (applied ones are kept) and starts a fresh conversation.chatbots:write
improvement_session_send_messageSend a message to the Improvement Agent (describe what was wrong with the bot's answer; optionally targetMessageIndex = the 1-based index of the bot message in originalChat.messages).chatbots:write
improvement_sessions_listList improvement sessions (Improvement Agent conversations started from negative chat reviews) for a chatbot or the whole company, newest first, with proposal counts.chatbots:read
improvement_simulation_assessRate a simulation result: isApproved=true when the simulated answer is good (the proposal can then be applied), false when it needs more work (comment 'almost' = nearly right).chatbots:write

Live Chat

ToolDescriptionScope
live_chat_agents_availableGet the current user's own live chat availability, the agents currently available for live chat (fresh heartbeat, the same signal the widget uses) and whether the company's plan includes live chat.chats:read
live_chat_heartbeatRefresh the current user's live chat presence heartbeat (only while marked available via live_chat_set_availability).chats:write
live_chat_message_sendSend a message to the visitor as the assigned agent.chats:write
live_chat_queueGet the live chat queue: sessions waiting for an agent, oldest first (FIFO).chats:read
live_chat_session_assignTake a WAITING live chat session from the queue: assigns it to the current user (company owner for API keys) and notifies the visitor that the agent joined.chats:write
live_chat_session_closeEnd a live chat session as an agent (any non-VIEWER member of the company).chats:write
live_chat_session_getGet a live chat session with visitor info, assigned agent, all messages and the prior bot conversation (handoff context).chats:read
live_chat_sessions_listList live chat sessions (newest first; WAITING sessions oldest first) with optional filters by chatbot, status and assigned agent.chats:read
live_chat_set_availabilityToggle the current user's 'Available for Live Chat' switch for a company.chats:write

Leads

ToolDescriptionScope
lead_assignAssign a lead to a company member or unassign it (assignedToId: null).leads:write
lead_bulk_update_statusSet the status of several leads (max 100) at once.leads:write
lead_categories_listList the lead categories of a chatbot with lead counts and the team members notified per category.leads:read
lead_category_assign_userAdd a company member to a lead category's notification list (or update their notification flags).leads:write
lead_category_createCreate a lead category for a chatbot.leads:write
lead_category_deleteDelete a lead category.leads:write
lead_category_remove_userRemove a company member from a lead category's notification list.leads:write
lead_category_updateUpdate a lead category's name, description and/or colour.leads:write
lead_createCreate a lead manually (e.g.leads:write
lead_deleteDelete a lead permanently.leads:write
lead_field_config_getGet the lead capture configuration of a chatbot: fields (ids map to keys in lead.data), confirmation message, field/UI translations and AI recognition settings.leads:read
lead_field_config_updateUpdate the lead capture configuration of a chatbot.leads:write
lead_getGet full details of a lead including assignee, category and the source chat transcript (paged with messageOffset/messageLimit, default first 20 messages).leads:read
lead_listList leads of a chatbot (newest first) with optional filters by status, category, assignee and free-text search (name/email/company).leads:read
lead_statsGet lead statistics for a chatbot: counts by status, leads of the last 7 days and the conversion rate (percent).leads:read
lead_updateUpdate a lead's status, category, notes, captured data and/or assignee.leads:write

Forms

ToolDescriptionScope
form_createCreate a contact form for a chatbot (basics, fields, design and spam settings in one call).forms:write
form_deletePermanently delete a contact form and ALL of its submissions (cascade).forms:write
form_getGet a contact form in full: fields, translations, styling, spam settings, active state, submission count and the embed script tag (embedCode).forms:read
form_listList the contact forms of a chatbot with field counts, submission counts and embed codes.forms:read
form_statsSubmission counts of a contact form: total, pending, approved, spam and rejected.forms:read
form_submission_deletePermanently delete a contact form submission (e.g.forms:write
form_submission_getGet a contact form submission in full: submitted field data, spam score and AI spam analysis, IP/user agent/referrer metadata and review information.forms:read
form_submission_update_statusReview a contact form submission: set its status to APPROVED, SPAM or REJECTED with an optional review note.forms:write
form_submissions_listList submissions of a contact form, newest first, optionally filtered by status (PENDING, APPROVED, SPAM, REJECTED) and creation date.forms:read
form_updateUpdate a contact form: name, description, active state (isActive controls whether the embed renders), fields (full replace), design (colors, button text, success message) and spam settings (spamThreshold, autoRejectSpam, notificationEmail).forms:write
form_update_translationsReplace the field and/or UI translations of a contact form.forms:write

Email Assistant

ToolDescriptionScope
email_activity_listList the processed-email activity log of a mailbox connection (newest first): sender, subject, assigned category, outcome (CATEGORIZED, DRAFT_CREATED, SKIPPED_NO_RULE, SKIPPED_NO_KNOWLEDGE, SKIPPED_BY_TRIAGE, SKIPPED_QUOTA, ERROR) and outcomeDetail.email:read
email_categories_listList the email categories of a mailbox connection (ordered by sortOrder).email:read
email_category_createCreate an email category for a mailbox connection (max 20 per connection).email:write
email_category_deleteDelete an email category.email:write
email_category_updateUpdate an email category (partial: only the given fields change).email:write
email_connection_disconnectDisconnect a mailbox permanently.email:write
email_connection_getGet a mailbox connection incl.email:read
email_connection_updateUpdate a mailbox connection: pause/resume the sync (paused true/false; only toggles ACTIVE<->DISABLED, never overrides TOKEN_EXPIRED/ERROR), toggle reply drafting (draftingEnabled) and categorizing/organizing (organizingEnabled), re-point the powering chatbot (chatbotId of the same company) or set the HTML reply signature (signatureHtml, max 20000 chars; empty string clears it).email:write
email_connections_listList the company's Email Assistant mailbox connections (address, status ACTIVE/DISABLED/TOKEN_EXPIRED/ERROR, last sync, last error, drafting/organizing toggles, powering chatbot, draftReadyCategoryCount = categories that can yield drafts, baseRuleCount = chatbot-wide 'Chat + Email' rules applied to every draft) together with the plan limits (emailAssistantEnabled, maxMailboxConnections, emailDraftsPerMonth).email:read
email_contact_deleteDelete a learned email contact (forget the sender's profile, e.g.email:write
email_contact_getGet a learned email contact with all learned facts, internal notes, relationship, formal/informal address setting and email statistics.email:read
email_contact_updateUpdate a learned email contact.email:write
email_contacts_listList the company's learned email contacts (most recent email first) with relationship, formal/informal address (formalAddress: true = formal 'Sie', false = informal 'Du', null = automatic), fact count and a notes preview.email:read
email_folder_createCreate a mail folder under the inbox (returns the existing one if the name is taken) to use as a category move target.email:write
email_folders_listList the folders an email category can move mail into, live from the mailbox: inbox subfolders, custom top-level folders, archive, junk and trash (id 'deleteditems').email:read
email_general_rules_listList the chatbot-wide rules that apply to every reply draft of a mailbox: active core instructions with channel BOTH ("Chat + Email"), plus legacy email-only ones not yet migrated into a category.email:read

Analytics

ToolDescriptionScope
analytics_chat_volumeChat volume (sessions started) over time for charts and trends: period week/month/quarter/year, granularity hour/day/week/month, optionally for one chatbot.analytics:read
analytics_chatbot_statsPer-chatbot performance of a company in one call (the dashboard's chatbot performance table): id, name, slug, isActive, sessions, messages, FAQs and leads per chatbot, sorted by sessions.analytics:read
analytics_formsContact form submission stats for a company or one chatbot (dashboard analytics widget): submissions by status (pending/approved/rejected/spam), number of forms, total, spam rate in percent and the submissions-per-day series of the last 7 days.analytics:read
analytics_leadsLead funnel for a company or one chatbot (dashboard analytics widget): leads by status (new/contacted/qualified/converted/lost), total, conversion rate in percent and the leads-per-day series of the last 7 days.analytics:read
analytics_overviewAnalytics overview for a company or one chatbot: chats, messages, satisfaction rate and top questions for a rolling period (day/week/month/year), plus the dashboard's overview widget (total chatbots/published FAQs/leads, sessions today/this week/this month, leads today/this week, form submissions total/today/pending).analytics:read
dashboard_activityWhat currently needs attention (the dashboard home view): per company, the chatbots with new leads today, pending FAQ suggestions, pending form submissions, waiting/active live chats or an ongoing learning phase.any

Example Workflows

Adding a Core Instruction

Ask your AI assistant:

"Add a core instruction to my 'Support Bot' chatbot: we offer free shipping on orders over €50"

The assistant will use chatbot_add_instruction with appropriate parameters.

Reviewing Improvement Suggestions

"Show me all pending improvement proposals for my chatbot and explain what changes they suggest"

The assistant will:

  1. Use improvement_proposals_pending to fetch proposals
  2. Analyze and summarize each suggestion
  3. Approve or reject them on your behalf with improvement_proposal_approve or improvement_proposal_reject

Analyzing Chat Performance

"Give me a weekly report of chat volume and customer satisfaction for my chatbot"

The assistant will use analytics_overview and analytics_chat_volume to compile a comprehensive report.

Importing a Website

"Scan https://example.com, import the product and pricing pages into my 'Support Bot' and tell me when the crawl is done"

The assistant will call crawler_preview_scan, pick the relevant pages, start the import with crawler_start and poll crawler_job_get until the job has finished.

Reviewing Leads and Form Submissions

"Show me the new leads from this week, assign the qualified ones to Anna and approve the pending contact form submissions"

The assistant combines lead_list, lead_assign, form_submissions_list and form_submission_update_status.

Taking Over a Live Chat

"Set me available for live chat and take the oldest waiting conversation"

The assistant uses live_chat_set_availability, live_chat_queue and live_chat_session_assign; replies go through live_chat_message_send.

Security

  • API keys are scoped to your company and to the permission scopes you select when creating them (see the Scope column above)
  • Keys execute with the permissions of the company owner; plan limits and feature gates apply exactly as in the dashboard
  • Keys can be revoked at any time from the dashboard
  • API access is available on paid plans — see our Pricing page

Troubleshooting

Connection Failed

  1. Verify your API key is correct
  2. Check that the key hasn't been revoked
  3. Make sure your plan includes API access
  4. Restart your MCP client

Tool Not Found

Restart your MCP client after changing the configuration so it reloads the available tools. Tool names are lowercase with underscores (e.g., faq_list).


Need help? Contact our support team →