Smartwebchat

Create and manage website chatbots for European SMBs: bots, chat, and captured leads.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
84%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,591Tokens (tool definitions)
~2.2 KBTypical response size
Significant attention impact (2.02% of 128k context)

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-http

What it can do

Tool inventory

Tools (10)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded10 tools