AgentMarketMCP / SKILL 资产档案馆

目录 / coldsend-mcp

MCP 需 API Key 未评级 已上架

coldsend-mcp

AI-native cold email campaign management via Model Context Protocol. ## What You Can Do - **Campaigns** — Create, launch, pause, resume, and delete email campaigns with full lifecycle control - **Leads** — Upload leads from CSV, list, filter, and manage recipients per campaign - **Sender Accounts** — Configure ColdSend native, SMTP, Google Workspace, and Outlook 365 inboxes - **Domains** — Add custom sending domains with automated DNS verification and activation tracking - **Analytics** — Track delivery rates, open/click engagement, reply rates, and compare campaigns side-by-side - **Inbox Health** — Monitor sender reputation, bounce rates, and deliverability scores ## Authentication Pass your ColdSend API key via the `X-API-Key` header. Get your key from [cloud.coldsend.pro](https://cloud.coldsend.pro). ## Transports - Streamable HTTP (`/mcp`)

该来源不提供完整文件导出(国内平台多为平台内托管),仅存元数据与原链
模型生成摘要(rules/v1 · 2026-09-27 16:42):AI-native cold email campaign management via Model Context Protocol
这是模型对公开材料的总结,不是官方声明,请以原链内容为准。

接入信息

传输形态
http
鉴权方式
需 API Key(需要配置:ColdSend API Key)
端点
https://coldsend-mcp--pipelinescientists.run.tools
该服务需要凭证,请按官方文档申请后替换占位符
{
  "mcpServers": {
    "coldsend-mcp": {
      "headers": {
        "Authorization": "Bearer \u003cYOUR_KEY\u003e"
      },
      "url": "https://coldsend-mcp--pipelinescientists.run.tools"
    }
  }
}

能力清单

工具说明
campaigns.create Create a new cold email campaign. This initializes a campaign with basic configuration. After creation, you'll need to: 1. Upload leads (recipients) 2. Configure sender inboxes 3. Design email content 4. Launch the campaign Args: name: Campaign name schedule_send_at: When to start sending (ISO 8601 format) daily_limit: Maximum emails to send per day (1-1000) enable_replies: Whether to process reply emails track_opens: Track when recipients open emails track_clicks: Track when recipients click links Returns: Created campaign details including ID and status Example: ```python result = await create_campaign( name="Q1 Outreach", schedule_send_at="2025-01-15T09:00:00Z", daily_limit=100 ) print(f"Created campaign: {result['campaign']['name']}") ```
campaigns.list List all campaigns with filtering and pagination. Retrieve a paginated list of campaigns with optional filtering by status, search term, and sorting options. Args: status_filter: Filter by campaign status - DRAFT: Not yet launched - ACTIVE: Currently sending - PAUSED: Temporarily stopped - COMPLETED: Finished sending all emails - FAILED: Stopped due to errors search: Search campaigns by name (case-insensitive partial match) sort_by: Field to sort by (name, status, created_at, launched_at, sent_count, reply_count) sort_order: Sort direction (asc or desc) page: Page number (1-based indexing) limit: Number of results per page (1-100) Returns: List of campaigns with pagination metadata Example: ```python # Get all active campaigns result = await list_campaigns(status_filter="ACTIVE") # Search for campaigns with "Q1" in name result = await list_campaigns(search="Q1") ```
campaigns.get Get detailed information about a specific campaign. Args: campaign_id: The UUID of the campaign to retrieve Returns: Full campaign details including configuration, statistics, and status Example: ```python campaign = await get_campaign("550e8400-e29b-41d4-a716-446655440000") print(f"Campaign status: {campaign['campaign']['status']}") ```
campaigns.pause Pause an active campaign. Stops sending emails immediately. The campaign can be resumed later. Args: campaign_id: The UUID of the campaign to pause Returns: Updated campaign details with PAUSED status Example: ```python result = await pause_campaign("550e8400-e29b-41d4-a716-446655440000") print(f"Campaign paused: {result['message']}") ```
campaigns.resume Resume a paused campaign. Restarts email sending from where it left off. Args: campaign_id: The UUID of the campaign to resume Returns: Updated campaign details with ACTIVE status Example: ```python result = await resume_campaign("550e8400-e29b-41d4-a716-446655440000") print(f"Campaign resumed: {result['message']}") ```
campaigns.delete Delete a campaign permanently. ⚠️ WARNING: This action cannot be undone. All campaign data, including leads, emails, and analytics, will be permanently deleted. Args: campaign_id: The UUID of the campaign to delete Returns: Confirmation message Example: ```python result = await delete_campaign("550e8400-e29b-41d4-a716-446655440000") print(result['message']) ```
leads.upload Upload leads from CSV to a campaign. Import recipient emails and metadata into a campaign for outreach. ## CSV Format Requirements - First row must be headers - Required column: `email` - Optional columns: `first_name`, `last_name`, `company`, `title`, etc. - Supports custom columns for personalization ## Column Mapping If your CSV headers don't match ColdSend's expected format, provide a mapping dictionary: ```python mapping = { "email_address": "email", # Map 'email_address' column to 'email' field "fname": "first_name", "lname": "last_name" } ``` Args: campaign_id: Target campaign UUID csv_content: CSV data as string (not file path) mapping: Optional column mapping dictionary Returns: Upload results including: - Total rows processed - Valid leads created - Invalid/skipped rows - Error details if any Example: ```python csv_data = """email,first_name,last_name,company john@example.com,John,Doe,Acme Inc jane@example.com,Jane,Smith,Tech Corp""" result = await upload_leads_csv( campaign_id="550e8400-e29b-41d4-a716-446655440000", csv_content=csv_data, mapping=None ) print(f"Uploaded {result['total_valid']} leads") ```
leads.list List all leads in a campaign. Retrieve leads with pagination and optional filtering by status. Args: campaign_id: Campaign UUID page: Page number (1-based) limit: Number of results per page (1-100) status_filter: Filter by lead status - PENDING: Not yet sent - SENT: Email sent - REPLIED: Lead replied - BOUNCED: Email bounced Returns: List of leads with pagination metadata Example: ```python # Get all pending leads result = await list_leads( campaign_id="550e8400-e29b-41d4-a716-446655440000", status_filter="PENDING" ) ```
leads.delete Delete a lead from a campaign. Remove a specific lead from the campaign. This is useful for cleaning up invalid leads or respecting unsubscribe requests. Args: campaign_id: Campaign UUID lead_id: Lead UUID to delete Returns: Confirmation message Example: ```python result = await delete_lead( campaign_id="550e8400-e29b-41d4-a716-446655440000", lead_id="123e4567-e89b-12d3-a456-426614174000" ) print(result['message']) ```
leads.stats Get aggregate statistics about leads in a campaign. Returns counts and percentages for each lead status. Args: campaign_id: Campaign UUID Returns: Lead statistics including: - Total leads - Count by status (pending, sent, replied, bounced) - Reply rate percentage - Bounce rate percentage Example: ```python stats = await get_lead_stats("550e8400-e29b-41d4-a716-446655440000") print(f"Reply rate: {stats['reply_rate']}%") ```
analytics.campaign Get comprehensive analytics for a campaign. Retrieve detailed performance metrics including delivery, engagement, and conversion statistics. ## Metrics Included: **Delivery Metrics:** - Sent count - Delivered count - Bounce count (hard + soft) - Bounce rate **Engagement Metrics:** - Open count - Open rate - Click count - Click-through rate (CTR) - Reply count - Reply rate **Conversion Metrics:** - Unsubscribe count - Unsubscribe rate - Marked as spam count **Timeline:** - First send time - Last send time - Completion percentage Args: campaign_id: Campaign UUID to get analytics for Returns: Comprehensive analytics object with all metrics Example: ```python analytics = await get_campaign_analytics( campaign_id="550e8400-e29b-41d4-a716-446655440000" ) print(f"Open rate: {analytics['open_rate']}%") print(f"Reply rate: {analytics['reply_rate']}%") print(f"Bounce rate: {analytics['bounce_rate']}%") ```
analytics.account Get account-level metrics and usage statistics. Retrieve information about your account's sending capacity, current usage, and quota limits. ## Metrics Included: **Quota Information:** - Daily sending limit - Monthly sending limit - Current daily sent count - Current monthly sent count - Remaining daily quota - Remaining monthly quota **Account Status:** - Subscription plan - Active campaigns count - Total inboxes connected - Account health score **Usage Trends:** - Emails sent today - Emails sent this week - Emails sent this month - Average daily send rate Returns: Account metrics with quotas and usage Example: ```python metrics = await get_account_metrics() print(f"Daily quota: {metrics['daily_limit']}") print(f"Remaining today: {metrics['remaining_daily']}") print(f"Active campaigns: {metrics['active_campaigns']}") ```
analytics.inbox Get performance metrics for a specific inbox. Analyze how well an email inbox is performing across all campaigns. Args: inbox_id: Inbox UUID to analyze days: Number of days to include in analysis (1-90) Returns: Inbox performance metrics including: - Emails sent - Delivery rate - Open rate - Reply rate - Bounce rate - Spam complaint rate - Health score Example: ```python performance = await get_inbox_performance( inbox_id="123e4567-e89b-12d3-a456-426614174000", days=30 ) print(f"Inbox health score: {performance['health_score']}/100") ```
analytics.compare Compare analytics across multiple campaigns. Side-by-side comparison of campaign performance metrics. Args: campaign_ids: List of campaign UUIDs to compare (2-10 campaigns) Returns: Comparison data with metrics for each campaign Example: ```python comparison = await compare_campaigns([ "550e8400-e29b-41d4-a716-446655440000", "660e8400-e29b-41d4-a716-446655440001" ]) for campaign in comparison['campaigns']: print(f"{campaign['name']}: {campaign['reply_rate']}% reply rate") ```
domains.list List all domains in your workspace. Retrieve a paginated list of configured domains with their verification status. Args: page: Page number (1-based) limit: Number of results per page (1-100) Returns: List of domains with status information including: - Domain name and ID - Verification status (verified, pending, failed) - DNS record status - Mailcow integration status - Cloudflare verification status Example: ```python result = await list_domains(page=1, limit=20) for domain in result['domains']: print(f"{domain['domain_name']}: {domain['status']}") ```
domains.get Get detailed information about a specific domain. Includes DNS records, verification status, and configuration details. Args: domain_id: Domain UUID Returns: Full domain details including: - Basic info (name, status, created_at) - DNS records (MX, TXT, CNAME) - Verification status (Cloudflare, Mailcow) - Nameserver configuration - Inbox count and limits Example: ```python domain = await get_domain("550e8400-e29b-41d4-a716-446655440000") print(f"DNS Records: {domain['dns_records']}") ```
domains.add Add a new domain to your workspace. This initiates the domain verification process. You'll need to configure DNS records as instructed to complete verification. ## Verification Process 1. Add domain to ColdSend (this endpoint) 2. Configure DNS records at your domain registrar 3. Wait for DNS propagation (5-30 minutes) 4. Verify DNS records (ColdSend auto-checks periodically) 5. Domain becomes active once verified ## Required DNS Records **MX Record:** - Name: @ (or your domain) - Value: mx.coldsend.io - Priority: 10 **TXT Record (SPF):** - Name: @ - Value: v=spf1 include:coldsend.io ~all **CNAME Record (DKIM):** - Name: coldsend._domainkey - Value: dkim.coldsend.io Args: domain_name: Domain name to add (e.g., "example.com") use_nameservers: Whether to use ColdSend nameservers (recommended) Returns: Domain creation result with: - Domain ID and name - Initial status (usually "pending") - Next steps for verification Example: ```python result = await add_domain("example.com") print(f"Domain added: {result['domain']['domain_name']}") print(f"Status: {result['domain']['status']}") ```
domains.verify Trigger DNS verification check for a domain. Forces an immediate DNS record verification instead of waiting for the automatic periodic checks. Use this after you've configured DNS records to get instant feedback. Args: domain_id: Domain UUID to verify Returns: Verification results including: - Overall verification status - Individual DNS record status - Error messages if any records are missing/incorrect Example: ```python result = await verify_domain_dns("550e8400-e29b-41d4-a716-446655440000") print(f"Verification status: {result['verification']['status']}") ```
domains.progress Get domain activation progress and next steps. Provides a detailed breakdown of what's completed and what's pending in the domain setup process. Args: domain_id: Domain UUID Returns: Progress report including: - Overall completion percentage - Step-by-step progress - Pending actions required - Estimated time to completion Example: ```python progress = await get_domain_activation_progress("550e8400-e29b-41d4-a716-446655440000") print(f"Completion: {progress['progress']['percent_complete']}%") print(f"Next step: {progress['progress']['next_step']}") ```
domains.delete Delete a domain permanently. ⚠️ WARNING: This will remove the domain from your workspace. Any inboxes using this domain will be affected. Prerequisites: - All inboxes using this domain must be deleted first - Domain cannot have active campaigns Args: domain_id: Domain UUID to delete Returns: Deletion confirmation Example: ```python result = await delete_domain("550e8400-e29b-41d4-a716-446655440000") print(result['message']) ```
sender.list List all sender accounts (inboxes) in your workspace. Retrieve a paginated list of configured sender email accounts. Args: page: Page number (1-based) limit: Items per page (1-100) inbox_type: Filter by inbox type - COLDSEND: ColdSend native inboxes - GOOGLE_WORKSPACE: Google Workspace/Gmail - OUTLOOK_365: Microsoft Outlook/Office 365 - CUSTOM_SMTP: Custom SMTP servers status: Filter by status - ACTIVE: Sending normally - PAUSED: Temporarily stopped - DISABLED: Permanently disabled search: Search by email address (partial match) Returns: List of sender accounts with details: - Email address and display name - Inbox type and provider - Status and health score - Daily/monthly sending stats - Domain information Example: ```python # List all active ColdSend inboxes result = await list_sender_accounts( inbox_type="COLDSEND", status="ACTIVE" ) ```
sender.create_coldsend Create a new ColdSend native inbox. ColdSend manages the email infrastructure automatically. Best for high-volume sending with minimal setup. ## What You Get - Automatically configured email account - High deliverability optimization - Warm-up automation included - Dedicated IP (on higher plans) ## Requirements - Domain must be verified and active - Domain must have completed DNS verification - Account must have available inbox quota Args: email_address: Email address to create (e.g., john@example.com) domain_id: Verified domain UUID to use name: Optional display name for sender Returns: Created inbox details including: - Inbox ID and email address - Initial status - Configuration details - Next steps for activation Example: ```python result = await create_coldsend_inbox( email_address="john@example.com", domain_id="550e8400-e29b-41d4-a716-446655440000", name="John Doe" ) print(f"Inbox created: {result['inbox']['email_address']}") ```
sender.create_smtp Create a custom SMTP inbox (Bring Your Own Cloud). Connect your existing email infrastructure to ColdSend. Supports Gmail, Outlook 365, Amazon SES, SendGrid, etc. ## Security Types - **STARTTLS** (recommended): Upgrades plain connection to encrypted - **SSL_TLS**: Implicit SSL/TLS from connection start - **NONE**: No encryption (not recommended) ## Common SMTP Settings **Gmail:** - Host: smtp.gmail.com - Port: 587 (STARTTLS) or 465 (SSL) - Use App Password (not regular password) **Outlook 365:** - Host: smtp.office365.com - Port: 587 (STARTTLS) - Username: Full email address **Amazon SES:** - Host: email-smtp.[region].amazonaws.com - Port: 587 or 2587 - Use SES SMTP credentials Args: email_address: Email address for this inbox smtp_host: SMTP server hostname smtp_port: SMTP port (default: 587) smtp_username: SMTP username (often full email) smtp_password: SMTP password or app password smtp_security: Security type (STARTTLS, SSL_TLS, NONE) name: Optional display name for sender Returns: Created inbox details including: - Inbox ID and configuration - Connection test results - Status and next steps Example: ```python result = await create_smtp_inbox( email_address="john@gmail.com", smtp_host="smtp.gmail.com", smtp_port=587, smtp_username="john@gmail.com", smtp_password="app-password-here", smtp_security="STARTTLS" ) ```
sender.test Send a test email from an inbox. Verify that your inbox is properly configured and can send emails. ## Use Cases - Test new inbox configuration - Verify SMTP settings are correct - Check email deliverability - Confirm sender name and signature Args: inbox_id: Inbox UUID to test to_email: Recipient email address (can be your personal email) subject: Email subject line body: Email body content Returns: Test email result including: - Send status (success/failed) - Error details if failed - Timestamp and message ID Example: ```python result = await send_test_email( inbox_id="550e8400-e29b-41d4-a716-446655440000", to_email="your-personal@email.com", subject="Testing my ColdSend inbox" ) print(f"Test email sent: {result['success']}") ```
sender.pause Pause an inbox temporarily. Stops sending from this inbox while preserving configuration. Useful for: - Taking breaks from campaigns - Investigating deliverability issues - Reducing sending volume Paused inboxes: - Retain all configuration - Don't send any emails - Can be resumed anytime - Don't count against some quotas Args: inbox_id: Inbox UUID to pause Returns: Updated inbox status (PAUSED) Example: ```python result = await pause_inbox("550e8400-e29b-41d4-a716-446655440000") print(f"Inbox paused: {result['inbox']['status']}") ```
sender.resume Resume a paused inbox. Restarts email sending from where it left off. After resuming: - Normal sending resumes - Daily limits reset - Campaigns continue from pause point Args: inbox_id: Inbox UUID to resume Returns: Updated inbox status (ACTIVE) Example: ```python result = await resume_inbox("550e8400-e29b-41d4-a716-446655440000") print(f"Inbox resumed: {result['inbox']['status']}") ```
sender.delete Delete an inbox permanently. ⚠️ WARNING: This action cannot be undone. Prerequisites: - No active campaigns using this inbox - All scheduled emails must be cancelled After deletion: - Inbox configuration removed - Sending history preserved in analytics - Cannot reuse email address immediately Args: inbox_id: Inbox UUID to delete Returns: Deletion confirmation Example: ```python result = await delete_inbox("550e8400-e29b-41d4-a716-446655440000") print(result['message']) ```
sender.health Get detailed inbox health report. Comprehensive analysis of inbox performance and reputation. ## Health Metrics **Deliverability Score (0-100):** - Based on bounce rates, spam complaints, engagement - 80+ = Excellent, 60-79 = Good, <60 = Needs improvement **Sending Patterns:** - Daily/weekly volume trends - Consistency scoring - Peak performance times **Reputation Indicators:** - Bounce rate trends - Spam complaint rate - Engagement metrics (opens/replies) **Issues Detected:** - Authentication problems - Blacklist appearances - Throttling by providers Args: inbox_id: Inbox UUID to analyze days: Analysis period (1-90 days, default: 7) Returns: Health report including: - Overall health score (0-100) - Detailed metrics breakdown - Issues and recommendations - Historical trends Example: ```python health = await get_inbox_health( inbox_id="550e8400-e29b-41d4-a716-446655440000", days=30 ) print(f"Health score: {health['health_score']}/100") print(f"Status: {health['status']}") ```
campaigns.update Update campaign configuration. Modify campaign settings after creation. You can update basic information, scheduling, limits, and tracking preferences. ## What Can Be Updated **Basic Settings:** - Campaign name - Daily sending limit - Start schedule **Tracking Options:** - Enable/disable open tracking - Enable/disable click tracking - Enable/disable reply processing **Advanced (Future):** - Email variants for A/B testing - Follow-up sequence configuration - Lead mapping rules ## Important Notes - Some changes may not be allowed if campaign is already ACTIVE - Changes take effect immediately - Already sent emails are not affected Args: campaign_id: Campaign UUID to update updates: Dictionary of fields to update. Valid keys: - name: New campaign name - schedule_send_at: New start time (ISO 8601) - daily_limit: New daily limit (1-1000) - enable_replies: True/False for reply processing - track_opens: True/False for open tracking - track_clicks: True/False for click tracking Returns: Updated campaign details with confirmation Example: ```python # Update campaign name and daily limit result = await update_campaign( campaign_id="550e8400-e29b-41d4-a716-446655440000", updates={ "name": "Q1 Outreach - Updated", "daily_limit": 150 } ) # Update tracking options result = await update_campaign( campaign_id="550e8400-e29b-41d4-a716-446655440000", updates={ "track_opens": False, "track_clicks": True } ) ```
campaigns.activate Activate or resume a campaign. Resume a paused campaign to continue sending emails, or activate a draft campaign that's ready to start. ## When to Use **Resume Paused Campaign:** - Campaign was previously paused - Ready to restart sending - All configuration is preserved **Activate Draft Campaign:** - Campaign setup is complete - Leads have been uploaded - Ready to start sending ## Prerequisites - Campaign must be in PAUSED or DRAFT status - Campaign must have at least one lead uploaded - Campaign must have sender inboxes configured ## What Happens - Status changes to ACTIVE - Email sending begins/resumes - Daily limit enforcement starts - Analytics tracking continues Args: campaign_id: Campaign UUID to activate Returns: Activation confirmation with new status and timestamp Example: ```python # Resume a paused campaign result = await activate_campaign( campaign_id="550e8400-e29b-41d4-a716-446655440000" ) print(f"Campaign activated: {result['status']}") # Check current status first campaign = await get_campaign(campaign_id) if campaign['campaign']['status'] == 'PAUSED': await activate_campaign(campaign_id) ```
纠错与举报(发现条目失效、署名有误或涉及侵权?)
提交举报 / 纠错

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