Create and manage website chatbots for European SMBs: bots, chat, and captured leads.
Call this server's tools from your browser. Nothing to install.
Create the key in the Smartwebchat dashboard at https://smartwebchat.eu/dashboard/agenten (account owner only).
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
ID of the chatbot, taken from smartwebchat_list_chatbots
The visitor message to send (max. 2000 characters)
Optional: pass the same session ID again to continue an existing conversation
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
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.
| Argument | Type | Description |
|---|---|---|
| botId* | string | ID of the chatbot, taken from smartwebchat_list_chatbots |
| message* | string | The visitor message to send (max. 2000 characters) |
| sessionId | string | Optional: pass the same session ID again to continue an existing conversation |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"botId",
"message"
],
"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"
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| faqs | array | Question and answer pairs the chatbot should know from the start |
| name* | string | Display name of the chatbot |
| greeting | string | First message the chatbot sends to a visitor |
| industry* | string | 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. |
| websiteUrl | string | URL of the website the chatbot will run on |
| description | string | What the business does — background knowledge for the chatbot |
| personality | string | Tone of voice. The values are German and go to the API verbatim: 'freundlich' (friendly), 'professionell' (professional), 'locker' (casual). |
| businessName* | string |
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.
| Argument | Type | Description |
|---|---|---|
| botId* | string | ID of the chatbot to diagnose (from smartwebchat_list_chatbots) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"botId"
],
"properties": {
"botId": {
"type": "string",
"description": "ID of the chatbot to diagnose (from smartwebchat_list_chatbots)"
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| locale | string | 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. |
| market | string | 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. |
| primary_need* | string | What the business mainly needs the assistant for. |
| website_platform | string | Website system as stated by the caller, e.g. 'wordpress'. Echoed back only; never fetched or verified. |
| requires_white_label | boolean | Smartwebchat branding must be removed. |
| requested_ai_provider | string | The language model provider the caller wants. 'default' is the vendor's EU standard configuration. |
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.
| Argument | Type | Description |
|---|---|---|
| botId | string | Optional: only return leads of this chatbot. Omit for all chatbots in the account. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"botId": {
"type": "string",
"description": "Optional: only return leads of this chatbot. Omit for all chatbots in the account."
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| plan* | string | Plan to quote. 'white_label' returns price 'custom' without a calculation. |
| additional_seats | integer | Additional team seats beyond the plan's included number (integer, 0 or more). |
| additional_assistants | integer | Additional assistants beyond the plan's included number (integer, 0 or more). |
| expected_messages_per_month | integer | Expected messages per month; overage above the included quota is priced per 1,000 messages. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"plan"
],
"properties": {
"plan": {
"enum": [
"business",
"agency",
"white_label"
],
"type": "string",
"description": "Plan to quote. 'white_label' returns price 'custom' without a calculation."
},
"additional_seats": {
"type": "integer",
"maximum": 1000,
"minimum": 0,
"description": "Additional team seats beyond the plan's included number (integer, 0 or more)."
},
"additional_assistants": {
"type": "integer",
"maximum": 1000,
"minimum": 0,
"description": "Additional assistants beyond the plan's included number (integer, 0 or more)."
},
"expected_messages_per_month": {
"type": "integer",
"maximum": 10000000,
"minimum": 0,
"description": "Expected messages per month; overage above the included quota is priced per 1,000 messages."
}
},
"additionalProperties": false
}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.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| locale | string | Language of the sign-up page, for example 'en'. Unsupported languages fall back to 'de'. |
| industry_key | string | Industry of the business, one of `how_to_test.agent_demo_contract.industries` in /agents/start. |
| idempotencyKey | string | Send the same key on every retry of the same request; a retry returns the same link for up to 15 minutes. |
| demo_session_id | string | Optional demo session id from the scanner demo; its context is restored after sign-up. |
| recommended_plan | string | Plan you recommend: business, agency, white_label. Only plans with a trial preselect the trial type; the person can change it. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"locale": {
"type": "string",
"maxLength": 35,
"minLength": 2,
"description": "Language of the sign-up page, for example 'en'. Unsupported languages fall back to 'de'."
},
"industry_key": {
"enum": [
"anwaelte",
"apotheken",
"arztpraxen",
"fahrschulen",
"friseure",
"handwerker",
"heilmittelpraxen",
"hotels",
"immobilien",
"kfz-werkstaetten",
"kosmetikstudios",
"pflegedienste",
"pflegeheime",
"physiotherapie",
"restaurants",
"sanitaetshaeuser",
"steuerberater",
"tieraerzte",
"versicherungsmakler",
"zahnaerzte"
],
"type": "string",
"description": "Industry of the business, one of `how_to_test.agent_demo_contract.industries` in /agents/start."
},
"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."
},
"demo_session_id": {
"type": "string",
"description": "Optional demo session id from the scanner demo; its context is restored after sign-up."
},
"recommended_plan": {
"enum": [
"business",
"agency",
"white_label"
],
"type": "string",
"description": "Plan you recommend: business, agency, white_label. Only plans with a trial preselect the trial type; the person can change it."
}
},
"additionalProperties": false
}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.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| botId* | string | ID of the chatbot the lead belongs to |
| leadId* | string | ID of the lead |
| status* | string | New status: 'new', 'contacted' or 'closed' |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"botId",
"leadId",
"status"
],
"properties": {
"botId": {
"type": "string",
"description": "ID of the chatbot the lead belongs to"
},
"leadId": {
"type": "string",
"description": "ID of the lead"
},
"status": {
"enum": [
"new",
"contacted",
"closed"
],
"type": "string",
"description": "New status: 'new', 'contacted' or 'closed'"
}
},
"additionalProperties": false
}| Name of the business the chatbot speaks for |
| idempotencyKey | string | 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. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name",
"businessName",
"industry"
],
"properties": {
"faqs": {
"type": "array",
"items": {
"type": "object",
"required": [
"question",
"answer"
],
"properties": {
"answer": {
"type": "string"
},
"question": {
"type": "string"
}
},
"additionalProperties": false
},
"description": "Question and answer pairs the chatbot should know from the start"
},
"name": {
"type": "string",
"description": "Display name of the chatbot"
},
"greeting": {
"type": "string",
"description": "First message the chatbot sends to a visitor"
},
"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."
},
"websiteUrl": {
"type": "string",
"description": "URL of the website the chatbot will run on"
},
"description": {
"type": "string",
"description": "What the business does — background knowledge for the chatbot"
},
"personality": {
"enum": [
"freundlich",
"professionell",
"locker"
],
"type": "string",
"description": "Tone of voice. The values are German and go to the API verbatim: 'freundlich' (friendly), 'professionell' (professional), 'locker' (casual)."
},
"businessName": {
"type": "string",
"description": "Name of the business the chatbot speaks for"
},
"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."
}
},
"additionalProperties": false
}| number_of_client_assistants |
| integer |
| How many separate businesses or client assistants are to be served. More than one points to the agency plan. |
| requires_custom_widget_domain | boolean | The widget must run on the caller's own domain. |
| requires_direct_calendar_write | boolean | The assistant must write appointments directly into a calendar. |
| sensitive_professional_context | boolean | The business handles sensitive professional data (e.g. health, legal, tax). |
| requires_full_omnichannel_inbox | boolean | A full omnichannel inbox or helpdesk across channels is required. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"primary_need"
],
"properties": {
"locale": {
"type": "string",
"pattern": "^[A-Za-z]{2,3}(?:[-_][A-Za-z0-9]{1,8})*$",
"maxLength": 35,
"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."
},
"market": {
"type": "string",
"maxLength": 64,
"minLength": 2,
"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."
},
"primary_need": {
"enum": [
"website_assistant",
"customer_service",
"lead_generation",
"appointments",
"faq",
"multilingual",
"agency",
"white_label",
"full_omnichannel_helpdesk"
],
"type": "string",
"description": "What the business mainly needs the assistant for."
},
"website_platform": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Website system as stated by the caller, e.g. 'wordpress'. Echoed back only; never fetched or verified."
},
"requires_white_label": {
"type": "boolean",
"description": "Smartwebchat branding must be removed."
},
"requested_ai_provider": {
"enum": [
"default",
"mistral",
"openai",
"anthropic",
"other"
],
"type": "string",
"description": "The language model provider the caller wants. 'default' is the vendor's EU standard configuration."
},
"number_of_client_assistants": {
"type": "integer",
"maximum": 10000,
"minimum": 1,
"description": "How many separate businesses or client assistants are to be served. More than one points to the agency plan."
},
"requires_custom_widget_domain": {
"type": "boolean",
"description": "The widget must run on the caller's own domain."
},
"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)."
},
"requires_full_omnichannel_inbox": {
"type": "boolean",
"description": "A full omnichannel inbox or helpdesk across channels is required."
}
},
"additionalProperties": false
}