HeySale — AI Website Salesperson
Create and install an AI Website Salesperson for sales, qualification, and lead capture.
我该使用它吗
质量与安全性
发现(3)
- HIGH
- MEDIUM在 create_website_salesperson 中
- LOW在 verify_salesperson_installation 中
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"heysale": {
"url": "https://hey.sale/mcp"
}
}
}远程端点
https://hey.sale/mcpstreamable-http它能做什么
工具清单
工具(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.
输入模式
{
"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"
}输出模式
{
"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.
输入模式
{
"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"
}输出模式
{
"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.
输入模式
{
"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"
}输出模式
{
"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.
输入模式
{
"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"
}输出模式
{
"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.
输入模式
{
"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"
}输出模式
{
"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.
输入模式
{
"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"
}输出模式
{
"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": {}
}社区
证据