Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | Port for HTTP server | 8000 |
| LOG_LEVEL | No | Logging level: DEBUG, INFO, WARNING, ERROR, CRITICAL | INFO |
| TRANSPORT | No | Transport mode: stdio or http | |
| LOG_FORMAT | No | Log format: json (production) or text (development) | json |
| MULTILEAD_DEBUG | No | Enable debug mode | false |
| MULTILEAD_API_KEY | Yes | Your Multilead API key (get yours at https://app.multilead.co/settings/api) | |
| MULTILEAD_TIMEOUT | No | Request timeout in seconds | 30 |
| MULTILEAD_BASE_URL | No | The base URL for the Multilead API | https://api.multilead.co |
| RATE_LIMIT_PER_HOUR | No | Requests per hour limit | 1000 |
| RATE_LIMIT_PER_MINUTE | No | Requests per minute limit | 100 |
Schema
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| lead_enrichment_prompt | Prompt template for enriching lead data with AI Provides guidance for analyzing and enriching lead information including company research, contact validation, and lead scoring. |
| campaign_analysis_prompt | Prompt template for analyzing campaign performance Provides guidance for evaluating email campaign metrics and generating actionable insights for optimization. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Multilead MCP Server Configuration | Current server configuration including API base URL, timeout settings, and debug mode status |
| Multilead API Statistics | API usage statistics and account information including lead count, campaign count, and rate limits |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| create_lead | Create a new lead in Multilead Args: email: Lead email address (required) first_name: Lead first name last_name: Lead last name company: Company name title: Job title phone: Phone number tags: List of tags to assign custom_fields: Custom field key-value pairs Returns: Created lead object with ID and metadata |
| get_lead | Retrieve a lead by ID Args: lead_id: The unique identifier of the lead Returns: Lead object with all properties, tags, and custom fields |
| list_leads | List and filter leads with pagination Args: tags: Filter by tags (optional) company: Filter by company name (optional) created_after: Filter leads created after this ISO 8601 datetime created_before: Filter leads created before this ISO 8601 datetime limit: Number of results to return (1-1000, default: 100) offset: Pagination offset (default: 0) Returns: List of leads matching the filter criteria with pagination metadata |
| update_lead | Update an existing lead's properties Args: lead_id: The unique identifier of the lead email: New email address first_name: New first name last_name: New last name company: New company name title: New job title phone: New phone number tags: New list of tags (replaces existing tags) custom_fields: New custom fields (merges with existing) Returns: Updated lead object |
| delete_lead | Delete a lead by ID Args: lead_id: The unique identifier of the lead to delete Returns: Success confirmation message |
| add_leads_to_campaign | Add a new lead to a selected campaign Either profileUrl or email is required. All other fields can be provided in custom_fields. Args: campaign_id: The ID of the campaign to add the lead to profile_url: LinkedIn profile URL of the lead (required if email not provided) email: Email address of the lead (required if profile_url not provided) custom_fields: Additional custom fields for the lead (e.g., {"first_name": "John", "company": "Acme"}) Returns: Created lead information Example: add_leads_to_campaign( campaign_id="12345", email="lead@example.com", custom_fields={"first_name": "John", "company": "Acme Corp"} ) |
| update_lead_in_campaign | Update one or more variables for a lead in a specified campaign and LinkedIn account This updates lead fields including built-in fields (businessEmail, etc.) and custom variables. Args: campaign_id: The ID of the campaign lead_id: The ID of the lead to update linkedin_account_id: The LinkedIn account ID changed_values: Dictionary of field names and new values to update Can include built-in fields like "businessEmail" or custom fields Returns: Updated lead information Example: update_lead_in_campaign( campaign_id="12345", lead_id="67890", linkedin_account_id="2", changed_values={ "businessEmail": "john.smith@company.com", "custom-variable": "custom value" } ) |
| get_leads_from_thread | Retrieve leads who are part of a specific conversation thread Args: user_id: The ID of the user account_id: The ID of the account (seat) thread_id: The ID of the conversation thread Returns: List of leads belonging to the thread |
| get_tags_for_leads | Retrieve tags for specific leads Args: user_id: The ID of the user account_id: The ID of the account (seat) lead_ids: List of lead IDs whose tags you want to retrieve Returns: Tags associated with the specified leads |
| assign_tag_to_lead | Add a new tag to a specific lead Args: user_id: The ID of the user account_id: The ID of the account (seat) lead_id: The ID of the lead tag_id: The ID of the tag to assign Returns: Confirmation of tag assignment |
| remove_tag_from_lead | Remove a specific tag from a specific lead Args: user_id: The ID of the user account_id: The ID of the account (seat) lead_id: The ID of the lead tag_id: The ID of the tag to remove Returns: Confirmation of tag removal |
| get_linkedin_user_info | Retrieve LinkedIn profile information for a specific user This returns profile information if you previously started a conversation with them. Args: user_id: The ID of the user account_id: The ID of the account (seat) linkedin_user_id: The LinkedIn user ID Returns: LinkedIn profile information including name, headline, company, etc. |
| pause_lead_execution | Pause the execution of campaign steps for a specific lead This pauses all upcoming steps in the campaign workflow for this lead. Args: lead_id: The ID of the lead to pause Returns: Confirmation of lead pause |
| resume_lead_execution | Resume the execution of campaign steps for a specific lead This resumes the campaign workflow for a previously paused lead. Args: lead_id: The ID of the lead to resume Returns: Confirmation of lead resumption |
| get_leads_from_campaign | Retrieve leads from a specific campaign with advanced filtering Supports 7 groups of filters with OR logic within groups and AND logic between groups:
Args: user_id: The ID of the user account_id: The ID of the account (seat) campaign_id: The ID of the campaign search: Search leads by fullName, email, company, headline, etc. filter_by_verified_emails: Filter leads with verified emails filter_by_not_verified_emails: Filter leads without verified emails filter_by_status: Filter by status ([1]=Discovered, [2]=Connection pending, [3]=Connected not replied, [4]=Replied) filter_by_connection_degree: Used with filter_by_status=[4] for additional status filtering ([1]=replied connected, [2,3]=replied not connected) filter_by_current_step: Filter leads on specific campaign steps filter_by_name: Filter leads whose names contain this value filter_by_company: Filter leads whose company contains this value filter_by_occupation: Filter leads whose occupation contains this value filter_by_headline: Filter leads whose headline contains this value filter_by_out_of_office: Filter leads with "Out of office" status filter_by_step_change_timestamp: Filter leads with stepChangeTimestamp greater than this filter_by_selected_leads: Retrieve specific leads by their IDs limit: Number of results to return (default: 30) offset: Pagination offset (default: 0) Returns: List of leads matching the filter criteria with pagination metadata Example: get_leads_from_campaign( user_id="123", account_id="456", campaign_id="789", filter_by_status=[4], filter_by_connection_degree=[1], filter_by_verified_emails=True, limit=50 ) |
| get_tags_for_seat | Retrieve all tags from a specific seat (account) Args: user_id: The ID of the user account_id: The ID of the account (seat) Returns: List of all tags for the seat |
| create_tag | Create a new tag for a specific seat (account) Args: user_id: The ID of the user account_id: The ID of the account (seat) tag_name: Name of the tag to create Returns: Created tag information including tag ID |
| return_lead_to_campaign | Return a specific lead to a specific campaign This action happens immediately unless a scheduled time is provided. Args: user_id: The ID of the user account_id: The ID of the account (seat) lead_id: The ID of the lead to move target_campaign_id: The ID of the campaign to return the lead to scheduled_time: Optional ISO 8601 datetime to schedule the action Returns: Confirmation of lead transfer |
| get_leads_from_seat | Retrieve leads from a specific seat (account) with advanced filtering Supports 6 groups of filters with OR logic within groups and AND logic between groups:
Args: user_id: The ID of the user account_id: The ID of the account (seat) search: Search leads by fullName, email, company, headline, etc. filter_by_verified_emails: Filter leads with verified emails filter_by_not_verified_emails: Filter leads without verified emails filter_by_status: Filter by status ([1]=Discovered, [2]=Connection pending, [3]=Connected not replied, [4]=Replied) filter_by_connection_degree: Used with filter_by_status=[4] for additional status filtering ([1]=replied connected, [2,3]=replied not connected) filter_by_name: Filter leads whose names contain this value filter_by_company: Filter leads whose company contains this value filter_by_occupation: Filter leads whose occupation contains this value filter_by_headline: Filter leads whose headline contains this value filter_by_out_of_office: Filter leads with "Out of office" status filter_by_step_change_timestamp: Filter leads with stepChangeTimestamp greater than this filter_by_selected_leads: Retrieve specific leads by their IDs limit: Number of results to return (default: 30) offset: Pagination offset (default: 0) Returns: List of leads from the seat matching the filter criteria Example: get_leads_from_seat( user_id="123", account_id="456", filter_by_company="Acme Corp", filter_by_verified_emails=True, limit=100 ) |
| export_all_campaigns | Export all campaigns in CSV format Args: user_id: The ID of the user account_id: The ID of the account (seat) Returns: CSV export of all campaigns or download URL |
| export_leads_from_campaign | Export leads from a specific campaign in CSV format with advanced filtering Supports 7 groups of filters with OR logic within groups and AND logic between groups. Args: user_id: The ID of the user account_id: The ID of the account (seat) campaign_id: The ID of the campaign to export leads from search: Search leads by fullName, email, company, headline, etc. filter_by_verified_emails: Export leads with verified emails filter_by_not_verified_emails: Export leads without verified emails filter_by_status: Filter by status ([1]=Discovered, [2]=Connection pending, [3]=Connected not replied, [4]=Replied) filter_by_connection_degree: Used with filter_by_status=[4] for additional status filtering filter_by_current_step: Export leads on specific campaign steps filter_by_selected_leads: Export specific leads by their IDs filter_by_name: Export leads whose names contain this value filter_by_company: Export leads whose company contains this value filter_by_occupation: Export leads whose occupation contains this value filter_by_headline: Export leads whose headline contains this value filter_by_out_of_office: Export leads with "Out of office" status filter_by_step_change_timestamp: Export leads with stepChangeTimestamp greater than this Returns: CSV export data or download URL Example: export_leads_from_campaign( user_id="123", account_id="456", campaign_id="789", filter_by_status=[4], filter_by_verified_emails=True ) |
| get_campaign_info | Retrieve detailed information about a specific campaign Args: user_id: The ID of the user account_id: The ID of the account (seat) campaign_id: The ID of the campaign Returns: Campaign details including name, status, steps, statistics, etc. |
| get_campaign_list | Retrieve list of all campaigns with filtering and sorting Args: user_id: The ID of the user account_id: The ID of the account (seat) campaign_state: Campaign status filter (1=ACTIVE, 2=DRAFT, 3=ARCHIVED, default: 1) sort_order: Sort direction ("ASC" or "DESC") sort_column: Column to sort by ("isActive", "name", or "createdAt") limit: Number of results to return (default: 30) offset: Pagination offset (default: 0) Returns: List of campaigns with pagination metadata Example: get_campaign_list( user_id="123", account_id="456", campaign_state=1, sort_order="DESC", sort_column="createdAt", limit=50 ) |
| create_lead_source | Create a lead source and link it to a campaign This creates a lead source (e.g., Sales Navigator search URL) and connects it to a campaign for automatic lead import. Args: user_id: The ID of the user who owns the seat account_id: The ID of the seat where the campaign is located campaign_id: The ID of the campaign to link the lead source to lead_source_url: URL of the lead source (e.g., LinkedIn Sales Navigator search) lead_source_type: Type of lead source (e.g., "SALES_NAVIGATOR") dashboard: Dashboard ID (optional) auto_reuse: Auto-reuse setting (optional, 1 to enable) auto_reuse_interval: Auto-reuse interval in days (optional) Returns: Created lead source information Example: create_lead_source( user_id="123", account_id="456", campaign_id=789, lead_source_url="https://www.linkedin.com/sales/search/people?...", lead_source_type="SALES_NAVIGATOR", dashboard=2, auto_reuse=1, auto_reuse_interval=100 ) |
| create_campaign_from_template | Create a new campaign from a saved sequence template This creates a URL-based campaign from the user's saved sequences. The campaign goes live immediately after creation. Args: user_id: The ID of the user account_id: The ID of the account (seat) sequence_template_id: The ID of the sequence template to use campaign_name: Name for the new campaign lead_source_url: Optional lead source URL to attach to the campaign Returns: Created campaign information Example: create_campaign_from_template( user_id="123", account_id="456", sequence_template_id="789", campaign_name="Q1 Outreach Campaign", lead_source_url="https://linkedin.com/sales/search/..." ) |
| get_statistics | Get statistics for campaigns within a time range This retrieves statistics for all campaigns or a specific campaign if campaign_id is provided. Args: user_id: User ID account_id: Account ID from_timestamp: Statistics start timestamp (Unix timestamp) to_timestamp: Statistics end timestamp (Unix timestamp) curves: List of statistic types to retrieve. Values: 1=PROFILE_VIEW, 2=PROFILE_FOLLOW, 3=INVITATION_SENT, 4=MESSAGE_SENT, 5=INMAIL_SENT, 10=EMAIL_SENT, 11=EMAIL_OPENED, 12=EMAIL_CLICKED, 16=EMAIL_VERIFIED, 6=INVITATION_ACCEPTED, 7=MESSAGE_REPLY, 8=INVITATION_ACCEPTED_RATE, 9=MESSAGE_REPLY_RATE, 14=EMAIL_OPEN_RATE, 15=EMAIL_CLICK_RATE, 17=EMAIL_BOUNCE_RATE time_zone: Timezone for statistics (e.g., "America/New_York", "Europe/Belgrade") campaign_id: Optional campaign ID to get statistics for a specific campaign Returns: Campaign statistics data |
| export_statistics_csv | Export campaign statistics as a CSV file This retrieves statistics for all campaigns in CSV format. Args: user_id: User ID account_id: Account ID from_timestamp: Statistics start timestamp (Unix timestamp) to_timestamp: Statistics end timestamp (Unix timestamp) curves: List of statistic types to retrieve (same values as get_statistics) time_zone: Timezone for statistics (e.g., "America/New_York", "Europe/Belgrade") Returns: CSV file data with campaign statistics |
| get_step_statistics | Get step statistics for a specific campaign This retrieves statistics for individual campaign steps within a specific campaign. Args: user_id: User ID account_id: Account ID campaign_id: Campaign ID to get step statistics for Returns: Step-by-step statistics for the campaign |
| get_all_campaigns_statistics | Get summary statistics for all campaigns This retrieves platform-wide summary statistics (totals) for all campaigns. Args: user_id: User ID account_id: Account ID campaign_state: Optional campaign state filter (default: 1) Returns: Summary statistics for all campaigns |
| add_keywords_to_global_blacklist | Add keywords to the global blacklist via JSON Args: team_id: Team ID user_id: User ID keywords: List of keywords to blacklist (e.g., ["test", "test123"]) keyword_type: Type of keyword. Options: "company_name", "email", "domain", "full_name", "profile_url", "job_title" comparison_type: How to match keywords. Options: "exact", "contains", "starts_with", "ends_with" Returns: Success confirmation |
| import_keywords_to_global_blacklist_csv | Import keywords to global blacklist from a CSV file Args: team_id: Team ID user_id: User ID csv_file_path: Path to CSV file containing keywords keyword_type: Type of keyword. Options: "company_name", "email", "domain", "full_name", "profile_url", "job_title" comparison_type: How to match keywords. Options: "exact", "contains", "starts_with", "ends_with" Returns: Success confirmation with import results |
| add_keywords_to_blacklist | Add keywords to your seat's blacklist via JSON Args: user_id: User ID account_id: Account ID (seat ID) keywords: List of keywords to blacklist (e.g., ["John Smith"]) keyword_type: Type of keyword. Options: "company_name", "email", "domain", "full_name", "profile_url", "job_title" comparison_type: How to match keywords. Options: "exact", "contains", "starts_with", "ends_with" Returns: Success confirmation |
| import_keywords_to_blacklist_csv | Import keywords to your seat's blacklist from a CSV file Args: user_id: User ID account_id: Account ID (seat ID) csv_file_path: Path to CSV file containing keywords keyword_type: Type of keyword. Options: "company_name", "email", "domain", "full_name", "profile_url", "job_title" comparison_type: How to match keywords. Options: "exact", "contains", "starts_with", "ends_with" Returns: Success confirmation with import results |
| activate_inboxflare_warmup | Activate InboxFlare warm-up for a user This endpoint creates an account for the user on the InboxFlare warm-up tool and sends credentials via email. Args: user_id: User ID to activate warm-up for Returns: Success confirmation with account creation details |
| list_all_seats_of_a_specific_user | List All Seats of a Specific User This action provides information based on your Team Management role:
Args: search: Optional search query to filter seats (e.g., "John Smith") Returns: List of seats with detailed information |
| register_new_user | Register New User This action registers a new user on the platform. Args: email: User's email address (required) password: User's password (required) full_name: User's full display name (required) whitelabel_id: Whitelabel ID (required) phone: Optional phone number (e.g., "+3816423416") invitation_id: Optional invitation ID for secure registration skip_confirmation_email: Set to True to skip confirmation email (default: False) Returns: Created user object with registration details |
| get_user_information | Get User Information This action retrieves all information on the authorized user (the user whose API key is being used). Returns: Complete user information including profile, settings, and permissions |
| list_all_users_as_a_whitelabel | List All Users as a Whitelabel As a whitelabel, this action retrieves the list of all your users. Args: limit: Maximum number of results to retrieve (default: 30) offset: Position in the dataset to start from (default: 0) Returns: Paginated list of users with metadata |
| create_seat | Create Seat This action creates a new seat within a specific team. Args: user_id: User ID who owns the seat plan_id: Plan ID for the seat subscription full_name: Full name for the seat start_utc_time: Start time in UTC (e.g., "08:00") end_utc_time: End time in UTC (e.g., "16:00") time_zone: Timezone (e.g., "Europe/Belgrade", "America/New_York") team_id: Team ID to create the seat in whitelabel_id: Whitelabel ID Returns: Created seat object with subscription details |
| cancel_seat | Cancel Seat This action cancels a specific seat within a specific team. Args: user_id: User ID who owns the seat account_id: Account/Seat ID to cancel reason: Reason for cancellation Returns: Cancellation confirmation with details |
| reactivate_seat | Reactivate Seat This action reactivates a specific inactive seat within a specific team. Args: user_id: User ID who owns the seat account_id: Account/Seat ID to reactivate proxy_country: Optional proxy country code (e.g., "us", "gb") Returns: Reactivation confirmation with updated seat status |
| suspend_or_unsuspend_seat | Suspend or Unsuspend Seat This action suspends or unsuspends a specific seat within a specific team. Args: user_id: User ID who owns the seat account_id: Account/Seat ID to suspend/unsuspend suspended: True to suspend, False to unsuspend Returns: Updated seat status |
| resend_email_confirmation_message | Resend Email Confirmation Message This action resends an email confirmation message to the user's email and allows them to confirm their email address. Args: user_id: User ID to resend confirmation for email: Email address that should receive the confirmation email Returns: Confirmation that the email was sent |
| send_password_reset_email | Send Password Reset Email This action initializes the user's password reset and sends a password reset email. Args: email: Email address to receive the password reset link Returns: Confirmation that the reset email was sent |
| list_users_associated_with_a_specific_seat | List Users Associated With a Specific Seat This action retrieves all users associated with the chosen seat in any way. The way they are related to a seat determines their user types:
Args: user_id: User ID account_id: Account/Seat ID limit: Maximum number of results (default: 30) offset: Starting position in dataset (default: 0) search: Search query for email or fullName Returns: Paginated list of associated users with their roles |
| list_teams_under_the_users_white_label | List Teams Under the User's White Label This action retrieves all teams under one platform (White label). The user who runs this endpoint must be the platform admin. Args: user_id: User ID (must be platform admin) Returns: List of all teams under the whitelabel |
| change_a_password | Change A Password This action changes the password for a specific user. Regular users can only change their own password and platform co-owners can change the password for all users within their platform. Args: user_id: User ID whose password to change new_password: New password to set Returns: Confirmation of password change |
| get_users_sequence_templates | Get User's Sequence Templates This action retrieves all sequence templates (saved sequences) from a user who is a part of certain team. You can use the returned sequence template IDs in the "Create Campaign From A Sequence Template" endpoint. Args: user_id: ID of the user whose saved sequences to retrieve team_id: ID of the team that the user is part of Returns: List of saved sequence templates with IDs |
| transfer_credits | Transfer Credits This action transfers credits from the authenticated user to a specified destination user. Args: user_id: Source user ID (authenticated user) destination_user_id: Destination user ID to receive credits quantity: Number of credits to transfer Returns: Transfer confirmation with updated credit balances |
| get_tags_of_a_specific_seat | Get Tags of a Specific Seat This action retrieves all tags related to a specific seat. Args: user_id: User ID account_id: Account/Seat ID Returns: List of tags associated with the seat |
| connect_linkedin_account | Connect LinkedIn Account This actions connects a specific LinkedIn account to a specific seat. Args: user_id: User ID account_id: Account/Seat ID linkedin_email: LinkedIn account email linkedin_password: LinkedIn account password linkedin_subscription_id: LinkedIn subscription type ID country_code: Country code for proxy (e.g., "us", "gb") setup_proxy_type: Proxy setup type (e.g., "BUY") note: Optional note about the connection Returns: LinkedIn connection status and details |
| disconnect_linkedin_account | Disconnect LinkedIn Account This action disconnects a specific LinkedIn account from the seat on the platform. Args: user_id: User ID account_id: Account/Seat ID with LinkedIn connection Returns: Disconnection confirmation |
| create_team | Create a new team for a specific user Args: user_id: The user ID who will own the team (required) name: The name of the team to create (required) Returns: Created team object with ID and metadata Example: create_team(user_id="1451", name="Sales Team") |
| create_team_role | Create a role for a specific team with custom permissions Args: team_id: The ID of the team for which to create this role (required) user_id: Your user ID (required) name: The name of the role (required) permissions: List of permission objects with 'id' and 'isViewOnly' fields (required) Returns: Created role object with ID and permissions Example: create_team_role( team_id="1570", user_id="1451", name="Manager", permissions=[ {"id": 1, "isViewOnly": False}, {"id": 2, "isViewOnly": False} ] ) |
| get_team_roles | Retrieve all roles for a specific team Args: team_id: The ID of the team for which to retrieve roles (required) user_id: Your user ID (required) Returns: List of all roles configured for the team with their permissions Example: get_team_roles(team_id="1", user_id="1451") |
| get_team_members | Retrieve all members from a specific team Args: user_id: Your user ID (required) team_id: The ID of the team for which to retrieve members (required) Returns: List of all team members with their roles and permissions Example: get_team_members(user_id="1451", team_id="1443") |
| invite_team_member | Invite a user to become a member of a specific team The sendAnInvitationEmail flag controls how the invitation works:
Args: team_id: The ID of the team to invite the member to (required) user_id: Your user ID (required) name: The name of the user to invite (required) email: The email address of the user to invite (required) account_roles: List of role assignments with 'roleId' and 'accounts' array (required) can_manage_payment: Whether the user can manage payment settings (default: False) send_invitation_email: Whether to send an email invitation (default: False) Returns: Invitation object with member details and status Example: invite_team_member( team_id="1443", user_id="1451", name="John Doe", email="john@company.com", account_roles=[ { "roleId": "6eb0c288-0a17-4f6c-88a3-bb750b34d7ca", "accounts": [1028] } ], can_manage_payment=False, send_invitation_email=True ) |
| update_team_member | Edit and update a team member from a specific team Args: team_id: The ID of the team this member is part of (required) user_id: Your user ID (required) email: The email address of the member to update (required) account_roles: Updated list of role assignments with 'roleId' and 'accounts' array can_manage_team_global_webhooks: Whether the user can manage team global webhooks Returns: Updated team member object with new settings Example: update_team_member( team_id="1443", user_id="1451", email="borisa@company.io", account_roles=[ { "roleId": "d144079f-2a22-4f86-b2a9-45b3289b4bf4", "accounts": [158] } ], can_manage_team_global_webhooks=True ) |
| sync_linkedin_messages | Sync all LinkedIn messages for a specific seat to the platform inbox This action retrieves all LinkedIn messages for a specific seat and displays them inside the platform's inbox for centralized message management. Args: user_id: Your user ID (required) account_id: The ID of the seat for which to sync LinkedIn messages (required) Returns: Sync status and count of messages retrieved Example: sync_linkedin_messages(user_id="16911", account_id="9852") |
| get_messages_from_a_specific_thread | Retrieve messages from specific conversation threads This retrieves messages from one or more specific threads, with optional filtering by step change timestamp to get only recent updates. Args: user_id: User ID account_id: Account ID threads: List of thread IDs to retrieve messages from filter_by_step_change_timestamp: Optional ISO timestamp to filter messages that were updated after this time Returns: Messages from the specified threads |
| get_conversations_by_identifiers | Retrieve conversations using specific identifiers This finds all conversations associated with the provided identifiers (e.g., LinkedIn profile IDs, email addresses). Args: user_id: User ID account_id: Account ID identifiers: List of identifiers to search for (e.g., LinkedIn IDs) Returns: Conversations matching the provided identifiers |
| get_unread_conversations | Retrieve unread conversations This gets all conversations that have not been marked as read, with optional filtering by contact name. Args: user_id: User ID account_id: Account ID limit: Maximum number of results to return (default: 100) offset: Pagination offset (default: 0) name: Optional search filter for contact name Returns: List of unread conversations |
| get_other_conversations | Retrieve other conversations (not categorized as unread) This gets conversations from the "All other messages" section. Args: user_id: User ID account_id: Account ID limit: Maximum number of results to return (default: 100) offset: Pagination offset (default: 0) name: Optional search filter for contact name Returns: List of other conversations |
| get_all_conversations | Retrieve all conversations from all channels This gets conversations from the "All channels" endpoint, with optional filtering by name and tags. Args: user_id: User ID account_id: Account ID limit: Maximum number of results to return (default: 100) offset: Pagination offset (default: 0) name: Optional search filter for contact name tag_ids: Optional comma-separated list of tag IDs to filter by Returns: List of all conversations |
| get_campaign_conversations | Retrieve conversations from a specific campaign This gets all conversations associated with a particular campaign. Args: user_id: User ID account_id: Account ID campaign_id: Campaign ID to get conversations from limit: Maximum number of results to return (default: 100) offset: Pagination offset (default: 0) name: Optional search filter for contact name Returns: Conversations from the specified campaign |
| get_messages_for_leads | Retrieve messages for specific leads This gets conversation messages associated with specific lead IDs. Args: user_id: User ID account_id: Account ID lead_ids: Optional list of lead IDs to get messages for limit: Maximum number of results to return (default: 100) Returns: Messages for the specified leads |
| mark_messages_as_seen | Mark messages in a thread as seen This marks all messages in a specific conversation thread as read/seen. Args: user_id: User ID account_id: Account ID thread: Thread ID to mark as seen Returns: Success confirmation |
| send_new_email | Send a new email to a recipient This sends a new email through the platform to a recipient who may not have an existing thread. Args: user_id: User ID account_id: Account ID recipient: Email address of the recipient subject: Email subject line content: Email body content (can include HTML) signature_id: ID of the signature to use Returns: Sent email details |
| send_email_reply | Send an email reply to an existing thread This sends a reply to an existing email conversation thread. Args: user_id: User ID account_id: Account ID thread: Thread ID to reply to message: Email message content lead_id: Lead ID associated with this conversation campaign_id: Campaign ID associated with this conversation recipient: Email address of the recipient Returns: Sent email reply details |
| send_linkedin_message | Send a LinkedIn message to an existing thread This sends a LinkedIn message to an existing conversation in the platform's inbox. Args: user_id: User ID account_id: Account ID message: Message content to send linkedin_user_id: LinkedIn user ID of the recipient public_identifier: LinkedIn public identifier of the recipient campaign_id: Campaign ID associated with this conversation lead_id: Lead ID associated with this conversation Returns: Sent LinkedIn message details |
| get_lead_messages | Retrieve all messages for a specific lead This gets all conversation messages associated with a particular lead. Args: user_id: User ID account_id: Account ID lead_id: Lead ID to get messages for Returns: All messages for the specified lead |
| create_webhook | Create a non-global webhook This creates a webhook that listens for specific events. Non-global webhooks are scoped to specific campaigns or resources. Args: user_id: User ID account_id: Account ID webhooks: List of webhook configurations, each containing: - url: Webhook endpoint URL - events: List of event types to subscribe to - campaignId: (Optional) Campaign ID to scope webhook to Returns: Created webhook details |
| create_global_webhook | Create a global webhook This creates a webhook that listens for events across all campaigns and resources in the account. Args: user_id: User ID account_id: Account ID webhooks: List of webhook configurations, each containing: - url: Webhook endpoint URL - events: List of event types to subscribe to Returns: Created global webhook details |
| list_webhooks | List non-global webhooks This retrieves all non-global webhooks configured for the account. Args: user_id: User ID account_id: Account ID limit: Maximum number of results to return (default: 30) offset: Pagination offset (default: 0) Returns: List of non-global webhooks |
| list_global_webhooks | List global webhooks This retrieves all global webhooks configured for the account. Args: user_id: User ID account_id: Account ID limit: Maximum number of results to return (default: 30) offset: Pagination offset (default: 0) Returns: List of global webhooks |
| delete_webhook | Delete a non-global webhook This removes a specific non-global webhook by its ID. Args: user_id: User ID account_id: Account ID webhook_id: Webhook ID to delete Returns: Success confirmation |
| delete_global_webhook | Delete a global webhook This removes a specific global webhook by matching URL and event subscriptions. Args: user_id: User ID account_id: Account ID array_of_actions: List of event action types the webhook was subscribed to array_of_ids: List of resource IDs associated with the webhook url: Webhook URL to delete Returns: Success confirmation |