Smartwebchat
Create and manage website chatbots for European SMBs: bots, chat, and captured leads.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"chatbots": {
"url": "https://smartwebchat.eu/api/mcp"
}
}
}Remote endpoints
https://smartwebchat.eu/api/mcpstreamable-httpWhat it can do
Tool inventory
Tools (10)
🟢smartwebchat_service_info
Get factual information about the Smartwebchat service itself: what it does, plans and prices, the languages the WEBSITE is published in, where data is processed, and how to obtain an API key. Works without authentication — use it to answer questions about Smartwebchat before the user has an account.
Input Schema
{
"type": "object",
"properties": {},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢smartwebchat_list_chatbots
List the website chatbots in this account, with their IDs, names and the site each one runs on. Call this first — every other tool needs a botId from here.
Input Schema
{
"type": "object",
"properties": {},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡smartwebchat_create_chatbot(name, businessName, industry, description, websiteUrl, ...)
Create a new website chatbot for a business, including its greeting, personality and initial FAQ knowledge. Writes to the account: confirm the business details with the user before calling. Needs a key with full access; a read-only key gets 403 here.
Input Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Display name of the chatbot"
},
"businessName": {
"type": "string",
"description": "Name of the business the chatbot speaks for"
},
"industry": {
"type": "string",
"description": "Industry of the business, e.g. 'Arztpraxis', 'Restaurant', 'Handwerk'. Used verbatim in the chatbot's prompt, so keep the user's own wording and language."
},
"description": {
"type": "string",
"description": "What the business does — background knowledge for the chatbot"
},
"websiteUrl": {
"type": "string",
"description": "URL of the website the chatbot will run on"
},
"faqs": {
"type": "array",
"items": {
"type": "object",
"properties": {
"question": {
"type": "string"
},
"answer": {
"type": "string"
}
},
"required": [
"question",
"answer"
],
"additionalProperties": false
},
"description": "Question and answer pairs the chatbot should know from the start"
},
"greeting": {
"type": "string",
"description": "First message the chatbot sends to a visitor"
},
"personality": {
"type": "string",
"enum": [
"freundlich",
"professionell",
"locker"
],
"description": "Tone of voice. The values are German and go to the API verbatim: 'freundlich' (friendly), 'professionell' (professional), 'locker' (casual)."
},
"idempotencyKey": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,128}$",
"maxLength": 128,
"description": "Optional. A unique string you choose for this one creation (1-128 characters: letters, digits, '_' or '-'). If the call is retried with the same key, the account returns the chatbot created the first time instead of creating a second one. Use a new key for each new chatbot."
}
},
"required": [
"name",
"businessName",
"industry"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡smartwebchat_chat(botId, message, sessionId)
Send a visitor message to a chatbot and get its reply, exactly as a website visitor would see it. Use this to test how the chatbot answers, or to check whether its knowledge base covers a topic. Records a conversation and uses the account's message quota, so it needs a key with full access; a read-only key gets 403 here.
Input Schema
{
"type": "object",
"properties": {
"botId": {
"type": "string",
"description": "ID of the chatbot, taken from smartwebchat_list_chatbots"
},
"message": {
"type": "string",
"description": "The visitor message to send (max. 2000 characters)"
},
"sessionId": {
"type": "string",
"description": "Optional: pass the same session ID again to continue an existing conversation"
}
},
"required": [
"botId",
"message"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢smartwebchat_get_leads(botId)
Retrieve the leads a website chatbot captured from visitors — contact requests, appointment bookings and callback requests, with the visitor's message and contact details. Without botId, returns the leads of every chatbot in the account.
Input Schema
{
"type": "object",
"properties": {
"botId": {
"type": "string",
"description": "Optional: only return leads of this chatbot. Omit for all chatbots in the account."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡smartwebchat_update_lead(botId, leadId, status)
Change the status of a captured lead, for example to mark it as contacted or closed. Writes to the account. Needs a key with full access; a read-only key gets 403 here.
Input Schema
{
"type": "object",
"properties": {
"botId": {
"type": "string",
"description": "ID of the chatbot the lead belongs to"
},
"leadId": {
"type": "string",
"description": "ID of the lead"
},
"status": {
"type": "string",
"enum": [
"new",
"contacted",
"closed"
],
"description": "New status: 'new', 'contacted' or 'closed'"
}
},
"required": [
"botId",
"leadId",
"status"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢smartwebchat_diagnose(botId)
Find out why a website chatbot does not answer or does not show up: checks access, the monthly message limit, credit, the language-model provider, allowed and refused origins, knowledge sources and whether anyone has chatted on the website. Returns findings with a code, a severity and a remedy. Read-only. Check complete before trusting an empty error list.
Input Schema
{
"type": "object",
"properties": {
"botId": {
"type": "string",
"description": "ID of the chatbot to diagnose (from smartwebchat_list_chatbots)"
}
},
"required": [
"botId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢smartwebchat_get_fit(market, locale, primary_need, website_platform, number_of_client_assistants, ...)
Assess whether Smartwebchat fits a described business: primary need, market, number of client assistants, white-label, omnichannel, calendar and language-model requirements. Returns good_fit, partial_fit, not_fit or needs_review with reasons, limitations, a recommended plan and relevant URLs. Works without authentication. This assessment is self-asserted by the vendor and can say no. It never fetches the described website.
Input Schema
{
"type": "object",
"properties": {
"market": {
"type": "string",
"minLength": 2,
"maxLength": 64,
"description": "Country or market of the business, e.g. 'DE', 'de-AT', 'NL', 'US'. Free text; only the language part is matched against the published website languages."
},
"locale": {
"type": "string",
"maxLength": 35,
"pattern": "^[A-Za-z]{2,3}(?:[-_][A-Za-z0-9]{1,8})*$",
"description": "Language tag for the returned URLs, e.g. 'en', 'fr-CA', 'it', 'pt-BR'. Any well-formed tag is accepted; languages without a published website fall back to 'de'. The language never changes the verdict."
},
"primary_need": {
"type": "string",
"enum": [
"website_assistant",
"customer_service",
"lead_generation",
"appointments",
"faq",
"multilingual",
"agency",
"white_label",
"full_omnichannel_helpdesk"
],
"description": "What the business mainly needs the assistant for."
},
"website_platform": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Website system as stated by the caller, e.g. 'wordpress'. Echoed back only; never fetched or verified."
},
"number_of_client_assistants": {
"type": "integer",
"minimum": 1,
"maximum": 10000,
"description": "How many separate businesses or client assistants are to be served. More than one points to the agency plan."
},
"requires_white_label": {
"type": "boolean",
"description": "Smartwebchat branding must be removed."
},
"requires_custom_widget_domain": {
"type": "boolean",
"description": "The widget must run on the caller's own domain."
},
"requires_full_omnichannel_inbox": {
"type": "boolean",
"description": "A full omnichannel inbox or helpdesk across channels is required."
},
"requires_direct_calendar_write": {
"type": "boolean",
"description": "The assistant must write appointments directly into a calendar."
},
"sensitive_professional_context": {
"type": "boolean",
"description": "The business handles sensitive professional data (e.g. health, legal, tax)."
},
"requested_ai_provider": {
"type": "string",
"enum": [
"default",
"mistral",
"openai",
"anthropic",
"other"
],
"description": "The language model provider the caller wants. 'default' is the vendor's EU standard configuration."
}
},
"required": [
"primary_need"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡smartwebchat_get_quote(plan, additional_assistants, additional_seats, expected_messages_per_month)
Price a Smartwebchat plan with optional add-ons: monthly net figures in EUR, each line with the product fact it comes from, plus the included quotas. White label returns price 'custom'. Works without authentication. The figures are self-asserted by the vendor from its published product facts. No checkout link is issued; a person completes the purchase.
Input Schema
{
"type": "object",
"properties": {
"plan": {
"type": "string",
"enum": [
"business",
"agency",
"white_label"
],
"description": "Plan to quote. 'white_label' returns price 'custom' without a calculation."
},
"additional_assistants": {
"type": "integer",
"minimum": 0,
"maximum": 1000,
"description": "Additional assistants beyond the plan's included number (integer, 0 or more)."
},
"additional_seats": {
"type": "integer",
"minimum": 0,
"maximum": 1000,
"description": "Additional team seats beyond the plan's included number (integer, 0 or more)."
},
"expected_messages_per_month": {
"type": "integer",
"minimum": 0,
"maximum": 10000000,
"description": "Expected messages per month; overage above the included quota is priced per 1,000 messages."
}
},
"required": [
"plan"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡smartwebchat_prepare_handoff(locale, industry_key, recommended_plan, demo_session_id, idempotencyKey)
Prepare a single-use sign-up link for a person: it carries language, industry and your recommended plan into their registration and onboarding. The link expires after 15 minutes and works once. It does not create an account or a trial; the person does that by signing up. Works without authentication. The operator can turn this off; it then answers handoff_disabled. /agents/start shows the current status. Pass idempotencyKey on every retry.
Input Schema
{
"type": "object",
"properties": {
"locale": {
"type": "string",
"minLength": 2,
"maxLength": 35,
"description": "Language of the sign-up page, for example 'en'. Unsupported languages fall back to 'de'."
},
"industry_key": {
"type": "string",
"enum": [
"anwaelte",
"apotheken",
"arztpraxen",
"fahrschulen",
"friseure",
"handwerker",
"heilmittelpraxen",
"hotels",
"immobilien",
"kfz-werkstaetten",
"kosmetikstudios",
"pflegedienste",
"pflegeheime",
"physiotherapie",
"restaurants",
"sanitaetshaeuser",
"steuerberater",
"tieraerzte",
"versicherungsmakler",
"zahnaerzte"
],
"description": "Industry of the business, one of `how_to_test.agent_demo_contract.industries` in /agents/start."
},
"recommended_plan": {
"type": "string",
"enum": [
"business",
"agency",
"white_label"
],
"description": "Plan you recommend: business, agency, white_label. Only plans with a trial preselect the trial type; the person can change it."
},
"demo_session_id": {
"type": "string",
"description": "Optional demo session id from the scanner demo; its context is restored after sign-up."
},
"idempotencyKey": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,128}$",
"maxLength": 128,
"description": "Send the same key on every retry of the same request; a retry returns the same link for up to 15 minutes."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Community
Evidence