Zooq's MCP server
Add Zooq to any MCP-compatible client (Claude Desktop, Cursor, Codex, Hermes, Openclaw) and your agent gets the full Zooq catalog: all 44 endpoints wrapped as credit-billed MCP tools.
Install: pick your client
Install in Claude Desktop
Open Settings → Connectors → Add custom connector and paste this URL (your key rides inside it — no headers needed):
https://zooq.dev/api/mcp?key=zq_...
Replace zq_... with your key from /dash. Restart Claude. The tools appear in the tools menu under "zooq".
Keep that URL private — the key is in it. If it ever leaks, rotate the key from your dashboard. Restart Claude Desktop after adding; the tools appear in the next conversation.
Install in Cursor
Cursor settings → MCP → paste:
{
"mcpServers": {
"zooq": {
"url": "https://zooq.dev/api/mcp",
"headers": { "X-API-Key": "zq_..." }
}
}
}Install in Codex
Edit ~/.codex/config.toml — append:
[mcp_servers.zooq]
url = "https://zooq.dev/api/mcp"
http_headers = { "X-API-Key" = "zq_..." }Install in Hermes
Edit ~/.hermes/config.yaml — merge under mcp_servers:
mcp_servers:
zooq:
url: "https://zooq.dev/api/mcp"
headers:
X-API-Key: "zq_..."
enabled: trueInstall in Openclaw
Edit ~/.openclaw/openclaw.json — merge into the root object (or run openclaw mcp set zooq '<json>'):
{
"mcp": {
"servers": {
"zooq": {
"url": "https://zooq.dev/api/mcp",
"headers": {
"X-API-Key": "zq_..."
}
}
}
}
}What your agent gets (44 tools)
The full catalog — 44 endpoints across 8 categories, every one of them callable from your MCP client. Tool names follow the convention category_endpoint (e.g. profile_full, companies_info_v2, search_jobs).
Comments (1)
comments_allComments authored by a person across posts. Cursor-paginated.
Companies (11)
companies_entity_idResolve a company slug to the numeric organization id used by the live company endpoints (posts, similar, affiliated, insights). Resolve once, reuse the id.
companies_universal_name_to_idResolve a company slug (the part after linkedin.com/company/) to its stable org_ id — the dataset id used by /companies/info. For the live company endpoints (posts, similar, affiliated, insights) use /api/v1/companies/entity-id instead; the two ids are not interchangeable. Returns the FULL company record (identical to /companies/info) — read `data.id`.
companies_infoFull company firmographics — description, industry, headcount, HQ, follower count, specialties.
companies_enrichFreshest LIVE company profile. Returns three things the dataset record behind /api/v1/companies/info does not: funding signals, the FULL location list (not just HQ), and parent/affiliated/related pages. Pass `slug` and Zooq resolves it to the numeric id at no extra credit cost, or pass `id` from /api/v1/companies/entity-id to skip the lookup. Not-found is free upstream.
companies_name_lookupSearch companies by name, with the full firmographic filter set. Cursor-paginated. Same upstream as /api/v1/search/companies — use whichever entry point reads better; they are equivalent.
companies_employees_dataPeople who work or worked at an organization (professional records, same shape as /search/people). Cursor-paginated.
companies_similarSimilar companies / peers (id, name, industry, followers, url). Keyed by the numeric organization id: pass `slug` and Zooq resolves it for you at no extra credit cost, or pass `id` from /api/v1/companies/entity-id to skip the lookup.
companies_affiliated_pagesAffiliated / subsidiary / showcase pages of a company. Keyed by the numeric organization id: pass `slug` and Zooq resolves it for you at no extra credit cost, or pass `id` from /api/v1/companies/entity-id to skip the lookup.
companies_insightsEmployee-count total + distribution buckets (by department, seniority, location). Keyed by the numeric organization id: pass `slug` and Zooq resolves it for you at no extra credit cost, or pass `id` from /api/v1/companies/entity-id to skip the lookup.
companies_postsA company's recent posts. data.activities[].entityId is the activity id consumed by /posts/info, /posts/comments, /posts/likes. Keyed by the numeric organization id: pass `slug` and Zooq resolves it for you at no extra credit cost, or pass `id` from /api/v1/companies/entity-id to skip the lookup.
companies_jobsOpen job postings across one or more organizations.
Email (5)
email_verifyCheck whether an email address can receive mail, with a deliverability verdict and risk flags (catch-all, disposable, no-MX).
email_findDiscover a person's work email from their first name, last name, and company domain. Returns the address plus a confidence score.
email_find_by_profileIdentify a person and their current company from a professional profile URL (or handle), then find their work email — resolves name + domain for you.
email_reverseResolve the person and company behind a BUSINESS email address. Public/role/disposable mailboxes are rejected (422, no charge) before any work runs.
email_prospectsPage emails already known for a company domain. Cursor-paginated; returns up to 20 contacts per page with first/last name.
Jobs (5)
jobs_details_v2Full job-posting details — title, description, functions, apply url, organization, location.
jobs_similarSimilar job postings (title, organization, location, salary range, posted date).
jobs_people_also_viewed'People also viewed' postings (behavioral relatedness).
jobs_hiring_teamHiring-team member profiles for a posting. Empty members can mean the posting genuinely lists no team OR the posting id was not recognized.
jobs_posted_by_profileJob postings authored by a person (a recruiter's, hiring manager's or founder's roles). Includes closed postings (`jobState`). Only people who have posted jobs return results: for anyone else the upstream answers 422 "the data cannot be displayed or it doesn't exist" - that is a not-found, not a bad id. Find posters via /api/v1/jobs/hiring-team on a live posting.
Lookups (3)
g_title_skills_lookupSkill catalog search by name (partial match) — skills only, despite the endpoint name. Page-paginated. Use to find a skill's skl_ id or normalized_name for the /search/people skills filter.
g_institution_lookupResolve one institution by its normalized name — returns the school name, url, and stable inst_ id. Get the normalized_name from /api/v1/search/schools first.
g_skill_lookupResolve one skill by its stable skl_ id — returns the display name and normalized name. Get the id from /api/v1/g/title-skills-lookup (skill search).
Posts (4)
posts_allA person's recent posts / activity stream. Cursor- or offset-paginated. Keyed by the person entityId: pass `handle` and Zooq resolves it for you at no extra credit cost, or pass `entityId` from /api/v1/profile/entity-id to skip the lookup.
posts_infoFull content of one post (returned under data.post). For comments use /posts/comments.
posts_commentsThreaded comments/replies on a post.
posts_likesPeople who reacted to a post + reaction type and total.
Profile (7)
profile_fullComplete profile in one call — positions, education, skills, certifications, geo, follower/connection counts and flags. This is the canonical profile read; the other profile/* paths (overview, details, about, education, skills, certifications, full-experience, social-matrix) are named aliases that return this exact same record.
profile_entity_idResolve a public handle to the person entityId used by the live person endpoints (posts, comments, interests, lookalikes). Resolve once, reuse the id.
profile_enrichFreshest LIVE snapshot of one profile, by handle or entityId — not the deduplicated dataset record the other profile/* endpoints return. Carries live-only flags (openToWork, isHiring, isTopVoice) and returns the person's entityId, the id every other live person endpoint needs.
profile_employment_historyComplete LIVE work history for one person: per-role organization, title, description, location, parsed dates, per-role skills, and parallel-position groupings (concurrent titles kept distinct rather than flattened). Overlaps /api/v1/profile/full-experience, which reads the dataset record — use this when you need freshness, per-role skills, or correct handling of concurrent roles. Pass `handle` and Zooq resolves it at no extra credit cost, or pass `entityId` from /api/v1/profile/entity-id to skip the lookup. Not-found is free upstream.
profile_recommendationsRecommendations written for the person, with author details and text.
profile_similarSimilar professional profiles — expand a shortlist from one example.
profile_interestsEntities the person follows (companies, groups, people, newsletters).
Search (8)
search_peopleSearch professional records with rich filters — name, title, company, skills, education, tenure, geography. Cursor-paginated.
search_companiesSearch organizations by name or website with firmographic filters. Cursor-paginated.
search_jobsJob/opportunity search with the full filter set. Location filtering works: pass `locations` a LinkedIn geo id (e.g. 101570771 for Tel Aviv-Yafo) — see that parameter for how to find one, and note it is an EXACT match, so use a city id rather than a country id. Still id-typed and not yet usable: titles, industries, functions, benefits, commitments. Offset-paginated. data.jobs[].id is the opportunityEntityId consumed by /jobs/details-v2, /jobs/similar, /jobs/people-also-viewed, /jobs/hiring-team.
search_people_liveLIVE people search — the only endpoint that filters by current company, past company AND school together. Complements /api/v1/search/people (the deduplicated dataset, cursor-paginated, plain-string geo): use this one for company-history sourcing, that one for broad firmographic filtering. Offset-paginated. Not-found is free upstream.
search_companies_liveLIVE company search. Its draw is `hasJobs` — an actively-hiring filter available nowhere else in the catalog — plus bucketed headcount search. For firmographic filtering (staff/follower counts, founded year, website) use /api/v1/search/companies instead. Offset-paginated. Not-found is free upstream.
search_schoolsSearch institutions by name (partial match). Page-paginated. Use to discover an institution's inst_ id or normalized_name.
search_job_changesRecent professional job-change events — people who joined, left, or changed titles at organizations. Page-paginated. Built for trigger-based prospecting and territory monitoring.
search_alumniAlumni and current students of an institution (professional records + the education link). Page-paginated. Built for recruiting and warm-intro sourcing.
Every tool costs the same per-call rate as its REST counterpart — check your live balance and per-call cost on /dash.
What is MCP?
Model Context Protocol is Anthropic's open standard for letting AI clients (Claude, etc.) discover and call external tools at runtime. Instead of you writing API wrappers in your agent code, your agent reads a list of tools from an MCP server and calls them directly via JSON-RPC. Zooq exposes its data endpoints this way.
Why it's safe to install
Hourly burn cap
A leaked key can't drain your balance — the server enforces a max-credits-per-hour limit per user (default 10,000/h, ~1,000 calls). Even a compromised key's damage is bounded.
Atomic credit deduction
Every tool call deducts credits atomically. Upstream returns 5xx? Credits auto-refund within seconds. No retries that double-charge.
Strict arg whitelist
Tool arguments are matched against the endpoint's declared schema. Unknown keys are dropped; oversized values truncated. Stops injection attempts into the upstream proxy.
Revocable in one click
Suspect your key leaked? Open /dash and regenerate. The old key stops working immediately.
Usage examples
Once installed, your agent sees every tool listed above. Sample prompts and the tool the agent will pick:
- "Get me the full LinkedIn profile of
satyanadella" →profile_full - "What does Stripe's LinkedIn page say?" →
companies_name_lookupthencompanies_info - "Find 10 VPs of Engineering at SaaS companies in San Francisco" →
search_people - "Pull every open role at Microsoft" →
companies_universal_name_to_idthensearch_jobswithcompaniesfilter - "Map the headcount growth of company X over the last year" →
companies_insights
Agents can chain tools natively — the MCP protocol exposes the full parameter schema so the model knows which ID to pass where.
Pricing
Every MCP tool call deducts credits live, same as the REST API. No monthly minimum, no surcharge for MCP. See /pricing for the credit pack and subscription tiers.
Troubleshooting
- Tools don't appear in client: restart the app fully (quit, don't just close). Verify your config JSON is valid.
- "Invalid API key": double-check you copied the full key from /dash (it starts with
zq_). - "Insufficient credits" / "Payment required": top up at /billing.
- "Hourly credit cap reached": default is 10,000/h. Email hello@zooq.dev to raise it.
- Tool returns no data: the upstream might be temporarily degraded — check /status. If 5xx, your credits are auto-refunded.