LeadMarina

com.leadmarinaPublished by leadmarina.comOfficial publisherv1.3.0Updated Oct 31, 2026

Verified local-business leads: search by niche and US city, export to Close, GoHighLevel or Sheets.

Overview

AI-generated overview

LeadMarina is a hosted MCP server that lets an assistant find verified local-business leads by niche and US city, then export them to a CRM, Sheets or a file.

What you can do
  • Search and enrich leads: run live niche-plus-city searches, poll results as emails and phones get verified, and enrich up to 10 domains you already have
  • Query and export: filter and sort every lead already collected, read saved views, and send shortlists to Close, GoHighLevel, Google Sheets or CSV/Excel/JSON files
  • Manage searches and balance: list past searches, check remaining lead allowance and connected integrations
  • Schedule automations: create, pause, resume or delete recurring searches that export themselves
  • Run advanced searches: look up US places, estimate a multi-keyword multi-place campaign, start it, track progress and pause, resume or stop it
When to use it
Useful when you want an assistant to prospect local businesses in US cities, verify their contact details, and push the results into a CRM or spreadsheet without leaving the chat. Also fits recurring lead-generation jobs that should run on a schedule.
Requirements
A remote streamable HTTP endpoint; nothing to install. A LeadMarina account is required, including on the free plan. Authentication is OAuth sign-in in the browser, or a LeadMarina API key sent as an Authorization bearer token. Coverage is the US and its territories.
Before you install
Searches, enrichment, automations and advanced searches spend leads from the account's allowance, so confirm scope and cadence with the user first. An API key spends leads and should be kept private and out of shared config files. Exports write into connected CRMs and Sheets, and delete_automation is permanent. Some emails and owner names come from open datasets and public records, and their source and licence notices travel with the data.

Installation

In SourceWeft

  1. Open LeadMarina in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/com.leadmarina%2Fleadmarina/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "leadmarina": {
      "type": "http",
      "url": "https://leadmarina.com/api/mcp"
    }
  }
}

README

LeadMarina MCP server

Verified local-business leads, inside your AI assistant. Search any niche in any US city, get each business's emails checked for deliverability and its phones checked for line type and carrier, then send the leads to Close, GoHighLevel, Google Sheets or a CSV, Excel or JSON file. You never leave the chat.

This is a remote MCP server. There is nothing to install or run:

https://leadmarina.com/api/mcp

This repository holds the listing: this README, client config examples, the MCP registry's server.json and smithery.yaml. The server itself is LeadMarina's hosted service.

What it does

Ask in plain language, for example:

  • "Find roofing contractors in Austin, TX with a mobile number."
  • "Which plumbers I've already collected have a safe email and over 50 reviews?"
  • "Send this search to Close."
  • "Every Monday, search HVAC contractors in Dallas and Fort Worth and email me a CSV."
  • "Estimate dentists across Colorado and Utah, then run it with a 2,000-lead cap."

Each lead is one local business: its listing (name, category, address, rating, reviews, website), up to 3 emails each marked safe, risky or invalid, up to 3 phones with line type and carrier, the owner's name where one can be found, and its social profiles.

Connect

You need a LeadMarina account. Every plan includes the MCP server, the free plan too: sign up.

OAuth (recommended). Add the server URL to your client. The first time a tool runs, your browser opens LeadMarina's sign-in and consent page. Nothing needs to be copied or pasted.

API key. Create a key on the API Keys page and send it as Authorization: Bearer YOUR_API_KEY. The key spends your leads, so keep it private and out of shared or committed config files.

Client set-up, with full files in examples/:

ClientHow
Claude (claude.ai or the desktop app)Customize → Connectors → + → Add custom connector → paste the server URL. OAuth runs on first use, and the connector then works in the mobile app too.
Claude Desktop (config file)examples/claude-desktop.json: a local bridge to the remote URL, OAuth in the browser
Claude Codeclaude mcp add --transport http leadmarina https://leadmarina.com/api/mcp
ChatGPT (developer mode)Settings → Plugins → Developer mode → create an app with the server URL, authentication OAuth
CursorOne-click install, or examples/cursor-mcp.json in .cursor/mcp.json
VS Codeexamples/vscode-mcp.json in .vscode/mcp.json
Windsurfexamples/windsurf-mcp.json in ~/.codeium/windsurf/mcp_config.json
Anything elseAny MCP client that speaks streamable HTTP: the URL above, plus OAuth or the bearer header

Tools

ToolWhat it doesSpends leads
search_leadsLive search for local businesses by niche and US city. Returns the first batch and keeps finding and verifying more in the background.yes, 1 per lead
get_search_resultsA search's leads with verification filled in as it progresses. Poll until enrichment is complete.no
enrich_domainsVerify up to 10 business websites you already have.yes, 1 per domain
query_leadsFilter and sort every lead you have collected, across all searches.no
export_leadsSend a search, a campaign or a filtered set to Close, GoHighLevel, Google Sheets, or a CSV, Excel or JSON file.no
list_searchesYour recent searches.no
get_balanceLeads left, and when they reset.no
list_viewsYour saved views (named filter sets) from the leads table.no
list_integrationsWhich export destinations are connected and ready.no
list_automationsYour scheduled searches.no
create_automationRe-run a search on a schedule and export each run.yes, each run
update_automationPause or resume an automation.no
delete_automationDelete an automation. This can't be undone.no
find_placesUS states and places, with the codes an advanced search takes.no
estimate_advanced_searchWhat an advanced search would find and how long it would take, without starting it.no
run_advanced_searchMany keywords across the whole US, whole states or single places, each business charged once.yes, 1 per unique lead
list_advanced_searchesYour advanced searches and their progress.no
get_advanced_searchOne advanced search: progress by keyword, top places, the batch running now.no
control_advanced_searchPause, resume or stop an advanced search.no

Every tool carries MCP annotations: read-only tools say so, and delete_automation is marked destructive. The tools that spend leads say so in their descriptions, so your assistant can confirm with you first.

Pricing and limits

One lead is one delivered business, with all of its verification included. Lookups, reads and exports are free. See pricing and limits.

Support

License

The files in this repository (docs and config examples) are MIT-licensed; see LICENSE. Use of the LeadMarina service is governed by the Terms of Service.

Source: README.md at commit ad4f545

Tools

19

search_leads

Search local-business leads

Run a live search for local businesses by niche + city (e.g. query 'electrician', location 'Austin, TX'). Returns a search_id and, usually, the first batch immediately (its listings are in `results`; their emails and phones are not verified yet — when discovery is 'in_progress' the provider was slow and the whole search was queued, so the leads arrive through get_search_results); more results are found and verified in the background — every email is SMTP-checked and phones are verified with line type + carrier. Spends 1 lead per result. Poll get_search_results until enrichment is 'complete'. If enrichment is already 'complete', nothing was found and nothing more is coming; if capped is true, the balance covered fewer leads than were found. With country, a US territory (PR, GU, VI, AS, MP) is searched; max_leads stops it early and exact_category keeps only that Google category. For many keywords or places at once, use run_advanced_search.

Parametersqueryrequiredcountrylocationmax_leadslocation_codeexact_category

get_search_results

Get search results

Fetch a search's leads with verification filled in as enrichment progresses. Poll until enrichment is 'complete'. Each lead includes verified emails (SMTP status), verified phones (line type + carrier), owner name where identified, socials, and the business profile.

Parameterslimitoffsetsearch_idrequired

enrich_domains

Enrich business domains

Already have businesses? Pass up to 10 website domains to run the full enrichment + verification pipeline on them (verified emails + phones, owner name, socials). Costs 1 lead per distinct domain — spellings of the same site (acme.com, www.acme.com, https://acme.com/contact) count once. Returns a search_id to poll with get_search_results. US businesses only for now: their phones are read as US numbers.

Parametersdomainsrequired

query_leads

Query the lead library

Search ALL leads the account has ever collected (across every search) with filters and sorting — no new search is run and no leads are spent. A Google listing found more than once appears once, with its most recent data. Up to 1,000 leads per call (default 25). When next_cursor is set, call again with cursor = next_cursor for the next page: the cursor carries its filters and sort, so it can be sent alone. Pass search_id to query one search's leads instead of the whole library. Example — plumbers in Austin rated 4.5 or higher with a safe email, most-reviewed first: filters=[{field:'category',operator:'contains',value:'plumb'},{field:'city',operator:'is',value:'Austin',conj:'and'},{field:'rating',operator:'gte',value:'4.5',conj:'and'},{field:'email_status',operator:'is',value:'safe',conj:'and'}], sort=[{id:'reviews',dir:-1}]. A field, operator or value the tool cannot use comes back as an error that names it and lists what works. Pass campaign_id instead of search_id to query one advanced search's leads.

Parameterssortlimitcursorfilterssearch_idcampaign_id

export_leads

Export leads to a destination

Push leads into a connected destination: 'close' (CRM — uses the account's saved field mapping), 'ghl' (GoHighLevel sub-account), 'google_sheets' (new spreadsheet, or pass spreadsheet_id for one LeadMarina created before), or a file — 'csv' | 'xlsx' | 'json' (a 7-day download link, also emailed to the account owner when the file is small enough to attach). Exports EITHER one search's leads (pass search_id) or the whole library (set all=true). Either can be narrowed with the same filter rows as query_leads — with search_id they apply within that search. Leads go out best-ranked first (rank, then id), the order of the leads table. LIMITS PER CALL, which differ by destination because CRMs take one API call per lead: csv/xlsx 50,000 · json 25,000 · google_sheets 5,000 · close/ghl 1,000. For a big library going to a CRM, export csv and import the file instead. If more leads match than the limit, the response sets truncated=true and returns next_cursor — relay that to the user, the export was partial; to send the next batch, call export_leads again with the SAME destination, search_id or all, and filters, plus cursor=next_cursor. A next_cursor with not_sent means the destination's time limit cut this batch short: the same call with that cursor sends the rest. An all=true export spread over several calls reads the library live, so a lead that a search running between calls finds again can be skipped or sent twice; for one consistent copy, export the library in a single csv/xlsx (up to 50,000 leads) or json (up to 25,000) call while no search is running. Close, GoHighLevel and a LeadMarina-created sheet passed as spreadsheet_id UPDATE previously exported leads in place (matched by Google CID), never touching the user's own CRM notes/columns — unless update_existing is false (then Close skips leads it already has, and a sheet appends every row); a file or a new sheet is a fresh copy every time — so do not repeat a call that succeeded. Or pass campaign_id instead of search_id

Parametersallcursorfilterssearch_idcampaign_iddestinationrequiredsheet_titlespreadsheet_idupdate_existing

list_searches

List recent searches

The account's recent searches (id, niche, location, result count, when) — use a search_id with get_search_results or export_leads.

Parameterslimit

get_balance

Get lead balance

What the account has left, and when it resets. On a plan with a rate limit (no monthly quota) this is the leads left in the current 7-day period; on a metered plan it is the monthly allotment remaining.

Takes no parameters.

list_views

List saved views

The account's saved views from the leads table — each a named set of filters the user already built (e.g. 'Roofers with a mobile number'). Returns each view's filter conditions in the exact shape query_leads and export_leads accept, so "export my Hot Leads view to Close" works without rebuilding the filters by hand.

Takes no parameters.

list_integrations

List connected integrations

Which export destinations this account has connected (Close, GoHighLevel, Google Sheets) and whether each is ready to receive leads. Check this BEFORE export_leads or create_automation with a CRM destination — those fail if the integration isn't connected. Close with no saved field mapping sends Close's own fields (name, website, address, contact, phone, email). File destinations (csv/xlsx/json) always work and need nothing connected.

Takes no parameters.

list_automations

List scheduled searches

The account's automations — saved searches that re-run on a schedule and export themselves. Shows each one's niche, cities, cadence, destination, whether it's active, when it next runs, and how the last run went.

Takes no parameters.

create_automation

Schedule a recurring search

Create an automation: re-run a search on a schedule and send the results somewhere automatically. Pass cities as plain strings (e.g. ['Austin, TX', 'Dallas, TX']) — they're resolved for you. IT SPENDS LEADS ON EVERY RUN, one per result, so confirm the niche, cities and cadence with the user before creating one. A destination of 'close', 'ghl' or 'google_sheets' requires that integration to be connected already (Close with no saved field mapping sends Close's own fields); 'csv' | 'xlsx' | 'json' emails a file and needs nothing set up. Every city must resolve and the destination must be one of the listed values, or nothing is created and the error says what to fix. Up to 20 automations, 25 cities each. Automations search US places only for now: a city outside the US is refused. Advanced search's options (a country other than the US — a territory included — max_leads, exact_category) are refused here too.

Parameterscitiesrequiredcadencerequiredkeywordrequiredstart_atdestinationspreadsheet_id

update_automation

Pause or resume an automation

Pause an automation (active=false) so it stops running and stops spending leads, or resume it (active=true). Pausing is the safe way to stop an automation you might want back — use delete_automation only when the user wants it gone for good.

Parametersidrequiredactiverequired

delete_automation

Delete an automation

Permanently delete an automation. This cannot be undone — confirm with the user first, and prefer update_automation with active=false if they only want it to stop for now. Leads already collected by past runs are kept; only the schedule is removed.

Parametersidrequired

find_places

Find US states and places

Where an advanced search can run — the US and its territories for now. With no arguments: the US and its territories (Puerto Rico, Guam …), with their codes. With country 'US': its states and their codes. With q: US places whose name contains q, with their codes and states — for run_advanced_search's places, or search_leads' location_code.

Parametersqcountry

list_advanced_searches

List advanced searches

This account's advanced searches, newest first: status, leads so far, searches done of total.

Parameterslimit

Version history

2
  1. v1.3.0LatestOct 31, 2026
  2. v1.2.0Sep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts