Now out of stealth: the missing link between AI agents and LinkedIn data.
New

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 50 endpoints wrapped as credit-billed MCP tools.

Install: pick your client

Install in Claude Desktop

Open ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%/Claude/claude_desktop_config.json (Windows) and merge:

{
  "mcpServers": {
    "zooq": {
      "url": "https://zooq.dev/api/mcp",
      "headers": {
        "X-API-Key": "zq_..."
      }
    }
  }
}

Replace zq_... with your key from /dash. Restart Claude. The tools appear in the tools menu under "zooq".

Install in Cursor

Cursor settings → MCP → paste:

{
  "mcp": {
    "servers": {
      "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: true

Install 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 (50 tools)

The full catalog — 50 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_all

Comments authored by a person across posts. Cursor-paginated.

Companies (11)

companies_entity_id

Resolve 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_id

Resolve 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_info

Full company firmographics — description, industry, headcount, HQ, follower count, specialties.

companies_info_v2

Company firmographics as a flat company record (not nested under a `company` key). Identical payload to /companies/info.

companies_name_lookup

Search companies by name. Returns matching company records; pagination cursor not currently available on this endpoint.

companies_employees_data

People who work or worked at an organization (professional records, same shape as /search/people). Cursor-paginated.

companies_similar

Similar 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_pages

Affiliated / 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_insights

Employee-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_posts

A 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_jobs

Open job postings across one or more organizations.

Email (5)

email_verify

Check whether an email address can receive mail, with a deliverability verdict and risk flags (catch-all, disposable, no-MX).

email_find

Discover a person's work email from their first name, last name, and company domain. Returns the address plus a confidence score.

email_find_by_profile

Identify a person and their current company from a professional profile URL (or handle), then find their work email — resolves name + domain for you.

email_reverse

Resolve the person and company behind a BUSINESS email address. Public/role/disposable mailboxes are rejected (422, no charge) before any work runs.

email_prospects

Page emails already known for a company domain. Cursor-paginated; returns up to 20 contacts per page with first/last name.

Jobs (5)

jobs_details_v2

Full job-posting details — title, description, functions, apply url, organization, location.

jobs_similar

Similar job postings (title, organization, location, salary range, posted date).

jobs_people_also_viewed

'People also viewed' postings (behavioral relatedness).

jobs_hiring_team

Hiring-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_profile

Job postings created by a person (e.g. a recruiter's or founder's open roles).

Lookups (3)

g_title_skills_lookup

Skill 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_lookup

Resolve 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_lookup

Resolve 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 (5)

posts_featured

A person's activity feed (there is no separate 'featured' filter — returns the feed). 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_all

A 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_info

Full content of one post (returned under data.post). For comments use /posts/comments.

posts_comments

Threaded comments/replies on a post.

posts_likes

People who reacted to a post + reaction type and total.

Profile (14)

profile_overview

Professional record by handle or stable prsn_ id (returns the full profile).

profile_full

Complete profile in one call — positions, education, skills, certifications.

profile_entity_id

Resolve a public handle to the person entityId used by the live person endpoints (posts, comments, interests, lookalikes). Resolve once, reuse the id.

profile_details

Full professional record by stable prsn_ id (or handle).

profile_about

Profile summary + location slice of the full record.

profile_full_experience

Full work history (full_positions slice of the profile record).

profile_education

Education history (education slice of the profile record).

profile_skills

Skills (skills slice of the profile record). An empty array is legitimate — some profiles list no skills.

profile_certifications

Certifications (certifications slice of the profile record). An empty array is legitimate — some profiles list none.

profile_social_matrix

Follower + connection counts and profile flags (slice of the record).

profile_username_to_urn

Resolve a public handle to its stable prsn_ profile id (the dataset id used by /profile/* lookups). For the live person endpoints — posts, comments, interests — use /api/v1/profile/entity-id instead; the two ids are not interchangeable. The response is the full profile record — read data.id; no second call needed.

profile_recommendations

Recommendations written for the person, with author details and text.

profile_similar

Similar professional profiles — expand a shortlist from one example.

profile_interests

Entities the person follows (companies, groups, people, newsletters).

Search (6)

search_people

Search professional records with rich filters — name, title, company, skills, education, tenure, geography. Cursor-paginated.

search_companies

Search organizations by name or website with firmographic filters. Cursor-paginated.

search_jobs

Job/opportunity search with the full filter set — location, salary, experience, work type, and more. Offset-paginated. data.jobs[].id is the opportunityEntityId consumed by /jobs/details-v2, /jobs/similar, /jobs/people-also-viewed, /jobs/hiring-team.

search_schools

Search institutions by name (partial match). Page-paginated. Use to discover an institution's inst_ id or normalized_name.

search_job_changes

Recent professional job-change events — people who joined, left, or changed titles at organizations. Page-paginated. Built for trigger-based prospecting and territory monitoring.

search_alumni

Alumni 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_lookup then companies_info
  • "Find 10 VPs of Engineering at SaaS companies in San Francisco" → search_people
  • "Pull every open role at Microsoft" → companies_universal_name_to_id then search_jobs with companies filter
  • "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.