// DOCUMENTATION
Descovo MCP Documentation
Descovo is a B2B data API and hosted MCP server that gives AI agents access to 700M+ professional profiles. Search costs 0 credits. Each reveal attempt costs 1 credit, including not-found results. When available, work email and direct phone are returned together under that credit. No seats, no minimums, no contracts.
New to MCP? Read our guide to the Model Context Protocol.
// QUICK START
Quick Start: Connect the B2B Data API in Three Steps
01
Create an API key
Sign up at descovo.com (no credit card required). Go to your dashboard and generate an API key. It starts with sk_live_.
02
Add to your MCP client
Use the Claude Code command, Cursor config, or HTTP details below. Replace the placeholder with your API key. The generic path requires a client that supports static custom headers.
03
Ask your agent
Tell your agent what you need: "Find VPs of Engineering at fintech companies in NYC with available work email fields." The agent calls Descovo and returns structured results.
// CLIENT SETUP
Connect your MCP client
Descovo uses Streamable HTTP transport. No local installation, no Docker, no npm package. Just a URL and your API key.
claude mcp add --transport http \ --header "x-api-key: sk_live_••••••••••••••••" \ descovo https://mcp.descovo.com/mcp
Connection details
Endpoint: https://mcp.descovo.com/mcp
Transport: Streamable HTTP
Auth header: x-api-key: sk_live_...
// MCP TOOLS
MCP Server Tools and API Coverage
The MCP server exposes five tools. Your AI agent discovers them automatically and decides which to call based on your prompt.
search_endpointsAsk for ranked operation candidates from a natural-language intent. Treat the ranking as a suggestion, then verify the chosen operation with its full endpoint details.
When to use: You want candidate operations before confirming the exact operation ID and schema.
list_all_endpointsBrowse every available API operation with a short summary of each.
When to use: You want to explore everything Descovo can do.
list_tag_packsBrowse operations grouped by category (people, companies, jobs, credits, etc.).
When to use: You want to see operations organized by domain.
get_endpoint_details_fullGet the full JSON schema for a specific operation, including all request parameters and response fields.
When to use: You found the operation you need and want exact parameter details before calling it.
call_operationExecute an allowed operation. Pass the operation ID and a params object with body, path, or query data. The MCP server handles authentication and routing.
When to use: You're ready to run a search, reveal contacts, or check credits.
In practice, most workflows follow this pattern: search_endpoints or list_tag_packs to find the right operation, then get_endpoint_details_full to get the schema, then call_operation to execute it. Your agent handles this automatically.
// SEARCH OPERATIONS
People Search API — 0 Credits
All search operations cost zero credits. Run as many searches as you need to find the right people before committing a credit on a reveal. Count variants (e.g. peopleSearchCount) are also free.
peopleSearchPeople Search
Search 700M+ professionals by name, title, seniority, current company, industry, location, and profile keywords.
companySearchCompany Search
Search companies by name, domain, industry, headcount, location, and technology stack.
paginatedCombinedSearchCombined Search
Search people and companies in a single call with unified filters.
jobPostingSearchJob Search
Search open job postings by title, company, location, and keywords.
People search filters
The peopleSearch operation is the most powerful. Here are the available filters:
fuzzyNameFilter by a full or partial person name with an anyOf array of {name: "..."} objects.
jobTitleV3Filter by function and seniority. The MCP-normalized shape uses an include array containing {type: "functional", seniority: [...], keywords: [...]}. Seniority values: senior, staff, principal, lead, manager, head, director, vp, svp, c-suite.
industryFilter by the supported industry enum with anyOf/noneOf arrays. Examples include "Financial Services", "Software Development", and "Banking".
locationFilter by geography. Uses include/exclude arrays of city, state, or country strings.
currentCompaniesTop-level body field for current-employer narrowing. Pass supported company identifiers; it does not belong inside searchParams.
keywordsV2Structured Boolean keyword search across profiles using clauses, terms, and operators.
jobStatusFilter by employment status (e.g. "currently-employed").
pageSizeTop-level body field that controls the number of results returned; it does not belong inside searchParams.
Company headcount is not a direct peopleSearch filter. Use employeeCountV2 in a company search, or combine company and profile criteria with paginatedCombinedSearch.
Example queries
These are the MCP tool call payloads your agent constructs automatically when you ask in natural language. Shown here for reference. See real-world examples in our AI sales prospecting guide.
// VPs of Engineering at fintech companies
// Find VPs of Engineering at fintech companies
{
"tool": "call_operation",
"arguments": {
"operationId": "peopleSearch",
"params": {
"body": {
"searchParams": {
"jobTitleV3": {
"anyOf": [{
"type": "functional",
"seniority": ["vp"],
"keywords": ["engineering"]
}]
},
"industry": { "anyOf": ["Financial Services"] },
"country3LetterCode": { "anyOf": ["USA"] },
"jobStatus": { "status": "currently-employed" }
},
"pageSize": 25
}
}
}
}// Sales directors in New York
// Find sales directors in New York
{
"tool": "call_operation",
"arguments": {
"operationId": "peopleSearch",
"params": {
"body": {
"searchParams": {
"jobTitleV3": {
"include": [{
"type": "functional",
"seniority": ["director"],
"keywords": ["sales"]
}]
},
"location": { "include": ["New York"] },
"jobStatus": { "status": "currently-employed" }
},
"pageSize": 25
}
}
}
}// CTOs at companies with 50-200 employees
// Find CTOs at companies with 50-200 employees
{
"tool": "call_operation",
"arguments": {
"operationId": "paginatedCombinedSearch",
"params": {
"body": {
"companyConfig": {
"searchParams": {
"employeeCountV2": {
"lowerBoundExclusive": 49,
"upperBoundInclusive": 200
}
},
"pageSize": 25
},
"profileConfig": {
"searchParams": {
"jobTitleV3": {
"anyOf": [{
"type": "functional",
"seniority": ["c-suite"],
"keywords": ["technology"]
}]
}
},
"pageSize": 25
}
}
}
}
}// Keyword search across profiles
// Search by keywords across profiles
{
"tool": "call_operation",
"arguments": {
"operationId": "peopleSearch",
"params": {
"body": {
"searchParams": {
"keywordsV2": {
"operator": "AND",
"clauses": [{
"operator": "OR",
"terms": ["machine learning", "infrastructure"],
"negate": false
}]
},
"jobTitleV3": {
"include": [{
"type": "functional",
"seniority": ["senior", "manager", "director"]
}]
}
},
"pageSize": 25
}
}
}
}// Company search by domain
// Search companies by domain
{
"tool": "call_operation",
"arguments": {
"operationId": "companySearch",
"params": {
"body": {
"searchParams": {
"domains": ["ramp.com"]
},
"pageSize": 25
}
}
}
}// REVEAL OPERATIONS
Reveal available contact fields
Each reveal attempt costs 1 credit, including not-found results. When available, work email and direct phone are returned together under that credit.
Lite uses a lower-yield lookup. Standard balances speed and coverage. Turbo prioritizes speed, while Exhaustive trades latency for the broadest available provider coverage.
liteContactRevealLite Reveal
Lower-yield contact lookup for workflows that prefer the lighter operation.
syncQuickContactRevealStandard Reveal
Balanced speed and coverage. Queries providers at request time and is the default choice for most use cases.
syncTurboContactEnrichmentTurbo Reveal
Queries providers at request time with optimized parallelism. Use when you want broader coverage without waiting for Exhaustive.
triggerExhaustiveContactEnrichmentExhaustive Reveal
Queries providers at request time with the broadest available coverage. It is slower and suited to hard-to-find contacts.
// Example: reveal a contact
// Reveal a contact's email and phone
{
"tool": "call_operation",
"arguments": {
"operationId": "syncQuickContactReveal",
"params": {
"body": {
"linkedinUrl": "https://www.linkedin.com/in/example-profile",
"enrichmentType": {
"getWorkEmails": true,
"getPersonalEmails": false,
"getPhoneNumbers": true
},
"validateEmails": true
}
}
}
}What if no data is found?
Each reveal attempt costs 1 credit, including not-found results. A not-found result means no available contact fields were returned for that attempt. Use free search to narrow the people you want before revealing.
// CREDITS
Credit System and Usage-Based Pricing
Search costs 0 credits. Each reveal attempt costs 1 credit, including not-found results. When available, work email and direct phone are returned together under that credit.
Free (0 credits)
- +
peopleSearch / peopleSearchCount - +
companySearch / companyCount - +
paginatedCombinedSearch / combinedSearchCount - +
jobPostingSearch / jobPostingSearchCount - +
getOrgCredits
1 credit per reveal attempt
- +
liteContactReveal - +
syncQuickContactReveal - +
syncTurboContactEnrichment - +
triggerExhaustiveContactEnrichment
Check your balance
Ask your agent “How many credits do I have left?” or call getOrgCredits directly:
// Check your remaining credit balance
{
"tool": "call_operation",
"arguments": {
"operationId": "getOrgCredits",
"params": {}
}
}Pricing tiers
| Plan | Standard price | Credits |
|---|---|---|
| Free | $0 | 500/month |
| Starter | $99/month | 5,000/month |
| Pro | $249/month | 15,000/month |
| Growth | $699/month | 50,000/month |
| Enterprise | $1,799/month | 150,000/month |
Search costs 0 credits on all plans. See full pricing for current offers.
// AUTHENTICATION
API key authentication
Getting your API key
- Create an account at descovo.com (free, no card required).
- Go to your dashboard and click “Create API Key”.
- Copy the key. It starts with
sk_live_and is shown only once.
How auth works
Your API key is passed in the x-api-key HTTP header. When you configure the MCP server in your client, the header is set once in your config file and automatically included with every request. You never need to pass it manually in your prompts.
Security best practices
- Never share your API key publicly or commit it to version control.
- Use environment variables or your OS keychain when possible.
- Rotate your key immediately if you suspect it has been compromised. Generate a new key from your dashboard.
- Each key is scoped to your organization. All team members can share one key, or you can create separate keys per environment.
// BEST PRACTICES
Best Practices for B2B Data Queries
SEARCH FIRST
Search before revealing
Search costs 0 credits. Use it to narrow the people who match your criteria before spending a credit on each reveal attempt.
FILTERS
Use specific filters
The more specific your filters (seniority + function + industry + location), the better your results. Broad searches return more noise. Stack filters to narrow down to exactly the people you need.
CREDITS
Check balance before bulk
Before running a batch of reveals, check your credit balance with getOrgCredits. This prevents your workflow from failing mid-batch when credits run out.
QUICK VS EXHAUSTIVE
Choose the right reveal
Lite uses a lower-yield lookup. Standard balances speed and coverage. Turbo prioritizes speed, while Exhaustive trades latency for the broadest available provider coverage. Each mode costs 1 credit per attempt, including not-found results.
PAGINATION
Use limit and pageSize
Set a reasonable limit (25-50) on searches. Large result sets take longer and you probably only need the top matches. Paginate if you need more.
AGENT TIPS
Let your agent figure it out
You don't need to know the exact parameter names. Describe what you want in natural language and your agent will construct the right call. The MCP tools guide the agent automatically. For inspiration, explore 5 agentic AI workflows you can build today.
// FAQ
MCP Server FAQ
For the full list, see the FAQ page. Here are the most common questions about the MCP server:
Do I need to install anything?+
No. Descovo runs as a hosted MCP server. Configure your MCP client to connect to https://mcp.descovo.com/mcp with your API key in the x-api-key header. No npm package, no Docker, no local process.
Can I use Descovo without MCP, via a regular API?+
Yes. Every operation available through MCP is also available as a REST API endpoint. The current REST contract accepts your sk_live_ key as apiKey: in the query string for GET requests and in the JSON body for POST requests. The x-api-key header is used by the hosted MCP connection.
What MCP clients are supported?+
Descovo currently supports Claude Code, Cursor, and custom MCP clients that accept Streamable HTTP connections with a static x-api-key header. Claude.ai and Claude Desktop custom remote connectors require OAuth, which Descovo does not yet expose.
What happens if a reveal finds no data?+
Each reveal attempt costs 1 credit, including not-found results. A not-found result means no available contact fields were returned for that attempt.
Is there a rate limit?+
Yes, but limits are generous for normal usage. Higher-tier plans get higher rate limits. If you hit a limit, the server returns a standard 429 response; retry after the indicated delay.
Ready to connect?
Get your API key and start searching in under a minute. Free to start, no credit card required. Learn more about the platform overview or browse solutions built on Descovo.