com. leadmarina/ leadmarina
by leadmarina.com · remote · no sign-in to list tools · v1.2.0 · published by com.leadmarina
Verified local-business leads: search any niche + city, query your library, export to your CRM.
13 tools: 1 can delete or cancel things, 5 change things and 7 only read.
Scanned Oct 21, 2026
- Deletes or cancels1Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things5Claude Code: ask: see these tools
- Only reads7Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http leadmarina https://leadmarina.com/api/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
13 tools
Deletes or cancels 1Claude Code: deny
delete_automationPermanently delete an automation.No findings
Why it is in this group
- The name "delete_automation" says "delete": a word for removing or ending something.
- The description says "Permanently delete".
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it 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.
Annotations the server declares
- title: Delete an automation
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: false
Changes things 5Claude Code: ask
create_automationCreate an automation: re-run a search on a schedule and send the results somewhere automatically.No findings
Why it is in this group
- The name "create_automation" says "create": a word for a change.
Description, as the server wrote it 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 also needs one manual export first to save its field mapping); '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.
Annotations the server declares
- title: Schedule a recurring search
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
enrich_domainsAlready have businesses?No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it 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.
Annotations the server declares
- title: Enrich business domains
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
export_leadsPush leads into a connected destination: 'close' (CRM — uses the account's saved field mapping), 'ghl' (GoHighLevel sub-account), 'google_sheets' (new spreadsheet, or pass spreadsh…No findings
Why it is in this group
- The description's first verb is "push": a word for a change.
Description, as the server wrote it 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; a file or a new sheet is a fresh copy every time — so do not repeat a call that succeeded.
Annotations the server declares
- title: Export leads to a destination
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
search_leadsRun a live search for local businesses by niche + city (e.g.No findings
Why it is in this group
- The name "search_leads" says "search": a word for reading.
- The description's first verb is "run": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- title: Search local-business leads
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
update_automationPause an automation (active=false) so it stops running and stops spending leads, or resume it (active=true).No findings
Why it is in this group
- The name "update_automation" says "update": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- title: Pause or resume an automation
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
Only reads 7Claude Code: allow
get_balanceWhat the account has left, and when it resets.No findings
Why it is in this group
- The name "get_balance" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Get lead balance
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
get_search_resultsFetch a search's leads with verification filled in as enrichment progresses.No findings
Why it is in this group
- The name "get_search_results" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Get search results
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
list_automationsThe account's automations — saved searches that re-run on a schedule and export themselves.No findings
Why it is in this group
- The name "list_automations" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: List scheduled searches
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
list_integrationsWhich export destinations this account has connected (Close, GoHighLevel, Google Sheets) and whether each is ready to receive leads.No findings
Why it is in this group
- The name "list_integrations" says "list": a word for reading.
Description, as the server wrote it 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, and Close additionally needs one manual export first to save its field mapping. File destinations (csv/xlsx/json) always work and need nothing connected.
Annotations the server declares
- title: List connected integrations
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
list_searchesThe account's recent searches (id, niche, location, result count, when) — use a search_id with get_search_results or export_leads.No findings
Why it is in this group
- The name "list_searches" says "list": a word for reading.
Description, as the server wrote it The account's recent searches (id, niche, location, result count, when) — use a search_id with get_search_results or export_leads.
Annotations the server declares
- title: List recent searches
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
list_viewsThe account's saved views from the leads table — each a named set of filters the user already built (e.g.No findings
Why it is in this group
- The name "list_views" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: List saved views
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
query_leadsSearch ALL leads the account has ever collected (across every search) with filters and sorting — no new search is run and no leads are spent.No findings
Why it is in this group
- The name "query_leads" says "query": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Query the lead library
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.2.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http leadmarina https://leadmarina.com/api/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__leadmarina__get_search_results",
"mcp__leadmarina__query_leads",
"mcp__leadmarina__list_searches",
"mcp__leadmarina__get_balance",
"mcp__leadmarina__list_views",
"mcp__leadmarina__list_integrations",
"mcp__leadmarina__list_automations"
],
"ask": [
"mcp__leadmarina__search_leads",
"mcp__leadmarina__enrich_domains",
"mcp__leadmarina__export_leads",
"mcp__leadmarina__create_automation",
"mcp__leadmarina__update_automation"
],
"deny": [
"mcp__leadmarina__delete_automation"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as leadmarina. Review it before you use it.