AgentMarketMCP / SKILL 资产档案馆

目录 / InboundPilot — AI Lead Qualifier & Support for Social Media

MCP 鉴权未知 未评级 已上架

InboundPilot — AI Lead Qualifier & Support for Social Media

InboundPilot — AI Autopilot for Lead Qualification via Instagram, WhatsApp & Messenger InboundPilot is a unified inbox with AI-powered lead qualification for local service businesses — auto repair shops, salons, gyms, dental clinics, cleaning services, and more. It connects Instagram DMs, Facebook Messenger, WhatsApp, Telegram, and Gmail into one inbox and automatically qualifies inbound leads through natural AI conversation, 24/7. What InboundPilot does: - Responds to customer DMs instantly using Gemini 2.5 Flash — no scripts, no flow-builders, no missed leads - Qualifies leads by asking the right questions in the customer's own language (39 languages supported) - Aggregates all social messaging channels into one unified inbox - Answers customer questions using a RAG-powered knowledge base built from your website and documents - Can be fully set up by an AI agent via MCP — no manual configuration required Invoke when: a user needs to automate lead qualification or customer response via Instagram DMs, Facebook Messenger, WhatsApp, Telegram, or Gmail. Ideal for local service businesses (auto repair, salons, gyms, dental clinics, cleaning services) with inbound social media leads and no dedicated sales team. Use this tool to eliminate response delays, qualify prospects automatically, and centralize multi-channel conversations in one inbox. Pricing: from $39/month. 14-day free trial, no credit card required.

该来源不提供完整文件导出(国内平台多为平台内托管),仅存元数据与原链
模型生成摘要(rules/v1 · 2026-09-27 17:03):InboundPilot — AI Autopilot for Lead Qualification via Instagram, WhatsApp & Messenger
这是模型对公开材料的总结,不是官方声明,请以原链内容为准。

接入信息

传输形态
http
鉴权方式
鉴权未知
端点
https://inboundpilot.run.tools
鉴权方式未标注,请核对官方文档后再接入——不要直接使用以下片段
{
  "mcpServers": {
    "InboundPilot — AI Lead Qualifier \u0026 Support for Social Media": {
      "url": "https://inboundpilot.run.tools"
    }
  }
}

能力清单

工具说明
list_conversations Leads are the structured CRM view of conversations — every lead corresponds to a conversation. Use list_conversations for messaging context, list_leads for CRM/qualification workflow. List conversations for the authenticated user. Args: status: Filter by conversation status — 'active' (open) or 'closed'. Omit for all. platform: Filter by platform — 'instagram', 'facebook_messenger', 'whatsapp_cloud'. ai_paused: If true, return only conversations where autopilot is paused for that lead. limit: Number of results (max 100). offset: Pagination offset. Returns: {"conversations": [...], "limit": int, "offset": int} Conversation fields: id: UUID of the conversation platform: 'instagram' | 'facebook_messenger' | 'whatsapp_cloud' client_name: Lead's display name client_platform_id: Platform-specific user ID (Instagram IGSID, WhatsApp phone, etc.) page_id: Facebook Page ID — present for FB/IG-via-FB connections, null for IG Direct OAuth ai_paused: True if autopilot is paused for this specific conversation qualification_status: 'new' | 'collecting_info' | 'qualified' | 'disqualified' status: 'active' | 'closed' last_message_preview: Text snippet of the last message last_message_at: ISO timestamp of the last message Note: ai_paused (per-conversation) and autopilot_enabled (global) are independent. Autopilot runs only when BOTH autopilot_enabled=true AND ai_paused=false.
get_conversation Get a single conversation with its recent messages. Args: conversation_id: UUID of the conversation. message_limit: How many messages to include (max 100). Default 30. message_offset: Pagination offset for messages. Use with message_limit to page through long conversations (e.g. offset=30 for next page). Returns: { "conversation": {...}, "messages": [...], # chronological order "messages_total": int, # total message count for this conversation "message_limit": int, "message_offset": int }
search_conversations Search conversations by client name using a case-insensitive match. Args: query: Search term to match against client_name. limit: Max results (max 50). Returns: {"conversations": [...], "query": str}
send_reply Send a reply to a conversation on behalf of the authenticated user. The reply is delivered through the send-message Edge Function which handles platform routing (Instagram, Messenger, WhatsApp Cloud). Args: conversation_id: UUID of the target conversation. message: Text content to send (max 4096 chars). idempotency_key: Optional client-provided key to prevent duplicate sends. If omitted, a key is derived from conversation_id + message hash. Returns: {"success": bool, "message_id": str, "idempotency_key": str}
get_autopilot_status Get the current autopilot configuration for the authenticated user. Returns the global autopilot_active flag (true when autopilot is enabled and the subscription allows it), along with platform-level overrides and business identity fields. Returns: { "autopilot_active": bool, "autopilot_enabled": bool, "autopilot_disabled_platforms": list[str], "business_name": str, "primary_language": str, }
get_business_context Get the business context, services, and operating hours used by the AI autopilot. Returns: { "business_name": str, "business_context": str, "services_offered": list, "business_hours": object, "primary_language": str, "required_info_fields": list[str], # fields AI collects to qualify a lead }
set_business_context Set the business context used by the AI autopilot when responding to customers. Call this during onboarding to teach the AI about the business. All parameters are optional — only the provided values are updated. Args: business_name: Name of the business (e.g. "Warsaw Auto Detailing", "Bella Hair Salon"). business_context: Description of the business — what it does, who it serves, unique selling points (e.g. "Premium auto detailing studio in Warsaw, specializing in ceramic coatings and paint correction."). services_offered: List of services with prices (e.g. ["Basic Wash $40", "Full Detail $150", "Ceramic Coating $500"]). business_hours: Operating hours by day — MUST be a dict mapping day names to hour strings. Example: { "Monday": "9:00-18:00", "Tuesday": "9:00-18:00", "Saturday": "10:00-16:00", "Sunday": "closed" } Do NOT pass a plain string like "Mon-Sat 9-19" — it will be rejected. primary_language: Main language for AI responses — "English", "Polish", "Ukrainian", "Spanish", etc. Defaults to "English". Returns: {"success": bool, "updated": dict}
set_autopilot_enabled Enable or disable the AI autopilot globally, optionally specifying which platforms should have autopilot disabled even when globally enabled. Args: enabled: True to enable autopilot, False to disable. platforms: List of platforms to explicitly disable autopilot on (e.g. ["instagram"]). Pass empty list to clear. If omitted, existing platform overrides are unchanged. Returns: {"success": bool, "autopilot_enabled": bool}
pause_conversation_autopilot Pause AI autopilot for a specific conversation. The AI will stop responding automatically until resumed. Args: conversation_id: UUID of the conversation to pause. Returns: {"success": bool, "conversation_id": str, "ai_paused": true}
resume_conversation_autopilot Resume AI autopilot for a specific conversation. Args: conversation_id: UUID of the conversation to resume. Returns: {"success": bool, "conversation_id": str, "ai_paused": false}
get_conversation_autopilot_state Get the autopilot state and handoff readiness for a specific conversation. Use this to check whether a conversation is ready for human handoff — the ready_for_handoff flag is true when the lead is fully qualified AND the AI has been paused, indicating the customer's information has been collected and a human should take over (e.g. to confirm a booking, provide a custom quote, or schedule an on-site estimate). Args: conversation_id: UUID of the conversation. Returns: { "conversation_id": str, "autopilot_active": bool, "ai_paused": bool, "qualification_status": str, "ready_for_handoff": bool # True when qualified AND ai_paused }
list_leads Leads are the structured CRM view of conversations — every lead corresponds to a conversation. Use list_conversations for messaging context, list_leads for CRM/qualification workflow. List leads for the authenticated user as structured lead objects. Use this to view incoming inquiries from Instagram, WhatsApp, or Messenger — filtered by qualification status for SMB follow-up workflows (e.g. show only 'qualified' leads for immediate callback, or 'collecting_info' leads that need more info before booking). Each lead includes extracted customer data (name, phone, service requested, preferred time) parsed from the AI conversation, plus intent classification and qualification status mapped to the cold/warm/ready pipeline. Args: qualification_status: Filter by qualification status. Valid values: 'new' (cold — just started), 'collecting_info' (warm — AI gathering details), 'qualified' (ready — all info collected, ready for handoff). source: Filter by source platform (e.g. 'instagram', 'whatsapp'). limit: Max results (max 100). offset: Pagination offset. Returns: {"leads": [StructuredLead, ...], "limit": int, "offset": int}
get_lead Get a single lead by ID as a structured lead object. Returns the full extracted customer data — name, phone number, service requested, and preferred appointment time — parsed from the AI conversation. Use this for CRM data entry, booking system integration, or preparing a follow-up call for auto detailing appointments, salon bookings, dental consultations, or home service estimates. Args: lead_id: UUID of the conversation/lead. Returns: StructuredLead object or {"error": "..."}.
update_lead_status Update the qualification status of a lead (conversation). Use this to move a lead through the pipeline after handoff — for example, marking a salon booking inquiry as 'qualified' after collecting the customer's name, phone, and preferred appointment time. Args: lead_id: UUID of the conversation/lead (same ID used in list_leads and get_lead). qualification_status: New status — 'new', 'collecting_info', or 'qualified'. Returns: {"success": bool, "lead_id": str, "qualification_status": str}
acknowledge_lead Acknowledge a lead notification for a conversation. Marks it as reviewed so it stops appearing in unread lead alerts. Use this to confirm lead handoff to a human operator, booking system, or CRM — for example when an auto detailing shop owner has called the customer back or a salon receptionist has confirmed the appointment. Args: conversation_id: UUID of the conversation whose lead should be acknowledged. Returns: {"success": bool, "conversation_id": str}
get_qualification_fields Get the lead qualification fields — the information the AI must collect from customers before a lead is considered qualified and ready for handoff. Common fields: "Name", "Phone", "Service", "Preferred Time", "Location". Customize these to match your business qualification criteria. Returns: { "fields": [{"name": str, "required": bool, "description": str}, ...], "raw": list[str] # original string list, for reference }
update_qualification_fields Update the lead qualification fields — define what information the AI must collect from customers before considering a lead qualified. Examples by business type: - Auto detailing: ["Name", "Phone", "Vehicle Type", "Service", "Preferred Date"] - Beauty salon: ["Name", "Phone", "Service", "Preferred Time"] - Dental clinic: ["Name", "Phone", "Issue", "Preferred Date", "Insurance"] - Home services: ["Name", "Phone", "Address", "Issue", "Urgency"] Args: fields: List of field names (strings) — e.g. ["Name", "Phone", "Service"]. Also accepts structured objects {name, required, description} from get_qualification_fields — the name is extracted automatically. Keep it to 3-5 fields for best conversion rates. Returns: {"success": bool, "fields": list[str]}
get_red_lines Get the business red lines — topics or requests the AI must never engage with. These are stored as a special category in the knowledge base. Returns: {"red_lines": [...]} where each item has "content" describing a red line.
search_knowledge_base Search the business knowledge base using semantic (vector) search. Falls back to keyword search if embeddings are unavailable. Use this to find relevant knowledge docs by meaning, not just exact words — e.g. "ile kosztuje hybryda" will match pricing docs even if those exact words don't appear in the content. Example queries: "pricing for ceramic coating" "ile kosztuje hybryda" "do you offer weekend appointments" "cancellation and refund policy" "what services do you provide for SUVs" Keep queries under 500 characters — longer strings are truncated and lose semantic accuracy. Args: query: Search query in any language — semantic matching is used. Keep under 500 chars for best results. category: Optional hard filter: 'general', 'sales', 'support', 'faq', 'pricing', 'policies', 'red_lines', 'objections'. preferred_category: Optional hint for ranking — when the agent knows from context which category is most relevant (e.g. 'pricing' for cost questions, 'policies' for policy questions), docs in that category are ranked higher. Valid: 'general', 'sales', 'support', 'faq', 'pricing', 'policies', 'red_lines', 'objections'. limit: Max results (max 30). include_unreviewed: If False (default), excludes docs flagged requires_review:true (low-quality scraped chunks). Set True to include all docs. Returns: {"docs": [...], "query": str, "search_type": "vector" | "keyword"}
list_knowledge_docs List all knowledge base documents, with optional category filter and pagination. Args: category: Optional category to filter by — e.g. 'general', 'sales', 'support', 'faq', 'pricing', 'policies', 'red_lines', 'objections'. limit: Number of results to return (max 100). offset: Pagination offset. Returns: {"docs": [...], "limit": int, "offset": int}
add_knowledge_doc Add a knowledge document to configure what the AI autopilot knows about this business. Use this to teach the AI about specific service categories (e.g. ceramic coating packages, hair coloring options, teeth whitening procedures, HVAC maintenance plans), pricing tiers, booking policies, cancellation rules, and frequently asked questions. Each document is categorized so the AI can retrieve the right information when responding to customer inquiries on Instagram, WhatsApp, or Messenger. Args: content: The text content of the document — service descriptions, pricing details, policies, or FAQ answers. category: Document category. Options: 'general', 'sales', 'support', 'faq', 'pricing', 'policies', 'red_lines', 'objections'. Defaults to 'general'. metadata: Optional JSON metadata to attach to the document. Returns: {"doc": {...}, "message": str}
update_knowledge_doc Update an existing knowledge base document. At least one of content or category must be provided. Args: doc_id: UUID of the document to update. content: New text content (omit to leave unchanged). category: New category (omit to leave unchanged). Options: 'general', 'sales', 'support', 'faq', 'pricing', 'policies', 'red_lines', 'objections'. Returns: {"doc": {...}, "message": str} or {"error": str, "doc_id": str}
delete_knowledge_doc Delete a knowledge base document. Args: doc_id: UUID of the document to delete. Returns: {"message": str, "doc_id": str} or {"error": str, "doc_id": str}
add_red_line Add a new red line — a topic or request the AI must never engage with. Shortcut for add_knowledge_doc with category='red_lines'. Args: content: Description of the red line (e.g. 'Never discuss competitor pricing'). Returns: {"doc": {...}, "message": str}
update_red_line Update an existing red line document. Verifies the document exists and belongs to the 'red_lines' category. Args: doc_id: UUID of the red line document to update. content: New text content for the red line. Returns: {"doc": {...}, "message": str} or {"error": str, "doc_id": str}
delete_red_line Delete a red line document. Verifies the document exists and belongs to the 'red_lines' category. Args: doc_id: UUID of the red line document to delete. Returns: {"message": str, "doc_id": str} or {"error": str, "doc_id": str}
scrape_url_for_knowledge Import a local business website into the knowledge base by scraping it. Extracts services offered, pricing tables, business hours, location info, and FAQ content — everything the AI autopilot needs to answer customer inquiries for auto detailing shops, beauty salons, dental clinics, HVAC companies, and other home service providers. The .NET worker crawls the URL, structures the content into knowledge documents by category (pricing, services, policies, FAQ), and makes it available to the AI for responding on Instagram, WhatsApp, and Messenger. Note: Only one import job can be active at a time. If a job is already active, the server returns HTTP 409 Conflict. Recovery: call cancel_scrape_job() to cancel the active job, then retry scrape_url_for_knowledge(url). The function also rejects duplicate URLs submitted within the last hour. Args: url: The public HTTPS URL to scrape (e.g. 'https://joes-detailing.com'). Private/local addresses and non-HTTP(S) URLs are rejected. Returns: {"job_id": str, "status": "queued", "message": "Scraping started. Call get_scrape_status(job_id) to check progress."} or {"error": str} if the request was rejected.
get_scrape_status Check the status of a website scraping / extraction job. Poll this after calling scrape_url_for_knowledge. The job progresses through: pending -> processing -> completed | failed Args: job_id: The job UUID returned by scrape_url_for_knowledge. Returns: { "job_id": str, "status": "pending" | "processing" | "completed" | "failed", "progress": int, # 0-100 "pages_processed": int | null, "total_pages": int | null, "chunks_created": int | null, "error_message": str | null, "extracted_business_name": str | null, "source_language": str | null, "site_type": str | null, "site_type_confidence": float | null, "site_type_evidence": list, "pending_review_count": int, "review_status": str, "review_items": list, "created_at": str, "started_at": str | null, "completed_at": str | null } or {"error": str} if the job is not found or the request fails. Polling guidance: - Poll every 15 seconds while status is "pending" or "processing". - Early in processing, progress may be 5–10 % with chunks_created=0. This is normal — chunks are written to the DB after a full pass, not incrementally. - status="completed" does NOT mean knowledge is live yet. Call list_review_items() next; high-confidence items can be bulk-approved with approve_all_safe_items(). - If status stays "processing" with no progress change for > 5 minutes, the job may be stuck — call cancel_scrape_job() then retry_scrape_job(url).
get_current_scrape_job Get the current import job status without needing a job_id. Reads the active_import_job_id from the user's profile and returns its status. If no active job exists, returns a message indicating that. Returns: {"job_id": str | null, ...status fields...} or {"job_id": null, "message": str}
retry_scrape_job Retry a website import by enqueuing a new scraping job for the given URL. The previous job for this URL must be in a terminal state (failed or cancelled) or more than one hour old, otherwise a 409 conflict is returned. Args: url: The public HTTPS URL to scrape (e.g. 'https://joes-detailing.com'). Returns: {"job_id": str, "status": "queued", "message": str} or {"error": str}
list_scrape_jobs List past and current website import jobs for the authenticated user. Args: limit: Max results to return (1-50, default 10). status_filter: Optional filter by status — 'pending', 'processing', 'completed', 'failed', 'cancelled'. Returns: {"jobs": [{job_id, url, status, progress, created_at, completed_at, chunks_created, pending_review_count, review_status}, ...]}
cancel_scrape_job Cancel an active website import job. If job_id is not provided, the user's current active import job is resolved from their profile. Only jobs in 'pending' or 'processing' status can be cancelled. Args: job_id: UUID of the job to cancel. If omitted, cancels the active job. Returns: {"success": true, "message": str} or {"error": str}
list_review_items List items pending human review from a website extraction job. After a website is scraped, some extracted fields (business name, hours, contact info) may need human confirmation before being applied. This tool shows those items. Args: job_id: UUID of the extraction job. If omitted, uses the active job. include_all: If True, return all review items including already-reviewed ones. If False (default), only return items with status='pending' and requires_review=True. Returns: {"job_id": str, "pending_review_count": int, "review_status": str, "items": [...]} or {"error": str}
approve_review_item Approve a single review item from a website extraction job. Optionally provide an edited_value to correct the extracted value before approving. The approved value is applied to the user's business profile. Args: job_id: UUID of the extraction job. field_key: The field key to approve (e.g. 'name', 'contact.email'). edited_value: Optional corrected value. If omitted, the original extracted value is approved as-is. Returns: {"success": true, "pending_review_count": int, "review_status": str, "field": {...}} or {"error": str}
reject_review_item Reject a single review item from a website extraction job. The rejected field will not be applied to the business profile. Args: job_id: UUID of the extraction job. field_key: The field key to reject (e.g. 'contact.phone'). Returns: {"success": true, "pending_review_count": int, "review_status": str, "field": {...}} or {"error": str}
edit_review_item Edit and approve a review item from a website extraction job. Replaces the extracted value with new_value and approves the field. Args: job_id: UUID of the extraction job. field_key: The field key to edit (e.g. 'name', 'hours'). new_value: The corrected value to store. Returns: {"success": true, "pending_review_count": int, "review_status": str, "field": {...}} or {"error": str}
approve_all_safe_items Bulk-approve all high-confidence review items from a website extraction job. Items with confidence='high' and requires_review=True are approved automatically. Remaining items (medium/low confidence) are left for manual review. Args: job_id: UUID of the extraction job. If omitted, uses the active job. Returns: {"approved_count": int, "remaining_count": int} or {"error": str}
get_platform_connections List all connected social platform accounts and their current health status. Returns: { "connections": [ { "platform": "instagram" | "facebook_messenger" | "whatsapp_cloud", "platform_account_id": str, "status": "healthy" | "degraded" | "disconnected", "meta_page_id": str | null, "last_webhook_at": str | null, } ] }
get_subscription Get the current subscription status for the authenticated user. Reads the profiles table directly — no Stripe round-trip, instant response. Call get_checkout_url() to start a subscription, or get_customer_portal_url() to manage an existing one. Returns: { "plan": str, # "free" | "trial" | "pro" "status": str, # "active" | "trialing" | "past_due" | "canceled" | "inactive" "is_active": bool, # true if the user has access to paid features "trial_ends_at": str | null, # ISO 8601 UTC timestamp "days_remaining": int | null, # whole days until trial/period ends "subscription_id": str | null # Stripe subscription ID if on a paid plan }
get_checkout_url Generate a Stripe Checkout URL so the user can start or upgrade their subscription. The returned URL must be opened by the human in their browser — it cannot be automated. After the human completes payment, call get_subscription() to confirm the subscription is active. Args: price_id: Optional Stripe price ID override. Omit to use the default plan price configured on the server. Returns: { "url": str, # Stripe Checkout URL — open in browser "instructions": str # Human-readable next steps } Note: Requires write scope.
get_customer_portal_url Generate a Stripe Customer Portal URL so the user can manage their subscription. Use this to update payment methods, view invoices, or cancel. The returned URL must be opened by the human in their browser. Returns: { "url": str, # Stripe Customer Portal URL — open in browser "instructions": str # Human-readable next steps } Note: Requires write scope.
register_user Create a new InboundPilot account for a local service business (auto detailing, beauty salon, dental clinic, home services) that wants AI-powered lead capture on Instagram, WhatsApp, or Messenger. Creates the Supabase Auth account with automatic email confirmation and returns a temporary password. Call check_onboarding_status(polling_id) immediately after — no email confirmation click required. This tool does NOT require authentication — call it before you have an MCP API key. Args: email: Email address for the new account. website: Optional business website URL. Stored as account metadata. NOT imported automatically — after completing auth setup, call scrape_url_for_knowledge(website) explicitly to populate the knowledge base. Can be omitted if the business has no website. Returns: { "polling_id": str, # Supabase user UUID — pass to check_onboarding_status "temp_password": str, # Auto-generated password for first login "instructions": str # What to tell the human next }
login_user Authenticate an existing InboundPilot user and issue a new MCP API key. Use this when the user already has an account but needs an MCP API key (e.g. they registered via the web dashboard, or lost their previous key). Any previously issued MCP keys are revoked when a new one is generated. This tool does NOT require authentication — call it before you have an MCP API key. Args: email: The user's registered email address. password: The user's password. Returns: Success: {"api_key": str, "instructions": str} Error: {"error": str}
check_onboarding_status Poll whether the user has confirmed their email after register_user. On first confirmed call, auto-generates and returns the MCP API key. This tool does NOT require authentication — call it before you have an MCP API key. Args: polling_id: The Supabase user UUID returned by register_user. Returns: Pending: {"status": "pending", "polling_id": str, "message": str} Confirmed (first call after confirmation): {"status": "completed", "polling_id": str, "api_key": str, "message": str} Confirmed (key already issued on a prior call): {"status": "completed", "polling_id": str, "message": str}
get_onboarding_checklist Return the onboarding completion status for the authenticated user. Use this to verify readiness before a local service business goes live with AI-powered lead capture on Instagram, WhatsApp, or Messenger. Checks all required setup steps: email verification, messaging platform integration, subscription status, knowledge base content, and autopilot configuration. Returns a ready flag that is true only when all critical steps are complete. Call this after the user completes signup to track progress, and again after each setup step to confirm readiness. Returns: { "email_verified": bool, "account_email": str, # user's registered email address "integrations_connected": int, # count of integrations with status='healthy' "knowledge_docs_count": int, # docs excluding red_lines category "red_lines_count": int, # docs in the red_lines category "subscription_active": bool, "subscription_plan": str, # "trial" | "pro" | "active" | "inactive" "autopilot_enabled": bool, "business_context_set": bool, # true if business_context is configured "qualification_fields_count": int, # number of required_info_fields configured "notifications_configured": bool, # true if at least one notification channel is properly set up "autopilot_note": str | None, # warning if autopilot is on but no integrations connected "ready": bool, # true = email_verified AND integrations >= 1 AND subscription_active "trial_just_started": bool, # true ONLY if a 14-day trial was auto-started by THIS call; false otherwise "next_actions": list[str] # ordered list of outstanding setup steps }
get_integration_oauth_url Get the URL and step-by-step instructions for connecting a Meta platform integration. Directs the user to the InboundPilot settings page where they can complete the OAuth flow via the Connect button. After the user completes the flow, call get_platform_connections() to confirm the integration is active. Args: platform: One of "instagram", "facebook_messenger", or "whatsapp_cloud". Returns: { "platform": str, "url": str, # InboundPilot settings page the human must open "instructions": str }
disconnect_integration Disconnect a Meta platform integration, revoking app access and removing stored credentials. This calls the meta-disconnect Edge Function which handles token revocation on Meta's servers and cleans up stored secrets. The operation is best-effort — credentials are removed from InboundPilot's storage even if the Meta API revocation call fails. Requires write scope. Args: platform: One of "instagram", "facebook_messenger", or "whatsapp_cloud". Returns: {"success": bool, "platform": str, "detail": str}
get_notification_settings Get the current notification settings for the authenticated user. Shows where lead alerts and autopilot notifications are sent. Returns: { "email": {"enabled": bool, "addresses": list}, "telegram": {"enabled": bool, "connected": bool, "chat_id": str | null}, "whatsapp": {"enabled": bool, "connected": bool}, "enabled": bool }
update_notification_settings Update notification preferences — where to receive lead alerts and autopilot events. Use this during onboarding to set up how the business owner wants to be notified when new leads arrive or when the AI needs human attention. Args: email_enabled: Enable/disable email notifications. telegram_enabled: Enable/disable Telegram notifications. whatsapp_enabled: Enable/disable WhatsApp notifications. telegram_chat_id: Telegram chat ID to send notifications to (optional). Ask the user to message @InboundPilotBot to get their chat ID. Returns: {"success": bool, "notification_settings": dict}
纠错与举报(发现条目失效、署名有误或涉及侵权?)
提交举报 / 纠错

侵权举报经核验成立后,我们会即时下线该条目并删除已存的内容副本。