HeySale — AI Website Salesperson
Create and install an AI Website Salesperson for sales, qualification, and lead capture.
Sollte ich dies verwenden
Qualität und Sicherheit
Befunde (3)
- HIGH
- MEDIUMin create_website_salesperson
- LOWin verify_salesperson_installation
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"heysale": {
"url": "https://hey.sale/mcp"
}
}
}Remote-Endpunkte
https://hey.sale/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (6)
🟡create_website_salesperson(website_url, business_name, integration_source, external_project_id, campaign)
Give any public website an AI salesperson that talks to its visitors, answers questions about the business, and captures leads. Use this when someone wants to add a salesperson, live chat, a sales assistant or a chatbot alternative to a site. Provide the website address; the salesperson reads the site itself. The response always includes an explicit salesperson_id — keep it, because every other HeySale tool needs it — plus the one-line install script and a claim_url to give the website owner. Safe to call twice for the same website. To try HeySale without touching a real website, use website_url https://hey.sale/mcp-test — that creates an isolated, disposable test salesperson on HeySale's own reviewer sandbox.
Eingabe-Schema
{
"type": "object",
"properties": {
"website_url": {
"type": "string",
"minLength": 3,
"maxLength": 300,
"description": "The public website address, e.g. https://example.com"
},
"business_name": {
"description": "The business name, if known.",
"type": "string",
"maxLength": 120
},
"integration_source": {
"description": "The AI platform making this call, e.g. claude, chatgpt, cursor, lovable, replit.",
"type": "string",
"maxLength": 40
},
"external_project_id": {
"description": "A stable id for the calling project, so repeat calls reuse the same salesperson.",
"type": "string",
"maxLength": 200
},
"campaign": {
"type": "string",
"maxLength": 60
}
},
"required": [
"website_url"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Ausgabe-Schema
{
"type": "object",
"properties": {
"success": {
"type": "boolean"
},
"salesperson": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The salesperson_id."
},
"name": {
"type": "string"
},
"website_url": {
"type": "string"
},
"domain": {
"type": "string"
}
},
"required": [
"id",
"name"
],
"additionalProperties": {}
},
"salesperson_id": {
"type": "string"
},
"salesperson_name": {
"type": "string"
},
"website_url": {
"type": "string"
},
"status": {
"type": "string",
"description": "Build state of the salesperson, e.g. analyzing, building, ready, failed."
},
"ownership": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"unclaimed",
"claimed"
],
"description": "Whether a HeySale account owns this salesperson yet."
},
"claim_url": {
"description": "One-time link the website owner uses to claim the salesperson. Absent once claimed.",
"type": [
"string",
"null"
]
},
"manage_url": {
"description": "Where the owner manages the salesperson. Present once claimed.",
"type": [
"string",
"null"
]
}
},
"required": [
"status"
],
"additionalProperties": {}
},
"next_action": {
"description": "Plain-language next step for the caller.",
"type": "string"
},
"test_environment": {
"type": "boolean"
},
"environment": {
"type": "string"
},
"expires_at": {
"type": [
"string",
"null"
]
},
"integration_source": {
"type": "string"
},
"reused": {
"description": "True when an existing salesperson for that website was returned instead of a new one.",
"type": "boolean"
},
"free_minutes": {
"type": "number"
},
"installation": {
"type": "object",
"properties": {
"script": {
"description": "The one-line script to add to the website before the closing body tag.",
"type": "string"
},
"type": {
"type": "string"
},
"placement": {
"type": "string"
},
"async": {
"type": "boolean"
},
"detection": {
"type": "string"
},
"installation_status": {
"description": "What HeySale's own telemetry currently sees.",
"type": "string",
"enum": [
"detected",
"not_detected",
"domain_mismatch",
"unknown"
]
},
"review_install_url": {
"description": "Sandbox only: expiring link that installs the test salesperson.",
"type": "string"
}
},
"additionalProperties": {}
},
"preview_url": {
"type": "string"
},
"note": {
"type": "string"
}
},
"required": [
"success",
"salesperson",
"salesperson_id",
"salesperson_name",
"website_url",
"status",
"ownership",
"installation"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}🟢check_salesperson_status(salesperson_id)
Find out whether a website salesperson has finished reading the website and is ready to talk to visitors, and whether its script has been detected on the live site. Give it the salesperson_id returned when the salesperson was created.
Eingabe-Schema
{
"type": "object",
"properties": {
"salesperson_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The salesperson_id returned by create_website_salesperson."
}
},
"required": [
"salesperson_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Ausgabe-Schema
{
"type": "object",
"properties": {
"salesperson": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The salesperson_id."
},
"name": {
"type": "string"
},
"website_url": {
"type": "string"
},
"domain": {
"type": "string"
}
},
"required": [
"id",
"name"
],
"additionalProperties": {}
},
"salesperson_id": {
"type": "string"
},
"salesperson_name": {
"type": "string"
},
"website_url": {
"type": "string"
},
"status": {
"type": "string",
"description": "Build state of the salesperson, e.g. analyzing, building, ready, failed."
},
"ownership": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"unclaimed",
"claimed"
],
"description": "Whether a HeySale account owns this salesperson yet."
},
"claim_url": {
"description": "One-time link the website owner uses to claim the salesperson. Absent once claimed.",
"type": [
"string",
"null"
]
},
"manage_url": {
"description": "Where the owner manages the salesperson. Present once claimed.",
"type": [
"string",
"null"
]
}
},
"required": [
"status"
],
"additionalProperties": {}
},
"next_action": {
"description": "Plain-language next step for the caller.",
"type": "string"
},
"test_environment": {
"type": "boolean"
},
"environment": {
"type": "string"
},
"expires_at": {
"type": [
"string",
"null"
]
},
"installed": {
"type": "boolean"
},
"installation_status": {
"type": "string",
"enum": [
"detected",
"not_detected",
"domain_mismatch",
"unknown"
]
},
"domain": {
"type": [
"string",
"null"
]
},
"detected_domains": {
"type": "array",
"items": {
"type": "string"
}
},
"last_seen_at": {
"description": "When the script was last seen loading. Null before installation.",
"type": [
"string",
"null"
]
}
},
"required": [
"salesperson",
"salesperson_id",
"salesperson_name",
"website_url",
"status",
"ownership"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}🟢get_salesperson_installation(salesperson_id)
Return the exact one-line script to add to a website so its salesperson appears for visitors, plus where to place it and whether HeySale has detected it yet. Give it the salesperson_id returned when the salesperson was created.
Eingabe-Schema
{
"type": "object",
"properties": {
"salesperson_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The salesperson_id returned by create_website_salesperson."
}
},
"required": [
"salesperson_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Ausgabe-Schema
{
"type": "object",
"properties": {
"salesperson": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The salesperson_id."
},
"name": {
"type": "string"
},
"website_url": {
"type": "string"
},
"domain": {
"type": "string"
}
},
"required": [
"id",
"name"
],
"additionalProperties": {}
},
"salesperson_id": {
"type": "string"
},
"salesperson_name": {
"type": "string"
},
"website_url": {
"type": "string"
},
"status": {
"type": "string",
"description": "Build state of the salesperson, e.g. analyzing, building, ready, failed."
},
"ownership": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"unclaimed",
"claimed"
],
"description": "Whether a HeySale account owns this salesperson yet."
},
"claim_url": {
"description": "One-time link the website owner uses to claim the salesperson. Absent once claimed.",
"type": [
"string",
"null"
]
},
"manage_url": {
"description": "Where the owner manages the salesperson. Present once claimed.",
"type": [
"string",
"null"
]
}
},
"required": [
"status"
],
"additionalProperties": {}
},
"next_action": {
"description": "Plain-language next step for the caller.",
"type": "string"
},
"test_environment": {
"type": "boolean"
},
"environment": {
"type": "string"
},
"expires_at": {
"type": [
"string",
"null"
]
},
"installation": {
"type": "object",
"properties": {
"script": {
"description": "The one-line script to add to the website before the closing body tag.",
"type": "string"
},
"type": {
"type": "string"
},
"placement": {
"type": "string"
},
"async": {
"type": "boolean"
},
"detection": {
"type": "string"
},
"installation_status": {
"description": "What HeySale's own telemetry currently sees.",
"type": "string",
"enum": [
"detected",
"not_detected",
"domain_mismatch",
"unknown"
]
},
"review_install_url": {
"description": "Sandbox only: expiring link that installs the test salesperson.",
"type": "string"
}
},
"additionalProperties": {}
},
"preview_url": {
"type": "string"
}
},
"required": [
"salesperson",
"salesperson_id",
"salesperson_name",
"website_url",
"status",
"ownership",
"installation"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}🟢verify_salesperson_installation(salesperson_id)
Check whether a HeySale salesperson has actually been installed on its website and is reporting back to HeySale. Uses HeySale's own telemetry, so it works with single-page apps, tag managers and deferred script loading — never scrape the website's HTML to answer this. Give it the salesperson_id returned when the salesperson was created.
Eingabe-Schema
{
"type": "object",
"properties": {
"salesperson_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The salesperson_id returned by create_website_salesperson."
}
},
"required": [
"salesperson_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Ausgabe-Schema
{
"type": "object",
"properties": {
"salesperson": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The salesperson_id."
},
"name": {
"type": "string"
},
"website_url": {
"type": "string"
},
"domain": {
"type": "string"
}
},
"required": [
"id",
"name"
],
"additionalProperties": {}
},
"salesperson_id": {
"type": "string"
},
"salesperson_name": {
"type": "string"
},
"website_url": {
"type": "string"
},
"status": {
"type": "string",
"description": "Build state of the salesperson, e.g. analyzing, building, ready, failed."
},
"ownership": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"unclaimed",
"claimed"
],
"description": "Whether a HeySale account owns this salesperson yet."
},
"claim_url": {
"description": "One-time link the website owner uses to claim the salesperson. Absent once claimed.",
"type": [
"string",
"null"
]
},
"manage_url": {
"description": "Where the owner manages the salesperson. Present once claimed.",
"type": [
"string",
"null"
]
}
},
"required": [
"status"
],
"additionalProperties": {}
},
"next_action": {
"description": "Plain-language next step for the caller.",
"type": "string"
},
"test_environment": {
"type": "boolean"
},
"environment": {
"type": "string"
},
"expires_at": {
"type": [
"string",
"null"
]
},
"installed": {
"type": "boolean"
},
"installation_status": {
"type": "string",
"enum": [
"detected",
"not_detected",
"domain_mismatch",
"unknown"
]
},
"domain": {
"type": [
"string",
"null"
]
},
"detected_domains": {
"type": "array",
"items": {
"type": "string"
}
},
"last_seen_at": {
"description": "When the script was last seen loading. Null before installation.",
"type": [
"string",
"null"
]
},
"message": {
"type": "string"
}
},
"required": [
"salesperson",
"salesperson_id",
"salesperson_name",
"website_url",
"status",
"ownership"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}🟡configure_salesperson(salesperson_id, name, greeting, objective, api_key)
Change a salesperson's name, its opening line, or the goal it works towards. While a salesperson is still unclaimed this can be set as part of setting it up. Once the website owner has claimed it, changes must be made by the owner in HeySale — do not ask anyone for an API key.
Eingabe-Schema
{
"type": "object",
"properties": {
"salesperson_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The salesperson_id returned by create_website_salesperson."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"greeting": {
"type": "string",
"minLength": 1,
"maxLength": 500
},
"objective": {
"description": "What the salesperson should aim for.",
"type": "string",
"minLength": 1,
"maxLength": 500
},
"api_key": {
"description": "Developers only. Not required, and never ask a website owner for one.",
"type": "string",
"minLength": 10,
"maxLength": 200
}
},
"required": [
"salesperson_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Ausgabe-Schema
{
"type": "object",
"properties": {
"salesperson": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The salesperson_id."
},
"name": {
"type": "string"
},
"website_url": {
"type": "string"
},
"domain": {
"type": "string"
}
},
"required": [
"id",
"name"
],
"additionalProperties": {}
},
"salesperson_id": {
"type": "string"
},
"salesperson_name": {
"type": "string"
},
"website_url": {
"type": "string"
},
"status": {
"type": "string",
"description": "Build state of the salesperson, e.g. analyzing, building, ready, failed."
},
"ownership": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"unclaimed",
"claimed"
],
"description": "Whether a HeySale account owns this salesperson yet."
},
"claim_url": {
"description": "One-time link the website owner uses to claim the salesperson. Absent once claimed.",
"type": [
"string",
"null"
]
},
"manage_url": {
"description": "Where the owner manages the salesperson. Present once claimed.",
"type": [
"string",
"null"
]
}
},
"required": [
"status"
],
"additionalProperties": {}
},
"next_action": {
"description": "Plain-language next step for the caller.",
"type": "string"
},
"test_environment": {
"type": "boolean"
},
"environment": {
"type": "string"
},
"expires_at": {
"type": [
"string",
"null"
]
},
"updated": {
"description": "Which fields were changed.",
"type": "array",
"items": {
"type": "string"
}
},
"success": {
"type": "boolean"
},
"error_code": {
"type": "string"
},
"message": {
"type": "string"
},
"authentication_required": {
"type": "boolean"
}
},
"required": [
"salesperson",
"salesperson_id",
"salesperson_name",
"website_url",
"status",
"ownership"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}🟢get_salesperson_results(salesperson_id, days, api_key)
Summarise how many visitors talked to the salesperson, how many left their details, and what they asked about most. This is private business data: it is only returned to an authorised caller. Never ask a website owner for an API key — send them to HeySale instead.
Eingabe-Schema
{
"type": "object",
"properties": {
"salesperson_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The salesperson_id returned by create_website_salesperson."
},
"days": {
"type": "integer",
"minimum": 1,
"maximum": 90
},
"api_key": {
"description": "Developers only. Not required for setup, and never ask a website owner for one.",
"type": "string",
"minLength": 10,
"maxLength": 200
}
},
"required": [
"salesperson_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Ausgabe-Schema
{
"type": "object",
"properties": {
"salesperson": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The salesperson_id."
},
"name": {
"type": "string"
},
"website_url": {
"type": "string"
},
"domain": {
"type": "string"
}
},
"required": [
"id",
"name"
],
"additionalProperties": {}
},
"salesperson_id": {
"type": "string"
},
"salesperson_name": {
"type": "string"
},
"website_url": {
"type": "string"
},
"status": {
"type": "string",
"description": "Build state of the salesperson, e.g. analyzing, building, ready, failed."
},
"ownership": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"unclaimed",
"claimed"
],
"description": "Whether a HeySale account owns this salesperson yet."
},
"claim_url": {
"description": "One-time link the website owner uses to claim the salesperson. Absent once claimed.",
"type": [
"string",
"null"
]
},
"manage_url": {
"description": "Where the owner manages the salesperson. Present once claimed.",
"type": [
"string",
"null"
]
}
},
"required": [
"status"
],
"additionalProperties": {}
},
"next_action": {
"description": "Plain-language next step for the caller.",
"type": "string"
},
"test_environment": {
"type": "boolean"
},
"environment": {
"type": "string"
},
"expires_at": {
"type": [
"string",
"null"
]
},
"period_days": {
"type": "number"
},
"conversations": {
"type": "number"
},
"talk_minutes": {
"type": "number"
},
"leads": {
"type": "number"
},
"conversion_rate": {
"type": "number"
},
"synthetic": {
"description": "True when the figures come from the reviewer sandbox.",
"type": "boolean"
},
"top_questions": {
"type": "array",
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "object",
"properties": {
"theme": {
"type": "string"
},
"count": {
"type": "number"
}
},
"additionalProperties": {}
}
]
}
},
"recent_leads": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": [
"string",
"null"
]
},
"email": {
"type": [
"string",
"null"
]
},
"company": {
"type": [
"string",
"null"
]
},
"interest": {
"type": [
"string",
"null"
]
},
"question": {
"type": [
"string",
"null"
]
},
"status": {
"type": [
"string",
"null"
]
},
"captured_at": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": {}
}
},
"authentication_required": {
"type": "boolean"
},
"note": {
"type": "string"
}
},
"required": [
"salesperson",
"salesperson_id",
"salesperson_name",
"website_url",
"status",
"ownership"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}Community
Nachweis