{
  "id": "02-justcall",
  "slug": "justcall",
  "normalized_name": "justcall",
  "name": "JustCall",
  "vendor_url": "justcall.io",
  "category": "engagement-outbound",
  "what_it_does": "A cloud phone, SMS and WhatsApp platform for sales and support teams built by SaaS Labs, with a sales dialer, CRM integrations and AI voice agents, plus a hosted MCP server that lets an assistant read and act on calls, messages, contacts, numbers and users.",
  "ai_features": "Conversation intelligence, AI coaching, agent assist, automatic call scoring, transcription, moment analysis and sentiment analysis are all first-party features, and an AI Voice Agent product handles inbound calls. The MCP server itself adds no intelligence; it exposes the account to whatever model is calling.",
  "mcp_status": "official",
  "mcp_url": "https://mcp.justcall.host/mcp (docs: https://developer.justcall.io/docs/mcp; source repo: https://github.com/saaslabsco/justcall-mcp-server)",
  "mcp_auth": "api key. The vendor's docs show an Authorization header of the form \"Bearer <JUSTCALL_API_KEY>:<JUSTCALL_API_SECRET>\", a key and secret pair joined by a colon, for Cursor, Windsurf and Claude Desktop alike.",
  "api_gate": "paid - JustCall publishes self-serve plans and titles its own pricing page \"Business Phone System Plans Starting from $29/Month\". That page lists \"API access & workflows\" as a plan feature, described as \"Build custom workflows for your business with JustCall's open APIs. (up to 1,800 requests/hour)\". The per-tier feature matrix is rendered client-side and did not fetch, so the exact plan floor for API access is not recorded here rather than guessed.",
  "revops_role": "The dialer and multichannel messaging layer for an SMB or mid-market outbound team, sitting between the CRM and the phone network, and now callable by an agent for logging, follow-up and campaign work.",
  "tier": "RESEARCHED",
  "last_checked": "2026-09-07",
  "sources": "https://developer.justcall.io/docs/mcp, https://justcall.io/pricing/, https://github.com/saaslabsco/justcall-mcp-server",
  "notes": "Verified 2026-09-07: POST of an MCP initialize to https://mcp.justcall.host/mcp returned HTTP 401 Unauthorized, confirming a live auth-gated server, and the endpoint is printed verbatim in JustCall's own developer documentation, which states \"JustCall hosts a remote MCP server at https://mcp.justcall.host/mcp\". Note the off-domain host: the server lives on justcall.host, not justcall.io, which is the same discovery trap as Dialpad's karehq.com. The vendor's own MCP doc page carries an \"Updated 11 months ago\" stamp, so it predates the current MCP specification revisions by a wide margin and the transport details should be re-verified before a bench test. The public GitHub repository is under the saaslabsco organisation, which is JustCall's parent company, so it is first-party rather than community. The docs frame the server partly as documentation access for AI code editors and partly as live account access, and the example prompts shown include sending an SMS, which means write access is in scope and an unattended agent can message real prospects.",
  "mcp_status_bucket": "official",
  "api_gate_bucket": "paid",
  "mcp_urls": [
    "https://mcp.justcall.host/mcp",
    "https://developer.justcall.io/docs/mcp",
    "https://github.com/saaslabsco/justcall-mcp-server"
  ],
  "source_urls": [
    "https://developer.justcall.io/docs/mcp",
    "https://justcall.io/pricing/",
    "https://github.com/saaslabsco/justcall-mcp-server"
  ],
  "source_annotations": [],
  "vendor_domain": "justcall.io",
  "display_name": "JustCall",
  "docs_url": null,
  "jobs": [],
  "jobs_tagged_by": null,
  "jobs_tagged_on": null,
  "github_url": null,
  "github_stars": null,
  "github_last_commit": null,
  "github_archived": null,
  "github_fetched_on": null,
  "github_candidates": [
    "https://github.com/saaslabsco/justcall-mcp-server",
    "https://github.com/saaslabsco/justcall-mcp-server"
  ],
  "docs_digest": null,
  "docs_last_crawled": null,
  "submission": null,
  "mcp_tools": [
    {
      "name": "add_contacts_blacklist",
      "description": "Add one or more contacts to the JustCall account",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "write"
    },
    {
      "name": "add_salesdialer_campaign_contact",
      "description": "Add contact to a specific Sales Dialer campaign identified by Campaign ID",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "write"
    },
    {
      "name": "add_salesdialer_contacts_dnca",
      "description": "Add one or more contacts to the Sales Dialer\\",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "write"
    },
    {
      "name": "check_whatsapp_message_reply",
      "description": "Check for the most recent inbound whatsapp message from a contact number",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "read"
    },
    {
      "name": "create_appointment",
      "description": "Schedule a new appointment on a specific JustCall calendar",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "write"
    },
    {
      "name": "create_contact",
      "description": "Create a new contact in the JustCall account",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "write"
    },
    {
      "name": "create_salesdialer_campaign",
      "description": "Create a new Sales Dialer campaign in the JustCall account",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "write"
    },
    {
      "name": "create_salesdialer_contact",
      "description": "Create a new contact in Sales Dialer",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "write"
    },
    {
      "name": "create_voice_agent_call",
      "description": "Initiate an outbound call from a configured AI voice agent to a contact number",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "read"
    },
    {
      "name": "create_webhook",
      "description": "Create a new webhook endpoint to receive real-time notifications",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "write"
    },
    {
      "name": "get_account_analytics",
      "description": "Retrieve aggregated call analytics at the JustCall account level",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "read"
    },
    {
      "name": "get_agent_analytics",
      "description": "Retrieve call performance analytics for a specific agent identified by Agent ID",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "read"
    },
    {
      "name": "get_appointment",
      "description": "Retrieve details of a specific appointment by its ID",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "read"
    },
    {
      "name": "get_call_ai_analysis",
      "description": "Retrieve AI-generated analysis for a specific call by Call ID associated with either JustCall or Sales Dialer",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "read"
    },
    {
      "name": "get_contact",
      "description": "Retrieve detailed information for a specific contact by ID",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "read"
    },
    {
      "name": "get_meeting_ai_analysis",
      "description": "Retrieve AI-generated analysis for a specific meeting identified by Instance ID",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "read"
    },
    {
      "name": "get_number",
      "description": "Retrieve detailed information for a specific phone number by ID",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "read"
    },
    {
      "name": "get_number_analytics",
      "description": "Retrieve call analytics for a specific JustCall phone number",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "read"
    },
    {
      "name": "get_salesdialer_agent_analytics",
      "description": "Retrieve call performance analytics of a specific agent for a Sales Dialer campaign",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "read"
    },
    {
      "name": "get_salesdialer_call",
      "description": "Retrieve detailed information for a specific Sales Dialer call by Call ID",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "read"
    },
    {
      "name": "get_salesdialer_campaign",
      "description": "Retrieve detailed information for a specific Sales Dialer campaign by ID",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "read"
    },
    {
      "name": "get_salesdialer_contact",
      "description": "Retrieve detailed information for a specific contact in Sales Dialer by ID",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "read"
    },
    {
      "name": "get_user",
      "description": "Retrieve detailed information for a specific user by ID",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "read"
    },
    {
      "name": "get_user_group",
      "description": "Retrieve detailed information for a specific user group by ID",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "read"
    },
    {
      "name": "get_whatsapp_message",
      "description": "Retrieve detailed information for a specific whatsapp message by ID",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "read"
    },
    {
      "name": "import_salesdialer_contacts",
      "description": "Import multiple contacts into Sales Dialer or a campaign in bulk",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "write"
    },
    {
      "name": "import_salesdialer_contacts_status",
      "description": "Check the status of a bulk import job/request by its batch ID",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "write"
    },
    {
      "name": "list_appointment_slots",
      "description": "Retrieve all available time slots for appointments on a specific JustCall calendar",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "read"
    },
    {
      "name": "list_blacklist_contacts",
      "description": "Retrieve all blacklist contacts from the JustCall account",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "read"
    },
    {
      "name": "list_calls_ai_analysis",
      "description": "Retrieve AI-generated analysis for all calls associated with either JustCall or Sales Dialer",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "read"
    },
    {
      "name": "list_contacts",
      "description": "Retrieve all contacts associated with the JustCall account",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "read"
    },
    {
      "name": "list_meetings_ai_analysis",
      "description": "Retrieve AI-generated analysis for recorded meetings",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "read"
    },
    {
      "name": "list_numbers",
      "description": "Retrieve all phone numbers associated with the JustCall account",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "read"
    },
    {
      "name": "list_salesdialer_calls",
      "description": "Retrieve all calls made via the Sales Dialer in JustCall",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "read"
    },
    {
      "name": "list_salesdialer_campaign_contacts",
      "description": "Retrieve all contacts in a specific Sales Dialer campaign identified by Campaign ID",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "read"
    },
    {
      "name": "list_salesdialer_campaigns",
      "description": "Retrieve all Sales Dialer campaigns in the JustCall account",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "read"
    },
    {
      "name": "list_salesdialer_contacts",
      "description": "Retrieve all contacts from Sales Dialer in the JustCall account",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "read"
    },
    {
      "name": "list_salesdialer_custom_fields",
      "description": "Fetch all custom contact fields defined in your Sales Dialer account and their details",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "read"
    },
    {
      "name": "list_user_groups",
      "description": "Retrieve all user groups defined in the JustCall account",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "read"
    },
    {
      "name": "list_users",
      "description": "Retrieve all users associated with the JustCall account",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "read"
    },
    {
      "name": "list_voice_agents",
      "description": "Retrieve all AI voice agents associated with the JustCall account",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "read"
    },
    {
      "name": "list_webhooks",
      "description": "Retrieve all configured webhooks",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "read"
    },
    {
      "name": "list_whatsapp_messages",
      "description": "Retrieve all whatsapp messages associated with the JustCall account",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "read"
    },
    {
      "name": "list_whatsapp_templates",
      "description": "Retrieve all whatsapp message templates available in the JustCall account",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "read"
    },
    {
      "name": "send_whatsapp_message",
      "description": "Send a new whatsapp message to a contact number",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "write"
    },
    {
      "name": "update_contact",
      "description": "Update/modify details of an existing contact in the JustCall account",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "write"
    },
    {
      "name": "update_contact_status",
      "description": "Add or remove a contact from DND/DNM/Blacklist lists in the JustCall account",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "write"
    },
    {
      "name": "update_salesdialer_campaign",
      "description": "Update/modify details of an existing Sales Dialer campaign in the JustCall account",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "write"
    },
    {
      "name": "update_salesdialer_contact",
      "description": "Update/modify details of an existing contact in Sales Dialer identified by ID",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "write"
    },
    {
      "name": "update_user_availability",
      "description": "Update a user",
      "required_params": [],
      "evidence": "source",
      "repo_party": "third-party",
      "source_party": null,
      "risk": "write"
    }
  ],
  "mcp_tool_count": 50,
  "mcp_tools_evidence": "source",
  "mcp_tools_repo": "saaslabsco/justcall-mcp-server",
  "mcp_tools_repo_party": "third-party",
  "mcp_catalog_shape": "fixed",
  "mcp_catalog_note": null,
  "mcp_tools_fetched_on": "2026-09-27",
  "cli_status": "none-found",
  "cli_party": null,
  "cli_binary": null,
  "cli_install": [],
  "cli_login": null,
  "cli_commands_seen": [],
  "cli_docs_url": null,
  "cli_repo": null,
  "cli_packages": [],
  "cli_evidence": null,
  "cli_checked_on": "2026-09-27",
  "github_org": null,
  "github_org_status": "unresolved",
  "github_org_url": null,
  "github_org_evidence": {
    "rule": null,
    "reason": "github candidates were seen but none passed the evidence rules",
    "candidates_rejected": [
      {
        "login": "saaslabsco",
        "from": "rule 2",
        "type": "Organization",
        "website": "https://saaslabs.co",
        "rejected": "website saaslabs.co does not match justcall.io"
      },
      {
        "login": "justcallhq",
        "from": "rule 3 (JustCall)",
        "type": "Organization",
        "website": null,
        "rejected": "website (none) does not match justcall.io"
      },
      {
        "login": "Justcallmetn",
        "from": "rule 3 (JustCall)",
        "type": "Organization",
        "website": null,
        "rejected": "website (none) does not match justcall.io"
      },
      {
        "login": "justcallmeben1234",
        "from": "rule 3 (JustCall)",
        "type": "Organization",
        "website": null,
        "rejected": "website (none) does not match justcall.io"
      },
      {
        "login": "JustCallMeJo",
        "from": "rule 3 (JustCall)",
        "type": "Organization",
        "website": null,
        "rejected": "website (none) does not match justcall.io"
      },
      {
        "login": "justcallmemui",
        "from": "rule 3 (JustCall)",
        "type": "Organization",
        "website": null,
        "rejected": "website (none) does not match justcall.io"
      }
    ]
  },
  "github_org_repos": 0,
  "github_org_repos_mcp": 0,
  "github_org_repos_cli": 0,
  "github_org_latest_activity": null,
  "github_org_recent_repos": [],
  "github_org_checked_on": "2026-09-08",
  "mcp_endpoint": null,
  "mcp_docs_url": null,
  "endpoint_status": "not-probed",
  "endpoint_http_status": null,
  "endpoint_last_probed": null,
  "endpoint_wall_note": null,
  "canonical": true,
  "canonical_id": "02-justcall",
  "also_listed_in": [],
  "source_file": "02-engagement-outbound.md",
  "source_line": 542,
  "file_index": 28,
  "category_num": "02",
  "category_slug": "engagement-outbound",
  "category_label": "Engagement & Outbound",
  "heading": "JustCall",
  "missing_schema_fields": [],
  "extra_fields": {},
  "display_rank": 103
}
