A voice assistant that answers out loud
Built from your own website, so it answers from your real pages — in your site’s language, with an accent that fits your business. Visitors press one button and just talk.
Try saying
MCP for ChatGPT Claude
Build and steer your MyChatBot AI sales assistant from ChatGPT or Claude. Here’s every capability, plus the cards you’ll see along the way.
14 tools · build, connect, enable, or remove
Built from your own website, so it answers from your real pages — in your site’s language, with an accent that fits your business. Visitors press one button and just talk.
Try saying
Your AI chat adds a chat bubble to your site and gives you the snippet — plus a ready-made page to try it on.
Try saying
Your sales assistant now answers on a chat bubble you can drop onto any page.
<link rel="stylesheet" href="https://storage.googleapis.com/mychatbot-widget-assets/v1/style.css" />
<script src="https://storage.googleapis.com/mychatbot-widget-assets/v1/widget.js"></script>
<div id="my-chat-widget-container"></div>
<script>
MyChatBot.mount('#my-chat-widget-container', {
account_id: '60f6e676-c174-49fa-8aea-ff26afad97ea',
widget_id: 'site-14071',
api_url: 'https://api.mychatbot.app',
assistant_name: 'Veronica',
color: '#6F52E0',
lang: 'en'
});
</script>
Paste the snippet just before </body> on any page — the bubble appears and talks to your sales assistant automatically.
The widget card: copy the snippet, open a live preview, and your site has chat.
Telegram, WhatsApp, and Instagram — your AI chat gives you one link and you finish in a couple of clicks.
Try saying
WhatsApp authorizes on its own platform — finish in your MyChatBot dashboard.
Telegram authorizes on its own platform — finish in your MyChatBot dashboard.
Instagram authorizes on its own platform — finish in your MyChatBot dashboard.
Same one-link, two-step flow for Telegram, WhatsApp, and Instagram.
14 tools · websites, FAQs, catalogs, and sources
Share the facts in your AI chat and it writes the FAQ your sales assistant quotes from — ready the moment it’s indexed.
Try saying
Your sales assistant can answer these from now on, on every channel.
Your sales assistant quotes these when a customer asks — on every channel, without waiting for you. Add more any time — just share the facts in this chat.
FAQ 314 · knowledge base veronica
An FAQ lands as a card — entries counted, ready to answer, one click from the dashboard.
Give your AI chat the product feed and it imports the whole catalog, indexed and ready to sell from.
Try saying
Product search — what your sales assistant can look up here.
1,208 documents indexed.
Integration 4242 · knowledge base veronica
A feed import when it finishes: the whole catalog, indexed and ready to sell from.
Every source you’ve connected — FAQs, catalogs, CRMs — at a glance.
Try saying
5 connected sources it can search while talking to a customer.
| Source | Gives your assistant | Type |
|---|---|---|
| Shipping FAQ | FAQ answers | knowledge_base |
| Summer Catalog | Product search | product_feed |
| HubSpot | CRM sync | crm |
| Return Policy | FAQ answers | knowledge_base |
| Google Calendar | Bookings | calendar |
The one-glance list of everything your sales assistant knows about.
9 tools · usage, orders, conversations, customers, and plan
Your sales assistant takes the order in the conversation — no checkout hand-off, no lost basket. Ask from ChatGPT or Claude how they’re doing and you get totals, revenue, status, and the channels they came from.
Try saying
Orders on your MyChatBot account.
OLX brings 50% of your orders — your strongest channel of 5.
Revenue is in your shop's own currency.
Order stats as a card: totals and revenue, broken down by status and channel.
Read every conversation and full transcript, go back to any week or month, then open a lead to see contact details, funnel status, labels, and notes.
Try saying
8 tools · one customer or a whole campaign
Find any lead, inspect their history, and send a one-off message through their connected WhatsApp, Telegram, Instagram, Messenger, email, or SMS channel. It stays in the same customer history.
Try saying
Filter customers by activity, status, labels, or contact details and preview the exact audience before creating anything. Then send now or schedule for later, and pause or resume from the same chat.
Try saying
5 tools · rehearse privately, then review every change
Start a private session against your sales assistant’s live instructions and skills. Chat like a customer, inspect every answer, and end the rehearsal without exposing it to customers.
Try saying
See the current and complete proposed instructions side by side. Nothing changes until you confirm the update, and every saved version passes moderation first.
Try saying
Review the change to Veronica's system prompt — nothing is saved until you confirm.
You are Veronica, the sales assistant for Veronica Viva. Greet visitors warmly and answer questions about our products and shipping.
You are Veronica, the sales assistant for Veronica Viva. Greet visitors warmly and answer questions about our products and shipping. Recommend a bestseller when someone asks for a suggestion, and mention free delivery over $80.
Confirm replaces the whole prompt (the platform runs a moderation check first). Not ready? Just keep chatting — nothing changes until you confirm.
Instruction changes arrive as a before/after card — nothing is saved until you confirm.
You never need these names — your AI chat picks the right tool from what you ask. They’re here for developers, AI models, and anyone curious about exactly what the connector can do.
get_demo_statusCheck the instant demoGet the owner's demo page — the live preview link for the sales assistant built from their website at signup. Use when the owner asks to see that demo or preview, for example 'show me my demo', 'open my demo', 'show me the demo page', 'where is my preview link' or 'show me my sales assistant'. It is the only tool that returns that link. Signup offers to build one from the owner's website, so it often already exists, and the link shows their own sales assistant answering questions about their own business. To show that demo, use this tool, not create_website_widget, which sets up or changes the website chat widget itself. Read-only.
No parameters.
propose_assistant_setupPropose sales assistant setupDraft a customer-facing AI sales assistant for the user's own business — a shop, store, online business or service — that answers that business's customers on its website, Telegram, Instagram, Messenger or WhatsApp, and show it on an approval card. Use when the user asks to set up a sales or support assistant, a chatbot, automatic replies or 24/7 support for their own business's customers. Draft the assistant first (research the business, then write the greeting, the instructions and the starter knowledge) and pass the whole proposal here. Nothing is created until the owner approves it on the card.
namestringoptionalAssistant name (as drafted). If omitted, a demo proposal is generated from `business` for local testing.
greetingstringoptionalThe exact first message website visitors will see.
summarystringoptional2-3 line summary of what the assistant does.
instructionsstringoptionalThe complete system prompt for the assistant.
knowledgearrayoptionalStarter Q&A knowledge entries, phrased the way customers ask.
planarrayoptionalOrdered build steps to show in the card.
businessstringoptionalBusiness name/description — used only to generate a demo proposal when `name` is omitted.
build_assistantBuild the approved assistantBuild the assistant exactly as proposed. Called only after the owner approves the card.
bot_namestringrequiredAssistant name (from the approved proposal)
welcome_messagestringoptionalFirst message customers see
instructionsstringoptionalSystem prompt
knowledge_questionsarrayoptionalQuestions for the starter FAQ, in the same order as knowledge_answers.
knowledge_answersarrayoptionalAnswers, index-matched to knowledge_questions — answers[0] answers questions[0].
brandstringoptionalBusiness/brand name (KB group)
create_website_widgetCreate website chat widgetPut a live chat widget on the owner's website — the chat bubble visitors click to ask questions. Use for 'add chat to my site', 'a chatbot on my website', 'live chat for my store', or putting an existing sales assistant on a web page. The one channel that connects fully from here, no dashboard needed: returns a ready-to-paste embed snippet plus a hosted page URL so it can be dropped onto any site (or tried immediately on the hosted page). Calling it again with the same widget_id for the same assistant does not create a second widget: it updates that widget in place. Every setting passed here replaces the saved one (an empty pop_up_text removes the popup, ad_oriented false switches the teaser card off), settings not passed are kept, and the widget is switched back on. A widget_id owned by a different assistant is refused. Omit widget_id to use the assistant's default widget — if signup already built a demo widget for this assistant, that one is returned rather than a second one created, and any settings passed are applied to it (website_url changes the site its demo page shows). NOT for showing an existing demo: 'show me the demo page' / 'show me my sales assistant' / 'where is my preview link' are get_demo_status, which returns the page they already have. The widget has many more settings than this tool takes — which details the contact form asks for (name/email/phone), button position and size, popup timing, margins. For any of those, the result carries a config_link: it opens that widget's settings page and signs the owner in. All of it is editable there. Calling this tool again leaves those settings as they are; re-creating the widget under a new widget_id makes a second, separate widget.
assistant_idvaluerequiredThe assistant ID to connect the widget to.
widget_idstringoptionalShort unique identifier for this widget, no spaces (e.g. 'main-site', 'support', 'docs'). Becomes the channel's page_id and appears in Active Chats so you know where a message came from. Auto-generated ('site-<assistant_id>') if omitted.
welcome_textstringoptionalOptional. Heading text shown above the contact options in the widget home tab.
pop_up_textstringoptionalOptional. Text shown in the bubble a few seconds after the page loads (only shown if set).
website_urlstringoptionalOptional. Your site URL, used for previewing the widget in context.
logostringoptionalOptional. Public URL to a brand logo image (~45x45).
colorstringoptionalOptional. Primary widget color hex (default #6F52E0).
languagestringoptionalOptional. Widget UI language: 'en', 'ru', or 'ua' (default 'en').
ad_orientedbooleanoptionalOptional. Modern teaser-card look: a titled card with rotating popup invitations instead of the bare chat bubble. ON by default for a new widget; pass false for the plain bubble. An existing widget keeps the look it has unless this is set.
ad_titlestringoptionalOptional (ad_oriented only). Title on the teaser card. Defaults to 'Chat with <assistant name>'.
ad_descriptionstringoptionalOptional (ad_oriented only). One-line subtitle on the teaser card.
ad_popup_messagestringoptionalOptional (ad_oriented only). Rotating popup message inviting the visitor to chat.
reply_delay_secondsnumberoptionalOptional. Seconds the widget waits for the visitor to finish typing before the assistant answers (0-300). A new widget answers after 1 second unless this is set; an existing widget keeps its setting unless this is set.
create_voice_agentCreate a voice assistantCreates a Calls channel so visitors can click and TALK to the assistant instead of typing, and returns its agent_id, two embed snippets (plain HTML and npm) for putting the call button on a site, and a settings link. It needs no credentials and completes here, like the website widget. An assistant that already has a voice channel gets that channel's snippets back rather than a second one. The voice demo built during signup is a different thing: get_demo_status returns its preview page.
assistant_idvaluerequiredThe assistant that answers the calls.
first_messagestringoptionalWhat the voice assistant says when a call starts. Defaults to the assistant's welcome message.
languagestringoptionalLanguage, optionally with a region so the voice gets the right accent: 'en-AU', 'en-GB', 'en-US', 'uk', 'ru', 'de', 'pl'. Defaults to 'en'.
voice_idstringoptionalA specific voice. Defaults to the platform voice.
get_channel_setup_link_telegramGet Telegram setup linkGet the dashboard link for connecting Telegram to an assistant. Telegram authorization can only be completed in the MyChatBot dashboard, so this returns a deep-link ({url}) for the owner to open in their browser — present it as "finish connecting in your dashboard (login required)". Read-only: this call connects and changes nothing by itself.
assistant_idvaluerequiredThe assistant ID to connect the channel to.
get_channel_setup_link_whatsappGet WhatsApp setup linkGet the dashboard link for connecting WhatsApp to an assistant. WhatsApp authorization can only be completed in the MyChatBot dashboard, so this returns a deep-link ({url}) for the owner to open in their browser — present it as "finish connecting in your dashboard (login required)". Read-only: this call connects and changes nothing by itself.
assistant_idvaluerequiredThe assistant ID to connect the channel to.
get_channel_setup_link_instagramGet Instagram setup linkGet the dashboard link for connecting Instagram to an assistant. Instagram authorization can only be completed in the MyChatBot dashboard, so this returns a deep-link ({url}) for the owner to open in their browser — present it as "finish connecting in your dashboard (login required)". Read-only: this call connects and changes nothing by itself.
assistant_idvaluerequiredThe assistant ID to connect the channel to.
get_channel_setup_link_messengerGet Messenger setup linkGet the dashboard link for connecting Messenger to an assistant. Messenger authorization can only be completed in the MyChatBot dashboard, so this returns a deep-link ({url}) for the owner to open in their browser — present it as "finish connecting in your dashboard (login required)". Read-only: this call connects and changes nothing by itself.
assistant_idvaluerequiredThe assistant ID to connect the channel to.
get_channel_setup_link_tiktokGet TikTok setup linkGet the dashboard link for connecting TikTok to an assistant. TikTok authorization can only be completed in the MyChatBot dashboard, so this returns a deep-link ({url}) for the owner to open in their browser — present it as "finish connecting in your dashboard (login required)". Read-only: this call connects and changes nothing by itself.
assistant_idvaluerequiredThe assistant ID to connect the channel to.
enable_order_takingLet the sales assistant take ordersLet a sales assistant take orders in conversation. Until this is on the assistant can answer questions and recommend products but cannot close a sale — it has nowhere to record what the customer wants, so it hands off to a human instead. Turn it on once the catalog is imported. Safe to call again to change the settings; it will not create a second setup. Omit required_fields/item_fields to accept sensible defaults (name, phone, delivery address, optional email; quantity per item).
assistant_idvaluerequiredThe sales assistant that should be able to take orders. From list_assistants.
currencystringoptionalThree-letter currency code for order totals, e.g. USD, EUR, PLN, UAH. Defaults to USD.
requires_paymentbooleanoptionalWhether an order needs payment before it counts as confirmed. Defaults to false (pay on delivery / invoice later).
required_fieldsarrayoptionalCustomer details the sales assistant collects once per order. Omit for the default set.
item_fieldsarrayoptionalDetails the sales assistant collects for each product in the order. Omit for the default set.
disable_order_takingStop the sales assistant taking ordersStop a sales assistant from taking orders. It keeps answering questions and recommending products, but can no longer record a sale. Existing orders are kept. If no other assistant on the account takes orders, the order-form setup (fields, currency, payment rule) is removed with it — enabling again starts from defaults.
assistant_idvaluerequiredThe sales assistant that should stop taking orders. From list_assistants.
delete_channelDisconnect a channelDisconnect one channel from a sales assistant: the platform stops delivering and the connection is removed. Conversations are KEPT — the assistant just stops getting new messages there. This is the right tool for 'take it off Telegram' or 'stop it answering on the website'. Use list_channels first to get the exact channel name.
assistant_idvaluerequiredThe sales assistant the channel is connected to.
channel_typestringrequiredWhich channel, exactly as list_channels reports it (e.g. 'Telegram', 'SwWidget', 'Instagram').
delete_assistantDelete a sales assistantPermanently delete a sales assistant. THIS ALSO DELETES EVERY CONVERSATION IT HAS HAD WITH CUSTOMERS, plus its channels, skills and tasks. There is no undo and no export. Intended for removing a sales assistant created by mistake — a duplicate from a repeated setup, say. If the assistant has any conversations this call fails and reports how many, leaving everything intact; setting delete_conversations then deletes those conversations along with the assistant, permanently and with no export. When the owner only wants the assistant to stop working, delete_channel does that instead and keeps the history. If the owner hasn't said which sales assistant and the account has more than one, list them by name and ask which before calling this.
assistant_idvaluerequiredThe sales assistant to delete (from list_assistants).
bot_namevaluerequiredThat sales assistant's name exactly as list_assistants shows it. Always pass it: the owner sees it when confirming, and it is checked against assistant_id: if they don't match, nothing is deleted.
delete_conversationsbooleanoptionalOnly set true after the owner has been told how many conversations will be destroyed and has agreed. Leave unset for an unused assistant.
add_website_knowledgeUse a website as knowledgeTeach the sales assistant a business's website so it answers from the real pages — prices, products, delivery, opening hours, policies. Use for 'answer from my website', 'learn my site', 'use my shop's pages', or when the owner names a site as their source of truth. It is a LIVE source: the sales assistant searches the site and reads pages at answer time, so there is nothing to upload and no indexing wait. The knowledge_base group name links sources to assistants: pass assistant_id to attach the assistant that should use it. The reply's attached_assistants lists the assistants that answer from the group.
urlstringrequiredThe website URL, including https:// (e.g. https://acme.com). One site per call.
knowledge_basestringrequiredKnowledge base group name. Use an existing one to add this site to the same group, or a new unique name.
namestringoptionalHuman-readable name for this source (defaults to the site's domain).
assistant_idvalueoptionalThe assistant that should use this knowledge — its id from list_assistants (a number is accepted too). It is attached to this knowledge base if it has none yet; an assistant already using a different knowledge base is left as it is. Omit it and the knowledge is attached only when exactly one assistant has no knowledge base yet.
create_faq_knowledge_baseCreate FAQ knowledge baseCreate a new FAQ knowledge base integration for the owner's assistant. Optionally seed it with initial entries. Each entry needs an id, question (short title), and answer (detailed text). The knowledge_base param groups integrations — use an existing group name to add to that group, or pick a new unique name. Check list_integrations first and prefer updating an existing FAQ integration over creating a duplicate.
knowledge_basestringrequiredKnowledge base group name. Use an existing one to add this integration to the same group, or create a new unique name (e.g. company name, topic).
namestringrequiredHuman-readable name for this FAQ integration (e.g. 'Shipping FAQ', 'Return Policy').
languagestringoptionalContent language: 'english', 'russian', 'spanish', etc. Defaults to 'english'.
entriesarrayoptionalInitial FAQ entries to seed. Optional — can be added later via update_faq_knowledge_base_entries.
assistant_idvalueoptionalThe assistant that should use this knowledge — its id from list_assistants (a number is accepted too). It is attached to this knowledge base if it has none yet; an assistant already using a different knowledge base is left as it is. Omit it and the knowledge is attached only when exactly one assistant has no knowledge base yet.
list_faq_knowledge_base_entriesList FAQ entriesList all entries in a FAQ knowledge base integration. Returns the full list of FAQ items with their IDs, questions, and answers. Omit integration_id when the account has only one FAQ — it is resolved for you; with several, the error names them. Note that a 'Site link' integration is NOT an FAQ knowledge base even though list_integrations marks both as knowledge bases — passing its id here fails.
integration_idvalueoptionalThe FAQ knowledge base's integration ID. Optional — omit it when the account has only one FAQ. (the numeric id from list_integrations is accepted too.)
update_faq_knowledge_base_entriesUpdate FAQ entriesModify entries in a FAQ knowledge base. Supports three granular operations (use any combination): add (new entries to append, or replace one with the same id), update (existing entries to change, matched by id), remove (entry IDs to delete). The backend reads the current entries, applies your changes, re-uploads, and re-indexes.
integration_idvaluerequiredThe integration ID of the FAQ knowledge base. (the numeric id from list_integrations is accepted too.)
entriesarrayoptionalAlias for `add`. Entries whose id already exists are updated in place.
addarrayoptionalNew entries to add. An entry whose id already exists is updated in place.
updatearrayoptionalExisting entries to update (matched by id). Only provide fields you want to change — question and/or answer.
removearrayoptionalIDs of entries to remove.
create_products_integrationCreate products catalogCreate a Products integration — a manually-managed product catalog the assistant answers from. Optionally seed with initial products. Each product can have arbitrary attributes (name, description, price, url, image_url, category, and any custom keys). Processing is asynchronous — returns immediately while indexing happens in the background; check status with get_integration. Check list_integrations first and prefer one catalog per account over duplicates.
knowledge_basestringrequiredKnowledge base group name. Use an existing one to add this integration to the same group, or create a new unique name.
namestringrequiredHuman-readable name for this products catalog (e.g. 'Summer Collection', 'Electronics').
languagestringoptionalContent language: 'english', 'russian', 'spanish', etc. Defaults to 'english'.
productsarrayoptionalInitial products to seed. Optional — can be added later via update_products. Each product is an object with 'name' (required) plus any attributes. For image indexing, use recognized image field names: image_link, image_url, additional_images (array of URLs), or any key containing 'image', 'photo', 'picture', 'thumbnail', 'gallery', or 'media'.
index_imagesbooleanoptionalWhether to index product images for visual search. Slower but enables image-based product lookup. Defaults to false.
assistant_idvalueoptionalThe assistant that should use this knowledge — its id from list_assistants (a number is accepted too). It is attached to this knowledge base if it has none yet; an assistant already using a different knowledge base is left as it is. Omit it and the knowledge is attached only when exactly one assistant has no knowledge base yet.
list_productsList productsList the products in a catalog. Omit integration_id to be answered for the account as a whole: one catalog is opened directly, several come back as a list of catalogs with each one's live counts, and none says so. A manual Products catalog and a Product Spreadsheet (a connected Google Sheet) return a page of products — read a large one a page at a time by passing next_offset back as offset. A Product Feed is indexed for search rather than stored as a list, so it reports live counts and its source feed URL rather than items; every response says which kind it is in type, and whether it can be paged in products_listable. Note that a 'Site link' integration is NOT a product catalog even though list_integrations marks both as knowledge bases — passing its id here fails.
integration_idvalueoptionalThe catalog's integration ID — a Products, Product Spreadsheet or Product Feed integration. Optional — omit it to be answered for the whole account. (the numeric id from list_integrations is accepted too.)
limitnumberoptionalMax products in this page, 1-200. Defaults to 50. Ignored when products_listable is false.
offsetnumberoptionalProducts to skip. Pass next_offset from the previous response; omit on the first call.
update_productsUpdate productsModify products in a Products integration. Supports three granular operations (use any combination): add (new products to append; each must have 'name', other keys are arbitrary), update (existing products to change, matched by id, merges provided fields), remove (product IDs to delete). The backend reads current products, applies changes, re-uploads, and re-indexes.
integration_idvaluerequiredThe integration ID of the Products catalog. (the numeric id from list_integrations is accepted too.)
productsarrayoptionalAlias for `add`. Products whose id already exists are merged in place.
addarrayoptionalNew products to add. Each must have 'name', other keys are arbitrary attributes. For images use: image_link, image_url, additional_images (array), or any key containing 'image'/'photo'/'picture'.
updatearrayoptionalExisting products to update (matched by id). Only provide fields you want to change.
removearrayoptionalIDs of products to remove.
create_product_feed_integrationAdd product feedCreate a Product Feed integration that indexes products from a feed URL for semantic search. Supports JSON, XML, Google Shopping, YML, and similar feed formats. A Shopify store works too: its storefront URL (https://yourstore.com) or /products.json URL is read from the store's public catalog, with no Shopify app or API keys. Each Shopify product is indexed once with all its variants (options, price, sale price, in stock or sold out, SKU), images and link, and an assistant that uses this catalog can send shoppers a checkout link that opens the store's own Shopify checkout with the chosen items in the cart. Password-protected stores, and stores that block /products.json, cannot be read this way; a Google Shopping feed URL from a feed app works for the catalog, without checkout links. Prices and stock are as of the last sync, and autoupdate_interval_hours re-syncs on a schedule. Processing is asynchronous — returns immediately while indexing happens in the background. Use get_integration(integration_id) to check processing status.
knowledge_basestringrequiredKnowledge base group name. Use an existing one to add this integration to the same group, or create a new unique name.
feed_urlstringrequiredURL pointing to the product feed (JSON, XML, Google Shopping, YML, etc.), or a Shopify store's storefront URL or /products.json URL (a collection's /collections/<handle>/products.json also works). Must be publicly accessible.
languagestringrequiredContent language: 'english', 'russian', 'spanish', 'ukrainian', etc.
namestringoptionalOptional display name for this feed within the knowledge base (e.g. 'Main Catalog'), 60 characters or fewer. Must be unique within the knowledge base.
index_imagesbooleanoptionalWhether to index product images for visual search. Slower but enables image-based product lookup. Defaults to false.
autoupdate_interval_hoursnumberoptionalOptional. Turns on automatic re-sync of this feed every N hours: 1, 3, 6, 12 or 24. Keeps prices and stock current for a live store; 24 or 6 suits most shops. Omit it to import once without auto-update.
one of: 1, 3, 6, 12, 24
assistant_idvalueoptionalThe assistant that should use this knowledge — its id from list_assistants (a number is accepted too). It is attached to this knowledge base if it has none yet; an assistant already using a different knowledge base is left as it is. Omit it and the knowledge is attached only when exactly one assistant has no knowledge base yet.
connect_shopify_storeConnect Shopify storeConnect a Shopify store's catalog to the owner's sales assistants in one step. The store is checked first through its public storefront — no Shopify app or API keys — and the reply names the shop, its primary domain and currency; the catalog is then imported as a Product Feed that re-syncs on a schedule. Each product arrives with all its variants (options, price, stock), and assistants that use the knowledge base send shoppers checkout links that open the store's own Shopify checkout with the chosen items in the cart. The catalog joins the knowledge base named in knowledge_base; pass assistant_id to attach the assistant that should sell from it. Without it, the catalog is attached only when exactly one assistant has no knowledge base yet — the reply lists the assistants that answer from it, and says what to do when none was attached. Accepts the store address in any form: yourstore.com, https://yourstore.com, yourstore.myshopify.com, the Shopify admin URL, or a /products.json or collection URL (then only that collection is imported). A password-protected store, one that blocks its public catalog, or a site that is not Shopify is reported back in plain words and nothing is created. For 'sell my Shopify store', 'connect my Shopify shop', 'import my Shopify products'.
store_urlstringrequiredThe Shopify store's address: yourstore.com, https://yourstore.com, yourstore.myshopify.com, or a /products.json or /collections/<handle>/products.json URL (a collection URL imports only that collection).
knowledge_basestringrequiredKnowledge base group name. The assistant that should sell from this catalog uses its own knowledge base (list_assistants shows each assistant's knowledge_base), so name that one to put the store behind it; a new unique name starts a new group.
assistant_idvalueoptionalThe assistant that should use this knowledge — its id from list_assistants (a number is accepted too). It is attached to this knowledge base if it has none yet; an assistant already using a different knowledge base is left as it is. Omit it and the knowledge is attached only when exactly one assistant has no knowledge base yet.
languagestringoptionalContent language: 'english', 'russian', 'spanish', 'ukrainian', etc. Defaults to 'english'.
autoupdate_interval_hoursnumberoptionalOptional. Re-sync the catalog every N hours: 1, 3, 6, 12 or 24. Defaults to 24, which keeps prices and stock current for most shops.
one of: 1, 3, 6, 12, 24
fast_startbooleanoptionalOptional, defaults to true: index the first 250 products first so the sales assistant can sell within a couple of minutes; the rest of the catalog syncs right after. false indexes everything in one pass.
list_integrationsList integrationsList all integrations for this account: CRMs, knowledge bases, MCPs, automations. Supports filtering by type. Shows which FAQ knowledge bases and product catalogs already exist on the account.
typestringoptionalFilter by integration type (e.g. 'knowledge_base', 'mcp')
get_integrationGet integration detailsGet detailed info about a specific integration including metadata and configuration (sensitive fields stripped). Also the way to check async indexing status after creating or updating a catalog or feed.
integration_idvaluerequiredThe integration ID (the numeric id from list_integrations is accepted too.)
delete_faq_knowledge_baseDelete an FAQ knowledge basePermanently delete an FAQ knowledge base and everything the sales assistant learned from it. Cannot be undone — the answers are gone and the assistant stops using them immediately. Use list_integrations first and confirm which one with the owner by name; ids are not interchangeable and this refuses anything that is not an FAQ.
integration_idvaluerequiredThe integration ID of the FAQ to delete (from list_integrations). (the numeric id from list_integrations is accepted too.)
delete_products_integrationDelete a products catalogPermanently delete a manually-added products catalog and everything indexed from it. Cannot be undone. This is for catalogs whose products were added by hand — for one imported from a feed URL use delete_product_feed_integration. Each refuses the other's type, so check with list_integrations first.
integration_idvaluerequiredThe integration ID of the products catalog to delete (from list_integrations). (the numeric id from list_integrations is accepted too.)
delete_product_feed_integrationDelete a product feedPermanently delete a product feed (a catalog imported from a feed URL) and everything indexed from it. Cannot be undone, and it stops the feed being re-imported. For a hand-built catalog use delete_products_integration instead — each refuses the other's type.
integration_idvaluerequiredThe integration ID of the product feed to delete (from list_integrations). (the numeric id from list_integrations is accepted too.)
get_usage_summaryGet usage summaryBusiness pulse for a period on the connected MyChatBot account: total orders, active chats, new clients, and LLM activity (requests + tokens). Both dates are optional — omit them for the upstream default period. Read-only. The response may include an `errors` map when a sub-source failed to load; the affected counter is unavailable rather than zero, and a narrower date range usually succeeds.
since_datestringoptionalStart of the period — RFC3339 or YYYY-MM-DD (e.g. '2026-07-01'). Optional.
to_datestringoptionalEnd of the period — RFC3339 or YYYY-MM-DD. Optional.
get_order_statsGet order statisticsOrder statistics for the connected account over an optional period: total orders, total revenue, and breakdowns by channel and by status. Revenue is in the shop's own currency and is NOT normalized — present it as a bare number without inventing a currency symbol. Read-only.
since_datestringoptionalStart of the period — RFC3339 or YYYY-MM-DD (e.g. '2026-07-01'). Optional.
to_datestringoptionalEnd of the period — RFC3339 or YYYY-MM-DD. Optional.
list_ordersList ordersList orders on the connected account with optional filters: period, client, status (pending, awaiting_payment, paid, in_progress, completed, cancelled), source channel, order reference, assistant. Offset pagination, applied after filtering: limit ≤ 200 (default 50), and the response's `total` is the filtered count before pagination while `count` is the rows returned. Read-only.
since_datestringoptionalStart of the period — RFC3339 or YYYY-MM-DD (e.g. '2026-07-01'). Optional.
to_datestringoptionalEnd of the period — RFC3339 or YYYY-MM-DD. Optional.
client_idstringoptionalFilter to one client's orders.
statusstringoptionalFilter by order status: pending, awaiting_payment, paid, in_progress, completed, or cancelled.
sourcestringoptionalFilter by the channel the order came from.
order_refstringoptionalFilter by order reference.
assistant_idvalueoptionalFilter to orders taken by one assistant.
limitnumberoptionalMax orders to return, 1-200. Defaults to 50 upstream.
offsetnumberoptionalRows to skip for pagination. Defaults to 0.
list_chatsList chatsList recent chats sorted by last_active descending (most recent first), max 100 per call. Returns {chats: [...], count, next_last_active_before, next_before_id}. To page through more chats, pass next_last_active_before as last_active_before AND next_before_id as before_id from the previous response, then call again (keyset pagination); repeat until fewer than `limit` rows come back. Paging is only exact with both cursor fields: next_last_active_before carries full sub-second precision (unlike the seconds-precision last_active shown on each chat), and next_before_id keeps paging exact when many chats share one timestamp. There is no offset parameter. Combine last_active_after and last_active_before to fetch a specific date window. Both accept RFC3339 timestamps (fractional seconds allowed) or date-only YYYY-MM-DD; a date-only value always means UTC start of day (00:00), so for the window 2026-07-25..2026-07-31 inclusive pass last_active_after=2026-07-25 and last_active_before=2026-08-01. Shows client name, channel, last active, unread count, and whether operator is needed. A chat with communication_channel="Calls" represents a phone call — its message history is the call transcript (use get_chat_messages). Every filter is optional; omit a field to include all values for it.
assistant_idvalueoptionalFilter by assistant ID. Omit to include all assistants.
needs_operatorenumoptionalFilter by whether the chat needs a human operator. "yes" = only chats currently flagged for operator attention, "no" = only chats NOT needing operator, "any" or omit = include all (default).
one of: any, yes, no
common_client_idstringoptionalFilter by the unified client UUID — chats.common_client_id (the same id returned as client_id by list_clients/get_client). This is NOT chats.client_id, the per-channel external id. Omit to include all clients.
external_client_idstringoptionalFilter by the per-channel external client id — chats.client_id (e.g. a Telegram/Instagram/Facebook user id). This is NOT chats.common_client_id. In an app URL like /chats/<external_client_id>/<page_id> this is the FIRST path segment. Omit to include all.
page_idstringoptionalFilter by the channel page id — chats.page_id (e.g. a Facebook/Instagram page id). In an app URL like /chats/<external_client_id>/<page_id> this is the SECOND path segment. Pair with external_client_id to resolve a chat from a pasted app URL. Omit to include all.
last_active_beforestringoptionalOnly chats with last_active strictly before this time. RFC3339 (fractional seconds allowed) or YYYY-MM-DD (= UTC start of day). This is the pagination cursor: pass next_last_active_before from the previous response (together with before_id = next_before_id) to get the next (older) page. A cursor rebuilt from a chat's displayed last_active skips same-second chats: that value is truncated to whole seconds, while the cursor is not. Omit to start from the most recent chats.
before_idstring | numberoptionalCompanion cursor to last_active_before: the next_before_id value from the previous response (a chats.id). When both are set, chats with last_active equal to the cursor timestamp but a smaller id are still returned, so paging stays exact even when many chats share one timestamp (bulk imports). Requires last_active_before; meaningless alone.
last_active_afterstringoptionalOnly chats with last_active strictly after this time. RFC3339 or YYYY-MM-DD (= UTC start of day). Use as the lower bound of a date window. Omit for no lower bound.
limitnumberoptionalMax results (default 20, max 100)
get_chatGet chat detailsGet detailed info about a specific chat including metadata, follow-up state, and channel info. chat_id is the small integer `id` returned by list_chats — not page_id, not common_client_id, not any channel-specific external id. The response distinguishes three ids: `id` (the canonical chat id), `client_id` (per-channel external id), and `common_client_id` (the unified client UUID = clients.id); these are three different values.
chat_idstringrequiredThe chats.id integer returned by list_chats (e.g. "568507"). NOT page_id or any channel-external id.
get_chat_messagesGet chat messagesRead the message history of a specific chat. Returns the last N messages with role, content, and timestamp. For chats with communication_channel="Calls", the message history is the call transcript — there is no separate transcript endpoint.
chat_idstringrequiredThe chats.id integer returned by list_chats. NOT page_id or any channel-external id.
limitnumberoptionalNumber of recent messages to return (default 50, max 200)
list_clientsList clientsList clients (leads/customers) with filtering by funnel status, labels, search, and pagination.
funnel_statusstringoptionalFilter by funnel status
labelsstringoptionalComma-separated labels to filter by
searchstringoptionalSearch across name, email, phone
pipeline_idstringoptionalFilter by pipeline ID
has_phone_numberbooleanoptionalFilter clients with phone number
has_emailbooleanoptionalFilter clients with email
order_bystringoptionalOrder: last_active_desc, last_active_asc, created_at_desc, created_at_asc
limitnumberoptionalMax results (default 20, max 100)
offsetnumberoptionalOffset for pagination
get_clientGet client detailsGet detailed info about a specific client (lead/customer) including contact info, funnel status, labels, and metadata. The response includes metadata.client_context — a map of custom fields collected from the client (only populated when the assistant has 'Client Context' enabled). Cross-reference the keys with the assistant's client_context_schema to render human-readable labels.
client_idstringrequiredThe client ID (UUID) = clients.id. This is the same value as a chat's common_client_id, NOT a chat's per-channel client_id (use list_chats' external_client_id filter for that).
get_subscription_infoCheck the plan and balanceCheck which plan the account is on and how many AI replies are left. Use this when the owner asks what they are paying for, how much trial they have left, or why their sales assistant stopped answering. Read-only.
No parameters.
list_assistantsList sales assistantsList all active sales assistants for this account. Returns id, name, status, language, and model. Use it to resolve the assistant_id that send_one_off_message and the outreach campaigns require.
No parameters.
list_channelsList connected channelsList all connected channels (Telegram, WhatsApp, Instagram, Email, etc.) with their status; sensitive credentials are stripped. Shows what is connected: the communication_channel that send_one_off_message accepts and the outreach_channels a campaign accepts both come from here.
assistant_idvalueoptionalFilter by assistant ID. Omit to include all assistants.
send_one_off_messageSend a message to a leadSend a single ad-hoc message to a specific lead through any connected non-Calls channel (WhatsApp, Telegram, Email, Instagram, Viber, etc.). Use for operator-style 'remind John about his appointment' situations. For multi-recipient campaigns use immediate_outreach_create. The message is written to the lead's chat history just like a normal reply, so it shows up in the chat panel. Sending is immediate and cannot be recalled or edited: the customer receives it on the named channel as soon as this returns. Channel names come from list_channels.
client_idstringrequiredThe lead's UUID, copied verbatim from a list_clients or get_client result (clients.id / a chat's common_client_id). A UUID that does not belong to this account is rejected as "client not found".
assistant_idvalueoptionalThe sales assistant whose voice/identity owns this message (see list_assistants). Optional when the lead card already names its sales assistant (metadata.outreach_defaults, set at lead creation): omit both assistant_id and communication_channel to use the lead's own pair.
communication_channelstringoptionalChannel type to send on: WhatsApp, WhatsAppBusiness, Telegram, TelegramAccount, PersonalWhatsApp, Viber, Instagram, Messenger, Email, SwWidget, SMS, etc. (see list_channels). Calls is not allowed here. Optional when the lead card stores a channel; a lead without stored defaults still needs both fields.
messagestringrequiredPlain-text message to send.
subjectstringoptionalOptional. Email subject line (Email channel only).
toarrayoptionalOptional. Email channel only: the primary recipient address(es), max 20. REPLACES the lead's own email (e.g. to reach a billing address). Set include_client=true to keep the lead on To as well.
include_clientbooleanoptionalOptional. Email only: when true and `to` is given, the lead's own address is added to To as well.
ccarrayoptionalOptional. Email channel only: additional Cc addresses (max 20).
bccarrayoptionalOptional. Email channel only: blind-copy addresses (max 20).
include_all_emailsbooleanoptionalOptional. Email only: Cc every address stored on the lead's extra-emails field.
include_documentsbooleanoptionalOptional. Email only: staple the lead's card documents to the email (attached server-side).
attachmentsarrayoptionalOptional. URLs of attachments to include.
reply_to_message_idstringoptionalOptional. ID of the message being replied to (threaded replies).
page_idstringoptionalOptional. Specific channel page_id. Auto-resolved when the assistant has exactly one channel of the type.
immediate_outreach_preview_audiencePreview campaign audiencePreview how many clients match a campaign's filters. Read-only: it creates nothing and sends nothing. Reports the audience size immediate_outreach_create would reach with the same filters.
client_sourcestringrequiredAudience source: withChats, allClients, or withoutChats.
statusesarrayoptionalFilter by funnel statuses.
include_no_statusbooleanoptionalInclude clients with no funnel status.
labelsarrayoptionalFilter by labels.
labels_operatorstringoptionalLabel filter logic: or (any) or and (all).
include_no_labelsbooleanoptionalInclude clients with no labels.
manager_idsarrayoptionalFilter by assigned manager IDs.
has_phone_numberbooleanoptionalOnly clients with a phone number.
has_emailbooleanoptionalOnly clients with an email.
last_active_cutoff_daysnumberoptionalActivity window in days (for the withChats source).
audience_limitnumberoptionalMax recipients (0 = unlimited).
immediate_outreach_createLaunch an outreach campaignCreate and schedule an immediate outreach campaign to many leads at once. Returns the matched audience count. Sending starts immediately and reaches every matched customer on their channel; the messages cannot be recalled. immediate_outreach_preview_audience reports the same audience count without creating or sending anything.
namestringrequiredCampaign name.
client_sourcestringrequiredAudience source: withChats, allClients, or withoutChats.
outreach_channelsarrayrequiredChannels to send through, format ChannelType__AssistantID (e.g. WhatsAppBusiness__14071). See list_channels.
schedule_modestringrequiredWhen to send: now (runs in ~3 min) or later (requires schedule_run_at).
schedule_run_atstringoptionalISO datetime for a scheduled send (required when schedule_mode is later).
instructionsstringoptionalAI prompt for generating the outreach message (when use_custom_message is false).
custom_messagestringoptionalStatic message to send (used when use_custom_message is true).
use_custom_messagebooleanoptionalIf true, send custom_message directly; if false, generate with AI from instructions.
statusesarrayoptionalFilter audience by funnel statuses.
include_no_statusbooleanoptionalInclude clients with no funnel status.
labelsarrayoptionalFilter audience by labels.
labels_operatorstringoptionalLabel filter logic: or (any) or and (all).
include_no_labelsbooleanoptionalInclude clients with no labels.
has_phone_numberbooleanoptionalOnly include clients with a phone number.
has_emailbooleanoptionalOnly include clients with an email.
last_active_cutoff_daysnumberoptionalActivity window in days (for the withChats source).
audience_limitnumberoptionalMax number of recipients (0 = unlimited).
send_delay_secondsnumberoptionalDelay between messages in seconds (default 7).
immediate_outreach_update_statusPause or resume a campaignPause, resume, or reset an immediate outreach campaign. Use 'user_paused' to pause, 'scheduled' to resume, 'draft' to reset (clears all progress and stats).
follow_up_idstringrequiredThe immediate outreach campaign (follow-up) ID.
statusstringrequiredNew status: user_paused, paused, scheduled, or draft.
list_follow_upsList outreach campaignsList follow-up automations (outreach campaigns). Supports filtering by type and status.
typestringoptionalFilter by type: postponed, immediate, trigger.
statusstringoptionalFilter by status: draft, active, paused, done.
get_follow_upGet campaign detailsGet detailed info about a follow-up (outreach campaign) including steps, filters, and execution stats.
follow_up_idstringrequiredThe follow-up (campaign) ID.
test_chat_startStart a test chatStart a test chat session with an assistant to try it from right here, before (or without) putting it in front of customers. The assistant_id is the session key — one test session per assistant — and starting clears any previous test chat history. Test chats are free: rehearsal replies do not spend the account's token balance.
assistant_idvaluerequiredThe assistant ID to test.
test_chat_sendSend a test messageSend a message in the assistant's test chat session and get its reply. Synchronous: waits for the full model response, generated from the assistant's current LIVE instructions and skills. Test replies are free — they do not spend the account's reply balance. When that balance runs low — live customer replies do spend it — a clearly-marked balance_warning line is appended below the reply.
assistant_idvaluerequiredThe assistant ID (same as in test_chat_start — it is the session key).
messagestringrequiredThe message to send to the assistant.
test_chat_endEnd the test chatEnd the assistant's test chat session and clear its history. The assistant_id is the session key. Call this when a test conversation is done — a later test_chat_start also starts clean.
assistant_idvaluerequiredThe assistant ID whose test session to end.
propose_instructions_updatePropose an instructions updateRender a review card for changing an assistant's instructions (system prompt): fetches the CURRENT instructions and shows them next to your PROPOSED replacement so the owner can compare before anything happens. NOTHING is saved by this call — the card's Confirm button performs the update (via update_assistant_instructions), same rule as the setup flow: nothing changes until the owner says so. This is the recommended path for every instructions edit. The proposed text must be the COMPLETE new instructions (full replacement, not a diff).
assistant_idvaluerequiredThe assistant ID whose instructions to update.
instructionsstringrequiredThe complete proposed instructions text (full replacement).
update_assistant_instructionsUpdate assistant instructionsReplace an assistant's instructions (system prompt) with new text — the WRITE behind propose_instructions_update's Confirm button. The card is the recommended path (propose first, let the owner confirm); call this directly only when the owner has already approved the exact text in conversation. Full replacement; the platform runs a moderation check before saving and rejects flagged content.
assistant_idvaluerequiredThe assistant ID whose instructions to replace.
instructionsstringrequiredThe complete new instructions text (full replacement).
Nothing behind your back. The big moves — creating the sales assistant, changing its instructions — always stop at a card you approve first. Everything else runs only when you ask for it in the conversation, and shows up in your dashboard at app.mychatbot.app.
Your MyChatBot account, after you approve the connection in ChatGPT or Claude: the sales assistant, its FAQ and catalog, conversations, orders, and clients. No API keys change hands — connecting signs you in with OAuth. The MCP cards are live demo renders; the app screens are sanitized product captures, not customer data.
Disconnect MyChatBot in ChatGPT or Claude. Access ends immediately; your sales assistant keeps working, and everything it built stays in your dashboard.