machfive

Generate hyper-personalized cold email sequences via MachFive API.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
97%
Naming quality
100%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,621Tokens (tool definitions)
~2.1 KBTypical response size
Moderate attention impact (1.27% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "machfive": {
      "url": "https://mcp.machfive.io/mcp"
    }
  }
}

Remote endpoints

https://mcp.machfive.io/mcpstreamable-http

What it can do

Tool inventory

Tools (6)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢list_campaigns(query)

List campaigns in the user's MachFive workspace. CALL THIS FIRST before generate_sequence or generate_batch — you need a campaign ID to generate emails. If the user hasn't specified a campaign, call this and ask them to pick one. Returns JSON array of campaigns with id, name, and created_at. Use the 'id' field as campaign_id in generate calls.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "default": "",
      "description": "Search string to filter campaigns by name (case-insensitive substring match). Leave empty to list all.",
      "type": "string"
    }
  }
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "description": "Generic wrapper for non-object return types.",
  "x-fastmcp-wrap-result": true
}
🟢generate_sequence(campaign_id, email, name, title, company, ...)

Generate a personalized cold email sequence for ONE lead. This is SYNCHRONOUS — the request takes 3-10 minutes because MachFive researches the prospect and crafts unique emails. Do NOT retry if it seems slow; wait for the response. You must have a campaign_id first. Call list_campaigns if you don't have one. If the request times out, use the returned list_id with get_list_status and export_list to recover results.

Input Schema

{
  "type": "object",
  "properties": {
    "campaign_id": {
      "description": "Campaign UUID from list_campaigns.",
      "type": "string"
    },
    "email": {
      "description": "Lead's email address (REQUIRED).",
      "type": "string"
    },
    "name": {
      "default": "",
      "description": "Lead's full name (improves personalization).",
      "type": "string"
    },
    "title": {
      "default": "",
      "description": "Lead's job title (improves personalization).",
      "type": "string"
    },
    "company": {
      "default": "",
      "description": "Lead's company name (improves personalization).",
      "type": "string"
    },
    "company_website": {
      "default": "",
      "description": "Company URL for AI research.",
      "type": "string"
    },
    "linkedin_url": {
      "default": "",
      "description": "LinkedIn profile URL for deeper personalization.",
      "type": "string"
    },
    "email_count": {
      "default": 3,
      "description": "Number of emails in sequence, 1-5.",
      "type": "integer"
    },
    "list_name": {
      "default": "",
      "description": "Display name for this list in MachFive UI.",
      "type": "string"
    },
    "email_signature": {
      "default": "",
      "description": "Signature appended to each email.",
      "type": "string"
    },
    "campaign_angle": {
      "default": "",
      "description": "Additional context/angle for personalization.",
      "type": "string"
    },
    "approved_ctas": {
      "default": "",
      "description": "Comma-separated CTAs, e.g. 'Direct Meeting CTA, Lead Magnet CTA'. Omit to use campaign defaults.",
      "type": "string"
    }
  },
  "required": [
    "campaign_id",
    "email"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "description": "Generic wrapper for non-object return types.",
  "x-fastmcp-wrap-result": true
}
🟡generate_batch(campaign_id, leads_json, email_count, list_name, email_signature, ...)

Submit multiple leads for batch email sequence generation (ASYNC). Returns IMMEDIATELY with a list_id. Processing runs in the background. After calling this, poll get_list_status every 15-30 seconds until processing_status is 'completed' or 'failed', then call export_list. You must have a campaign_id first. Call list_campaigns if you don't have one.

Input Schema

{
  "type": "object",
  "properties": {
    "campaign_id": {
      "description": "Campaign UUID from list_campaigns.",
      "type": "string"
    },
    "leads_json": {
      "description": "JSON array of lead objects. Each MUST have \"email\". Optional: name, title, company, company_website, linkedin_url. Example: '[{\"email\":\"[email protected]\",\"name\":\"Jane Doe\"}]'",
      "type": "string"
    },
    "email_count": {
      "default": 3,
      "description": "Number of emails per lead, 1-5.",
      "type": "integer"
    },
    "list_name": {
      "default": "",
      "description": "Display name for this batch in MachFive UI.",
      "type": "string"
    },
    "email_signature": {
      "default": "",
      "description": "Signature appended to each email.",
      "type": "string"
    },
    "campaign_angle": {
      "default": "",
      "description": "Additional context/angle for personalization.",
      "type": "string"
    },
    "approved_ctas": {
      "default": "",
      "description": "Comma-separated CTAs. Omit to use campaign defaults.",
      "type": "string"
    }
  },
  "required": [
    "campaign_id",
    "leads_json"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "description": "Generic wrapper for non-object return types.",
  "x-fastmcp-wrap-result": true
}
🟢list_lists(campaign_id, status, limit, offset)

List lead lists (batch jobs) in the user's MachFive workspace. Useful for browsing past batches, checking what's in progress, or finding a list_id to export. Results are ordered newest first.

Input Schema

{
  "type": "object",
  "properties": {
    "campaign_id": {
      "default": "",
      "description": "Filter by campaign UUID.",
      "type": "string"
    },
    "status": {
      "default": "",
      "description": "Filter by processing status: 'pending', 'processing', 'completed', or 'failed'.",
      "type": "string"
    },
    "limit": {
      "default": 20,
      "description": "Max results to return, 1-100.",
      "type": "integer"
    },
    "offset": {
      "default": 0,
      "description": "Pagination offset.",
      "type": "integer"
    }
  }
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "description": "Generic wrapper for non-object return types.",
  "x-fastmcp-wrap-result": true
}
🟢get_list_status(list_id)

Check the processing status of a lead list. Use this to POLL after calling generate_batch. Call every 15-30 seconds until processing_status is 'completed' or 'failed'. When completed, call export_list. When failed, submit a new batch.

Input Schema

{
  "type": "object",
  "properties": {
    "list_id": {
      "description": "List UUID from generate_batch or generate_sequence response.",
      "type": "string"
    }
  },
  "required": [
    "list_id"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "description": "Generic wrapper for non-object return types.",
  "x-fastmcp-wrap-result": true
}
🟢export_list(list_id, format)

Download the generated email sequences for a COMPLETED list. Only call this AFTER get_list_status shows processing_status = 'completed'. If the list is not yet completed, you'll get a 409 error — poll first.

Input Schema

{
  "type": "object",
  "properties": {
    "list_id": {
      "description": "List UUID to export.",
      "type": "string"
    },
    "format": {
      "default": "json",
      "description": "Output format: 'json' (structured data) or 'csv' (raw CSV for sending tools).",
      "type": "string"
    }
  },
  "required": [
    "list_id"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "description": "Generic wrapper for non-object return types.",
  "x-fastmcp-wrap-result": true
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded6 tools
verifiedversion not recorded6 tools