Leadscart

Remote MCP server for B2B contact data: search people by title, company, industry, headcount, country and technology, then reveal verified work emails and phone numbers. Tools: people_search, email_find, list_create, list_add, list_export, credits_balance. Streamable HTTP, Bearer API key auth.

Hosted MCP Server

npx add-mcp 'https://leadscart.io/api/mcp'

Installs into Claude Code, Codex, Cursor and more

Documentation

Contacts and verified emails for agents

Search B2B contacts by title, company, industry, headcount, country and technology, then reveal verified work emails, through an MCP server and a REST API. Same credits and suppression rules as the app, on every plan, including Free.

MCP: https://leadscart.io/api/mcpREST: https://leadscart.io/api/v1 openapi.json

What's live

Each tool and endpoint below carries a badge. Live means you can call it today. Planned means the contract is published but calls return 404 with details.status: "not_implemented". The OpenAPI document marks the same thing with x-status and is always the source of truth.

API keys and auth LiveCredits envelope LivePer-key rate limits LiveMCP server LiveOpenAPI Live

Quickstart

Pick your tool and follow the steps; it takes about a minute. Claude signs you in, so it needs no key. Every other tool needs an API key from Settings → API & MCP. Keys start with lc_live_ and are shown once.

No API key needed. You sign in to Leadscart instead.

  1. Open Claude's connectors page and click Add custom connector.
  2. Fill in the two boxes: Name Leadscart URL https://leadscart.io/api/mcp
  3. Click Add, then Connect. Sign in to Leadscart and click Allow.
  4. Start a new chat and ask for people. For example: “Find 10 VP Sales at US fintechs with 50–200 employees” Search is freeCopy

Works in the Claude desktop and mobile apps too. On a Team or Enterprise plan, a Claude owner adds it once under Organization settings → Connectors.

To disconnect later, revoke “Claude (connected)” under API keys in Settings → API & MCP.

Workflow recipes

In n8n and Clay every call is an HTTP request with the same Authorization header. Two common ones:

Node: HTTP Request
Method: POST
URL: https://leadscart.io/api/v1/people/search
Authentication: Generic → Header Auth
  Name:  Authorization
  Value: Bearer lc_live_…
Body (JSON): {"filters": {"titles": ["VP Sales"], "countries": ["US"]}}

Authentication

  • Send Authorization: Bearer lc_live_… on every request to /api/v1/* and /api/mcp.
  • Keys belong to a workspace and spend its credits. We store only a hash; a lost key can't be recovered, only replaced.
  • Keys expire after 180 days and can be revoked at any time from Settings.
  • Never put a key in browser code. Use it from servers, agents and workflow tools.
curl https://leadscart.io/api/v1/credits \
  -H "Authorization: Bearer lc_live_…"

Rate limits

Each key may send 120 requests per minute (sliding window). Over the limit you get 429 rate_limited with a Retry-After header. Searches also count against a per-workspace daily page budget, which surfaces as 429 or 503 budget_exhausted.

Credits in every response

Successful JSON responses are wrapped in one envelope, so an agent always knows what a call cost. CSV exports carry the same numbers in X-Credits-Spent and X-Credits-Remaining headers. Errors include credits too (spent is 0).

{
  "data": { … },
  "credits": { "spent": 3, "remaining": 197 }
}

Costs: searching and export are free; 1 per person revealed (only when a verified email or a phone number comes back; the phone is included). Every call shows its maximum cost before it spends anything.

MCP tools

Tool names are noun_verb. Inputs and outputs below are sketches; the MCP server's tool schemas are exact. For client connection guides, playbooks and prompts, see our dedicated B2B Data MCP Server overview.

people_search Live

Search contacts by title, company, industry, headcount, country and technology.

in

{ filters: { titles, countries, employee_ranges, … }, page? 1–50 }

out

ok { people, total } · too_broad / no_matches { suggestions }

credits

Free to search and export · 1 per verified email or phone

email_find Live

Find verified work emails, and phone numbers where we have them, for leads already on a List.

in

{ lead_ids: string[] ≤ 25, idempotency_key? }

out

{ results: { lead_id, email, phone, status }[] }

credits

1 per verified email or phone · misses free

list_create Live

Create a List to collect leads.

in

{ name }

out

{ id, name }

credits

Free

list_add Live

Add people (by LinkedIn URL) to a List. Suppressed people are skipped.

in

{ list_id, people: { linkedin_url, … }[] ≤ 500 }

out

{ added, already_in_list, suppressed, lead_ids }

credits

Free

list_export Live

Export a List as JSON rows or CSV.

in

{ list_id, include_emails? } (REST:?format=json|csv)

out

{ rows } or CSV

credits

Free to export

credits_balance Live

Current balance and credits expiring soon.

in

{}

out

{ balance, lists_equivalent, expiring_within_7_days, next_expiry }

credits

Free

REST endpoints

Base URL https://leadscart.io/api/v1. JSON in, JSON out. Full request and response schemas are in /api/v1/openapi.json. ChatGPT rejects action descriptions over 300 characters, so import /api/v1/openapi.json?for=chatgpt there: the same API, described more briefly.

GET/api/v1/credits Credit balance· credits_balanceLive

POST/api/v1/people/search Search people· people_searchLive

POST/api/v1/emails/find Find verified work emails· email_findLive

GET/api/v1/lists List ListsLive

POST/api/v1/lists Create a List· list_createLive

POST/api/v1/lists/{id}/items Add people to a List· list_addLive

GET/api/v1/lists/{id}/export Export a List· list_exportLive

Errors

Errors share one shape. message is safe to show to a user; retryable tells an agent whether to try again.

{
  "error": {
    "code": "insufficient_credits",
    "message": "You don't have enough credits for this. Buy credits to continue.",
    "retryable": false
  },
  "credits": { "spent": 0, "remaining": 12 }
}

401 unauthorized Missing, malformed, expired or revoked API key. Check the Authorization header; create a new key.

402 insufficient_credits The balance can't cover the maximum cost of this call. Choose a bigger plan, or lower credit_budget.

409 conflict A conflicting operation is already in progress, e.g. the same run or export. Wait for it to finish, then retry.

422 provider_rejected Input is valid JSON but can't be run: unknown filter values or an impossible query. Fix the filters named in details.

429 rate_limited More than 120 requests per minute on this key. Wait Retry-After seconds.

503 provider_unavailable · budget_exhausted A data provider is down, or today's capacity is used up. Retry later; retryable is true.

Not in v1

So you can plan around it, these aren't available and aren't promised:

  • alerts and webhooks;
  • CRM sync and team seats;
  • unlimited plans or waterfall enrichment across providers.

Questions or a use case we don't cover? See pricing or sign in and create a key.