{
  "name": "lead-friendly-workspace",
  "description": "Org-scoped MCP server for one Lead Friendly account: read contacts, deals, appointments, calls and the account's setup; text, call and book through the platform's compliance checks; build agents, campaigns and automations that start switched off.",
  "version": "1.0.0",
  "protocol": "mcp",
  "transport": "streamable-http",
  "endpoint": "https://www.leadfriendly.com/api/mcp/v1",
  "authentication": {
    "type": "bearer",
    "token_prefixes": [
      "lf_live_",
      "vck_live_"
    ],
    "how_to_get_one": "https://www.leadfriendly.com/settings/api-keys",
    "header": "Authorization",
    "alternate_header": "X-LF-Api-Key"
  },
  "scopes": [
    "read",
    "write",
    "configure"
  ],
  "scope_rules": "Keys are issued under Settings → API keys as read only, read + configure (\"Read + setup\"), or read + write. A read-only key sees only the read tools. A read + configure key also sees the configure (account setup) tools, which build things switched off, and never the write tools that text, call, book or buy. A read + write key sees every tool: write also covers the configure tools.",
  "tools": [
    {
      "name": "search_contacts",
      "scope": "read",
      "description": "Find CRM contacts by name, phone, email, company, tag or status."
    },
    {
      "name": "get_contact",
      "scope": "read",
      "description": "One contact in full, with activity timeline and consent position."
    },
    {
      "name": "list_deals",
      "scope": "read",
      "description": "Vehicle deals on the desk, filterable by status or contact."
    },
    {
      "name": "get_deal",
      "scope": "read",
      "description": "Full desk state for one deal, including missing and unsigned documents."
    },
    {
      "name": "list_appointments",
      "scope": "read",
      "description": "Upcoming appointments in date order."
    },
    {
      "name": "list_calls",
      "scope": "read",
      "description": "Recent calls: who called, which AI agent answered, the outcome and a short summary; filter by callback needed or topic."
    },
    {
      "name": "get_call",
      "scope": "read",
      "description": "Call metadata, transcript, compliance flags and a 5-minute signed recording URL."
    },
    {
      "name": "check_outreach_basis",
      "scope": "read",
      "description": "Whether one contact may be contacted for one purpose, and on what grounds. No send, no spend."
    },
    {
      "name": "get_org_status",
      "scope": "read",
      "description": "Wallet, KYC, 10DLC registration, disclosure settings, live agents and numbers."
    },
    {
      "name": "list_ai_agents",
      "scope": "read",
      "description": "The account's AI voice agents and whether each one is live."
    },
    {
      "name": "get_ai_agent",
      "scope": "read",
      "description": "One agent's configuration: scripts, greetings, knowledge, voice, booking and transfer setup."
    },
    {
      "name": "list_agent_templates",
      "scope": "read",
      "description": "The industry templates a new AI agent can be built from."
    },
    {
      "name": "get_business_hours",
      "scope": "read",
      "description": "Opening hours, time zone and dated exceptions such as holidays."
    },
    {
      "name": "list_campaigns",
      "scope": "read",
      "description": "Outbound calling campaigns with status, schedule and outcome totals."
    },
    {
      "name": "list_workflows",
      "scope": "read",
      "description": "Automations with their triggers, status and current enrolments."
    },
    {
      "name": "list_phone_numbers",
      "scope": "read",
      "description": "The account's numbers, which agent each one rings, SMS capability and health."
    },
    {
      "name": "list_fi_products",
      "scope": "read",
      "description": "The dealership's F&I product menu."
    },
    {
      "name": "get_desk_defaults",
      "scope": "read",
      "description": "The dealership's fees, tax rates and term and rate presets for structuring a deal."
    },
    {
      "name": "search_available_numbers",
      "scope": "read",
      "description": "Phone numbers available to buy, with the monthly cost. Buys nothing."
    },
    {
      "name": "create_contact",
      "scope": "write",
      "description": "Create a contact, deduping on phone then email."
    },
    {
      "name": "update_contact",
      "scope": "write",
      "description": "Change status, name, email, company, or add a tag."
    },
    {
      "name": "log_activity",
      "scope": "write",
      "description": "Write a note, task or outcome onto a contact's timeline."
    },
    {
      "name": "send_sms",
      "scope": "write",
      "description": "Send a compliance-gated text from the account's own number."
    },
    {
      "name": "start_outbound_call",
      "scope": "write",
      "description": "Have an AI voice agent place a live call, with AI disclosure always on."
    },
    {
      "name": "book_appointment",
      "scope": "write",
      "description": "Book an appointment for a contact."
    },
    {
      "name": "update_deal_stage",
      "scope": "write",
      "description": "Move a deal to a new stage, validated and side-effect synced."
    },
    {
      "name": "create_agent_from_website",
      "scope": "configure",
      "description": "Build an AI voice agent from a template and the business's website. It starts in review and answers no calls."
    },
    {
      "name": "update_agent_script",
      "scope": "configure",
      "description": "Edit an agent's script, greeting, knowledge or voice. It cannot switch an agent on."
    },
    {
      "name": "assign_number_to_agent",
      "scope": "configure",
      "description": "Route one of the account's numbers to an agent."
    },
    {
      "name": "set_business_hours",
      "scope": "configure",
      "description": "Set the daily opening hours and time zone."
    },
    {
      "name": "create_campaign",
      "scope": "configure",
      "description": "Create an outbound calling campaign as a draft that dials nobody until a person turns it on."
    },
    {
      "name": "create_workflow",
      "scope": "configure",
      "description": "Create an automation, paused."
    },
    {
      "name": "pause_campaign",
      "scope": "configure",
      "description": "Pause a running campaign. No tool starts one."
    },
    {
      "name": "pause_workflow",
      "scope": "configure",
      "description": "Pause a running automation. No tool starts one."
    },
    {
      "name": "create_fi_product",
      "scope": "configure",
      "description": "Add a product to the dealership's F&I menu."
    },
    {
      "name": "set_fi_product_active",
      "scope": "configure",
      "description": "Show or hide an F&I product. There is no delete."
    },
    {
      "name": "set_desk_defaults",
      "scope": "configure",
      "description": "Change the dealership's fees, tax rates and deal presets."
    },
    {
      "name": "buy_number",
      "scope": "write",
      "description": "Buy a phone number. The first call only quotes the monthly cost; a second call with confirm:true buys it. Refused without approved identity verification, a person's acceptance of the phone-number TCPA terms, and wallet funds."
    }
  ],
  "documentation": "https://www.leadfriendly.com/developers",
  "setup_guide": "https://www.leadfriendly.com/guides/connect-your-ai-assistant",
  "public_server": "https://www.leadfriendly.com/api/mcp",
  "contact": "hello@leadfriendly.com"
}
