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.
- Open Claude's connectors page and click Add custom connector.
- Fill in the two boxes:
Name
LeadscartURLhttps://leadscart.io/api/mcp - Click Add, then Connect. Sign in to Leadscart and click Allow.
- 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.