Generect Live API MCP Server
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_DEBUG | No | Set to '1' to enable debug logging | |
| OAUTH_BASE_URL | No | Base URL for OAuth endpoints (optional) | |
| JWT_SIGNING_KEY | Yes | Secret key used for JWT signing | |
| GENERECT_API_KEY | Yes | Your Generect API key in format 'Token <api-key>' | |
| GENERECT_API_BASE | No | Base URL of the Generect API. Default: https://api.generect.com | |
| GENERECT_TIMEOUT_MS | No | Timeout in milliseconds. Default: 60000 | |
| TOKEN_ENCRYPTION_KEY | Yes | 32-byte hex key for AES encryption of tokens |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
| completions | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| count_leadsA | How many leads match an ICP, and what pulling them would cost. FREE — this call never spends credits. ALWAYS CALL THIS BEFORE search_leads: it is the only way to learn the size of an audience without paying per row, and it returns a cost estimate for the next step at this account's real rates. A realtime count is NOT free ($0.02 flat) — this tool refuses to run one unless you pass mode:"realtime" on purpose. |
| count_companiesA | How many companies match an ICP, and what pulling them would cost. FREE — this call never spends credits. Call this before search_companies. As with count_leads, a realtime count costs $0.02 and is never run implicitly. |
| get_balanceA | Account balance, month-to-date usage and THIS account's real per-operation prices. FREE — this call never spends credits. balance_usd is the wallet; grants_usd is bonus and plan credit (sign-up bonus, perks, plan allowance), reported apart. Grants are spent first, but only on the operations each one covers: a promo perk or a plan allowance may not pay for API calls, and a perk never pays for phone numbers. Report both figures; do not add them up as what the user can spend. Call it before a batch of paid work (so you can tell the user what they can afford) and after (so you can report exactly what was spent). The prices it returns beat any number in a tool description — those are list prices. |
| healthA | Liveness check. FREE — this call never spends credits. Confirms the MCP server is up, reports its version, and (unless you disable it) verifies the credential against a free account endpoint. It never touches a paid data endpoint, so it is safe to call from a monitor. |
| preview_leadsA | Cheap look at the actual people behind a count, before committing to a full search. BILLABLE — about $0.002 per returned row (Tier 0 list price; your account may pay a different rate — call get_balance for your real prices, and read cost.amount_charged in every response for what was actually spent). Preview rows carry a Generect |
| search_leadsA | Return leads (people) matching an ICP. FREE by default while the account has free thin rows left today (daily quota; see detail — pass detail "thin" to guarantee $0). detail "full" is billable, about $0.0067 per returned row (0 rows costs $0) (Tier 0 list price; your account may pay a different rate — call get_balance for your real prices, and read cost.amount_charged in every response for what was actually spent). Realtime, or an auto escalation to it, is billed per row too. Run count_leads first — it is free and sizes the audience. Rows never include email or phone: call generate_email (it takes the lead id) or find_phone only on the ids you keep. Ordering is not stable, so paginate by passing ids you already have in exclude_ids rather than by offset. |
| search_companiesA | Return companies matching an ICP. FREE by default while the account has free thin rows left today (daily quota; see detail — pass detail "thin" to guarantee $0); thin rows carry no domain — use enrich_company on the ones you keep. detail "full" is billable, about $0.0067 per returned row (0 rows costs $0) (Tier 0 list price; your account may pay a different rate — call get_balance for your real prices, and read cost.amount_charged in every response for what was actually spent). Realtime is billed per row too. Run count_companies first. Note that headcount_range is a snapshot taken when the record was indexed and can lag the company's current size; the filter itself is applied at query time. |
| resolve_profileA | Reveal who is behind an anonymous LinkedIn profile link. BILLABLE — about $0.0005 per RESOLVED profile (an unresolvable reference is free) — duplicates in one batch are billed per row, so deduplicate first (Tier 0 list price; your account may pay a different rate — call get_balance for your real prices, and read cost.amount_charged in every response for what was actually spent). Takes the obfuscated links that Sales Navigator leaves in exports, CRMs and ad platforms — |
| enrich_leadA | Full profile for ONE known person, by Generect id, LinkedIn URL, or work email (reverse lookup). BILLABLE — about $0.0067 per record found (not-found is refunded) (Tier 0 list price; your account may pay a different rate — call get_balance for your real prices, and read cost.amount_charged in every response for what was actually spent). Not found costs nothing. Prefer the |
| enrich_companyA | Full profile for ONE known company, by Generect id, LinkedIn URL, domain, or name. BILLABLE — about $0.0067 per record found (not-found is refunded) (Tier 0 list price; your account may pay a different rate — call get_balance for your real prices, and read cost.amount_charged in every response for what was actually spent). Not found costs nothing. Domain is the most reliable identifier after id; name matching is fuzzy. |
| get_lead_by_urlA | Alias of enrich_lead for a LinkedIn profile URL, kept for backwards compatibility. BILLABLE — about $0.0067 per record found (not-found is refunded) (Tier 0 list price; your account may pay a different rate — call get_balance for your real prices, and read cost.amount_charged in every response for what was actually spent). Prefer enrich_lead — it also accepts a Generect id (cheaper to get right) or an email for reverse lookup. |
| generate_emailA | Find and verify a work email. BILLABLE — about $0.02 per VALID email found (a miss is free) (Tier 0 list price; your account may pay a different rate — call get_balance for your real prices, and read cost.amount_charged in every response for what was actually spent). Identify the person by lead_id (best), LinkedIn URL, or first+last+domain. |
| validate_emailA | Check deliverability of emails you already have. BILLABLE — about $0.005 per email submitted — every address is billed, whatever the verdict (Tier 0 list price; your account may pay a different rate — call get_balance for your real prices, and read cost.amount_charged in every response for what was actually spent). This is the one operation where EVERY submitted address is billed — the verdict is the deliverable. Never validate an address that generate_email just returned as valid; it is already verified. |
| find_phoneA | Find a phone number for one person. BILLABLE — about $0.4 per phone found (a miss is free) (Tier 0 list price; your account may pay a different rate — call get_balance for your real prices, and read cost.amount_charged in every response for what was actually spent). THE MOST EXPENSIVE OPERATION HERE — roughly 20x an email lookup. Do not call it speculatively or across a list; confirm with the user first, and only for people they have already qualified. Use start_bulk_job for an approved list. |
| start_bulk_jobA | Submit up to 50 records for asynchronous processing and get a job_id back. BILLABLE at the same per-record rate as the single-record tool — and the whole cost is RESERVED at submit time, so a submitted job keeps running (and keeps charging) even if you stop polling. Only submit a list the user has approved. Poll with get_bulk_job, or register a webhook to be told when it finishes. |
| get_bulk_jobA | Status and results of a bulk job. FREE — this call never spends credits. Polling is free — the work was already billed at submit time. Poll every few seconds, not in a tight loop. |
| manage_webhooksA | List, create, update, delete or test webhook endpoints for bulk-job completion. FREE — this call never spends credits. Use this instead of long polling in scheduled/unattended workflows: register once, then let the completion event wake your job up. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| size_an_audience | Turn a plain-language ICP into filters and find out how many people match — without spending anything. |
| build_prospect_list | Count, preview, then buy only the rows the user approved — and report the exact spend. |
| enrich_my_list | Deduplicate, drop unusable rows, enrich, and report the spend. |
| spend_report | Balance, month-to-date usage by operation, and the most recent charges. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| generect-pricing | This account's real price for every operation, read from its spend tier. These are the numbers to quote to a user — the prices in tool descriptions and in the public docs are list prices and have not always matched what is billed. |
| generect-account | Free read of the current balance, spend this month and Preview eligibility. |
| Generect results view | Interactive view for Generect search, count, enrichment and balance results. |
| generect-vocabulary-industries | Every industry name the Generect API matches on, with its parent. Matching is exact and unknown names are NOT rejected — they silently return 0 results. |
| generect-vocabulary-seniorities | Canonical Sales Navigator seniority labels. The API does not validate this field: an unknown value is accepted and may match loosely or not at all. |
| generect-vocabulary-functions | Job functions. Realtime-only filter — using it forces the pricier live mode. |
| generect-vocabulary-company-types | Company types. The API rejects an unknown value with HTTP 400. |
| generect-vocabulary-headcounts | Employee-count buckets. Exact strings; the API rejects anything else with HTTP 400. |
| generect-vocabulary-follower-ranges | Follower-count buckets for company search (realtime only). |
TDQS
Scored across 17 tools
Most tools have clearly distinct purposes (counts vs. searches vs. enrichment vs. bulk jobs), but get_lead_by_url is explicitly an alias of enrich_lead, and search_leads/search_companies and enrich_lead/enrich_company are parallel pairs that could be confused at a glance. The descriptions do a good job of clarifying the boundaries, so ambiguity is minor.
Nearly every tool follows a consistent verb_noun pattern: count_leads, search_companies, enrich_lead, generate_email, validate_email, find_phone. The only outliers (health, get_balance, manage_webhooks, get_bulk_job) are standard, readable conventions rather than inconsistencies.
17 tools is slightly heavy but reasonable for a domain with distinct search, count, enrichment, email, phone, bulk-job, and webhook operations. The alias get_lead_by_url is redundant and slightly inflates the count.
The surface covers the full lead-generation lifecycle: counting, searching, previewing, enriching, email finding/validation, phone lookup, bulk processing, webhooks, and account/health checks. No obvious gaps or dead ends for the stated purpose.