Integrations

MCP server (any client)

LeadMarina's MCP server: endpoint, tools, auth, and config for any MCP-compatible tool.

POST/api/mcp

LeadMarina on the Model Context Protocol

The Model Context Protocol (MCP) is an open standard for connecting AI applications to external systems. Anthropic open-sourced it in November 2024; OpenAI adopted it across its products in March 2025; and in December 2025 the protocol moved to the Agentic AI Foundation, a directed fund under the Linux Foundation co-founded by Anthropic, Block, and OpenAI. It now has first-class support in Claude, ChatGPT, Cursor, VS Code, and other major AI clients.

An MCP server exposes typed tools over JSON-RPC 2.0. The client — your AI application — discovers them with tools/list, reads each tool's JSON Schema, and lets the model invoke them with tools/call. LeadMarina implements the server side of that contract: seven tools that search, verify, query, and export local-business leads, so an agent can run your prospecting pipeline instead of you clicking through a UI.

Connecting

The server runs at https://leadmarina.com/api/mcp over streamable HTTP, the spec's remote transport: a single endpoint, HTTP POST per JSON-RPC message, Server-Sent Events when a response streams. There is nothing to install locally — add the URL wherever your client configures MCP servers (a connector in Claude or ChatGPT, an entry in Cursor's mcp.json, an MCP server in VS Code).

Authentication works two ways:

  • OAuth 2.1. On first contact the server returns 401 with a WWW-Authenticate header pointing at its protected resource metadata (RFC 9728). Clients that support dynamic client registration (RFC 7591) register themselves, open a browser window for consent, and complete the PKCE flow automatically. From your side this is: paste the URL, click Authorize.
  • API-key headers. For headless agents or clients without OAuth support, pass a LeadMarina API key — the same bearer keys the REST API uses, available on every plan including free.

The seven tools

  • search_leads — start a search with one niche and one city per call. It returns a search_id and the first batch of leads immediately; more results are found and verified in the background. For multiple cities, the agent simply makes one call per city.
  • get_search_results — retrieve the delivered leads for a search; poll it until enrichment reports complete to collect everything the background pipeline delivers.
  • query_leads — filter and read leads you already own. Free: it never draws on your lead balance.
  • enrich_domains — submit up to 10 domains you already hold per call and get back the same fully verified profile, one lead per domain.
  • export_leads — push leads to Close, GoHighLevel, Google Sheets, or a CSV/Excel/JSON file. Pass a search_id to export one search, or all=true to export from your whole library (capped at 1,000 leads per call), optionally narrowed with the same filter rows query_leads uses. File exports return a download link and email you the file.
  • list_searches — list your recent searches with their ids, lead counts, and dates.
  • get_balance — check remaining leads before committing to a large search.

Every delivered lead is fully verified: up to three emails SMTP-checked and labeled safe/risky/invalid; up to three phones with line type (mobile, landline, VoIP, toll-free) and carrier; owner name where identifiable; Facebook, Instagram, LinkedIn, X, YouTube, TikTok, and Yelp profiles; ratings, reviews, and the full business profile. Billing is a single meter: one lead = one delivered fully verified business.

Searches are asynchronous

search_leads doesn't block while the pipeline runs. Each call returns a search_id and the first batch of results immediately; LeadMarina keeps finding and verifying more businesses in the background. Your agent polls get_search_results with that search_id until the enrichment status reads complete — at that point every lead in the search has been delivered and fully verified. The tool schemas describe this contract, so a capable model works out the poll loop on its own.

A typical session

Say you prompt your agent: "Check my balance, then find plumbers in Austin, Dallas, and Houston with a safe email and a mobile number, and push them into Close."

  • get_balance confirms headroom.
  • search_leads runs three times — one niche and one city per call — each returning a search_id and a first batch of leads immediately.
  • get_search_results is polled for each search_id until enrichment reads complete, returning the verified businesses.
  • query_leads narrows to leads whose email is labeled safe and whose phone line type is mobile.
  • export_leads sends the shortlist to Close — the agent passes each search_id along with the same filter rows, so only the safe-email, mobile-number leads go across.

Because each tool's schema describes its fields, the model composes these steps itself — you describe outcomes, not calls.

Update and dedupe semantics

All exports update in place, matched by a stable Google business identifier. Re-exporting never creates duplicates and never touches data you created: notes, activities, custom fields, extra rows, and formatting are left alone; in GoHighLevel, tags are additive-only.

  • Close: connect via OAuth. The first export opens a field-mapping dialog — native fields map to Close built-ins, everything else to custom fields LeadMarina auto-creates named after its columns. The mapping is saved and tracked by Close field ID, so renaming a field in Close does not break it.
  • Google Sheets: export to a new spreadsheet or one LeadMarina created before. All columns export; columns you hide arrive hidden but still update. Row identity lives in a hidden column.

Scheduling

Any search can repeat once, daily, weekly, monthly, or yearly with any export destination. Schedules are created and run inside the LeadMarina app; from MCP, list_searches surfaces each run as it lands — with its id, lead count, and date — and get_search_results pulls the latest run's leads into your agent's context — useful for a weekly agent that reviews fresh leads before they reach your CRM.

Troubleshooting

  • 401 on the first request is expected — it starts OAuth discovery. If your client stalls at registration, it may lack dynamic client registration support; switch to an API key.
  • Client can't add the server: it must support remote MCP servers over streamable HTTP. If yours doesn't, the REST API covers searching, enrichment, and reading your results with the same bearer keys on every plan — note that it has no export endpoint, so exports run through MCP or the web app.
  • Balance exhausted: the free plan includes 100 leads; paid plans are 15,000, 65,000, or 240,000 leads per month. query_leads stays free either way, so agents can keep working with leads you already own.

Also listed on: the official MCP Registry and Glama.