We raised a $50M Series B led by BenchmarkLearn more
Clay logo — MCP server on Gumloop

Clay MCP Server

Connect to the Clay MCP server to find contacts, enrich data, research accounts, and draft outreach using AI agents on Gumloop, Claude, or Cursor.

Book a demo

Try Clay now

Type what you want done. Sign in and run it live with an AI agent.

|

Clay logoClay
Gradient

Installation

Set up the Clay MCP server in Gumloop

Do this once to provision your hosted server URL.

1

Create a Gumloop account

To use this MCP, you need a Gumloop account. If you don't have one yet, sign up and start a 14-day free trial.

2

Add and authorize the Clay server

In Gumloop, open Connectors and add Clay. You'll be sent to Clay's sign-in screen to grant access. The credential is stored securely in Gumloop.

Then use it in your client

Use in GumloopUse in Gumloop
1

Use Clay in an agent

Once Clay is set up, just open any Gumloop agent, add Clay as a connector, and start chatting with the agent.

Tools (17)

  • Find-And-Enrich-Contacts-At-Company

    Search for contacts at a company by role, title, name, or department. ## Quick Reference - **This tool**: Find TYPES of people (e.g., "engineers at Stripe", "VPs at OpenAI") or search by name (e.g., "someone named Urmanov at Allstate") - **find-and-enrich-list-of-contacts**: Find SPECIFIC named people (e.g., "John Smith at Stripe") - **Follow-ups**: ALWAYS re-call this tool—never filter results in chat. When ambiguous, ask the user. ## Parameters ### companyIdentifier (required) Domain (e.g., "stripe.com") or LinkedIn company URL. Company names alone will fail. - Convert known companies: "Stripe" → "stripe.com" - If ambiguous (e.g., "Delta"), ask the user to clarify ### contactFilters (optional) Narrow results. Only add filters the user explicitly requests. **Rules:** - Filters combine with AND; values within arrays combine with OR - Keep compound titles as ONE string: "VP Finance" → ["VP Finance"], NOT ["VP", "Finance"] - Use specific terms to avoid false matches: - ✓ "Software Engineer" not "Engineer" (matches Sales Engineer, etc.) - ✓ "Product Manager" not "Manager" (matches Account Manager, etc.) **Available filters:** | Filter | Type | Description | |--------|------|-------------| | names | string[] | Search by name — can be first name, last name, or full name (e.g., ["Smith"], ["John Smith"]) | | job_title_keywords | string[] | Titles to include | | job_title_exclude_keywords | string[] | Titles to exclude (e.g., ["Intern"]) | | profile_keywords | string[] | Keywords anywhere in the LinkedIn profile (headline, about, experience, etc.). Use for broad keyword searches, e.g. ["AI", "machine learning"] or ["founder", "co-founder"] | | certification_keywords | string[] | Certifications (e.g., ["AWS", "CPA"]) | | languages | string[] | Profile languages | | school_names | string[] | Schools attended | | current_role_min_months_since_start_date | number | Min months in role (tenured) | | current_role_max_months_since_start_date | number | Max months in role (new hires) | | locations | string[] | Locations to include (use formal names: "United States", "California") | | locations_exclude | string[] | Locations to exclude | ### dataPoints (optional) Enrich contacts/companies when creating a NEW search. For existing searches, use add-contact-data-points or add-company-data-points instead. **⚠️ CRITICAL: NEVER add data points unless the user EXPLICITLY asks for them.** Enrichments cost credits. Only include data points when the user's message specifically requests that data. - "Find engineers at Stripe" → NO data points - "Find engineers at Stripe and get their emails" → add Email (user explicitly asked) - "Tell me about OpenAI" → NO data points - Do NOT add Headcount Growth, Recent News, or any other data point "to be helpful" — only what the user asked for **Structure:** { contactDataPoints?: DataPoint[], companyDataPoints?: DataPoint[] } **DataPoint format:** - Standard: { type: "<DataPointType>" } - Custom: { type: "Custom", customDataPoint: "<brief description>" } **Important:** Only include `customDataPoint` field when type is "Custom" **Available contactDataPoints:** Email, Summarize Work History, Find Thought Leadership **Available companyDataPoints:** Headcount Growth, Recent News, Investors, Company Competitors, Company Customers, Tech Stack, Website Traffic, Open Jobs, Revenue Model, Annual Revenue, Latest Funding **Examples:** | User request | dataPoints | |--------------|------------| | "engineers at Stripe" | NONE — user did not ask for enrichments | | "engineers at Stripe with emails" | { contactDataPoints: [{type: "Email"}] } | | "Canva's competitors and funding" | { companyDataPoints: [{type: "Company Competitors"}, {type: "Latest Funding"}] } | | "VPs at Figma with emails + company tech stack" | { contactDataPoints: [{type: "Email"}], companyDataPoints: [{type: "Tech Stack"}] } | | "Notion's product roadmap" (custom) | { companyDataPoints: [{type: "Custom", customDataPoint: "product roadmap"}] } | ## Examples | User says | Parameters | |-----------|------------| | "Find people at OpenAI" | companyIdentifier: "openai.com" | | "VP Finance at HubSpot" | companyIdentifier: "hubspot.com", contactFilters: { job_title_keywords: ["VP Finance"] } | | "VPs and Directors in California at HubSpot" | companyIdentifier: "hubspot.com", contactFilters: { job_title_keywords: ["VP", "Director"], locations: ["California"] } | | "Marketing managers outside the US at Salesforce" | companyIdentifier: "salesforce.com", contactFilters: { job_title_keywords: ["Marketing Manager"], locations_exclude: ["United States"] } | | "New hires at Stripe (last 3 months)" | companyIdentifier: "stripe.com", contactFilters: { current_role_max_months_since_start_date: 3 } | | "Find people mentioning AI at OpenAI" | companyIdentifier: "openai.com", contactFilters: { profile_keywords: ["AI", "artificial intelligence", "machine learning"] } | | "Find founders at YC companies" | companyIdentifier: "ycombinator.com", contactFilters: { profile_keywords: ["founder", "co-founder"] } | | "Find someone named Urmanov at Allstate" | companyIdentifier: "allstate.com", contactFilters: { names: ["Urmanov"] } | ## Handling Follow-ups ANY search modification requires re-calling this tool. Never filter in chat. **Interpret user intent:** - "also/too/as well" → ADD to existing filters - "only/just" → NARROW within current context (e.g., "VPs only" after Finance search → "VP Finance") - "actually/instead/switch" → REPLACE filters entirely - **When ambiguous, ask the user** rather than guessing **Examples:** 1. User: "Find SDRs at Verkada" → { job_title_keywords: ["SDR", "Sales Development"] } User: "Get AEs too" → ADD: { job_title_keywords: ["SDR", "Sales Development", "Account Executive"] } 2. User: "Find Finance people at Ramp" → { job_title_keywords: ["Finance"] } User: "Make it VPs only" → NARROW: { job_title_keywords: ["VP Finance"] } 3. User: "Find Finance people at Ramp" → { job_title_keywords: ["Finance"] } User: "Actually show me all VPs" → REPLACE: { job_title_keywords: ["VP"] } ## Response Behavior - Summarize the search briefly (e.g., "Found 20 engineers at OpenAI"). - The tool returns a taskId for use with add-contact-data-points, add-company-data-points, custom functions, or get-task-context. - For emails, use add-contact-data-points with the taskId. Clay may render results in a widget in hosts that support MCP Apps, such as ChatGPT, claude.ai, and Cursor. Other terminal/coding-agent hosts such as Codex, Claude Code, Windsurf, and CLI environments do not show the widget. If you are unsure whether the widget is visible, assume it is not visible. - If a widget is visible, avoid repeating the full widget contents unless the user asks for full contents; then call get-task-context with the taskId and answer inline. - In terminal/coding-agent environments, when no widget is visible, or when the user asks for actual values/results, call get-task-context with the taskId and answer inline. - **NEVER tell the user that data was not found, not returned, or unavailable without first calling get-task-context.** The initial search/tool response only includes base fields — enrichment results (emails, X/Twitter profiles, work history, custom data points, etc.) are only available via get-task-context. - **When the user asks about a specific value** (e.g. "what's Patrick's email?", "what X profiles did you get?"), call get-task-context FIRST to check if the data has already been enriched — the user may have triggered enrichments through the widget. Only call add-contact-data-points / add-company-data-points if get-task-context shows the enrichment hasn't been run yet. - Use get-task-context to poll until async results complete; if values are still in-progress, wait and retry rather than answering with missing values. - If get-task-context is not available, fall back to get-task. ## Zero Results Suggest broadening in order: 1. Remove or broaden title keywords (e.g., "Software Engineer" → "Engineer") 2. Remove location filter 3. Remove tenure filter 4. Verify company domain is correct

  • Find-And-Enrich-List-Of-Contacts

    Find and enrich specific named contacts at their companies. ## Quick Reference - **This tool**: Find SPECIFIC named people (e.g., "John Smith at OpenAI", "Jane Doe at Stripe") - **find-and-enrich-contacts-at-company**: Find TYPES of people (e.g., "engineers at Stripe") - Do NOT use if user only provides company names without contact names - Do NOT use to enrich contacts already in an existing search — use **add-contact-data-points** with entityIds instead ## Parameters ### contacts (required) Array of { contactName, companyIdentifier } objects. - **contactName**: Full name (e.g., "John Smith") - **companyIdentifier**: Domain or company LinkedIn URL (NOT person LinkedIn URLs) - Domains: "openai.com", "stripe.com" - LinkedIn: "linkedin.com/company/openai" - Company names: Convert if confident (e.g., "Stripe" → "stripe.com"), otherwise ask user ### dataPoints (optional) Enrich contacts/companies when creating a NEW search. For existing searches, use add-contact-data-points or add-company-data-points instead. **⚠️ CRITICAL: NEVER add data points unless the user EXPLICITLY asks for them.** Enrichments cost credits. Only include data points when the user's message specifically requests that data. - "Find engineers at Stripe" → NO data points - "Find engineers at Stripe and get their emails" → add Email (user explicitly asked) - "Tell me about OpenAI" → NO data points - Do NOT add Headcount Growth, Recent News, or any other data point "to be helpful" — only what the user asked for **Structure:** { contactDataPoints?: DataPoint[], companyDataPoints?: DataPoint[] } **DataPoint format:** - Standard: { type: "<DataPointType>" } - Custom: { type: "Custom", customDataPoint: "<brief description>" } **Important:** Only include `customDataPoint` field when type is "Custom" **Available contactDataPoints:** Email, Summarize Work History, Find Thought Leadership **Available companyDataPoints:** Headcount Growth, Recent News, Investors, Company Competitors, Company Customers, Tech Stack, Website Traffic, Open Jobs, Revenue Model, Annual Revenue, Latest Funding **Examples:** | User request | dataPoints | |--------------|------------| | "engineers at Stripe" | NONE — user did not ask for enrichments | | "engineers at Stripe with emails" | { contactDataPoints: [{type: "Email"}] } | | "Canva's competitors and funding" | { companyDataPoints: [{type: "Company Competitors"}, {type: "Latest Funding"}] } | | "VPs at Figma with emails + company tech stack" | { contactDataPoints: [{type: "Email"}], companyDataPoints: [{type: "Tech Stack"}] } | | "Notion's product roadmap" (custom) | { companyDataPoints: [{type: "Custom", customDataPoint: "product roadmap"}] } | ## Examples | User request | contacts | |--------------|----------| | "Find John Smith at OpenAI" | [{ contactName: "John Smith", companyIdentifier: "openai.com" }] | | "Look up Jane Doe at Stripe and Bob Lee at Figma" | [{ contactName: "Jane Doe", companyIdentifier: "stripe.com" }, { contactName: "Bob Lee", companyIdentifier: "figma.com" }] | ## Follow-ups - "Add [name] at [company] too" → Re-call with ALL contacts (previous + new) - "Actually look up [different people]" → Re-call with only the new contacts ## Response Behavior - Summarize the search briefly (e.g., "Found 20 engineers at OpenAI"). - The tool returns a taskId for use with add-contact-data-points, add-company-data-points, custom functions, or get-task-context. - For emails, use add-contact-data-points with the taskId. Clay may render results in a widget in hosts that support MCP Apps, such as ChatGPT, claude.ai, and Cursor. Other terminal/coding-agent hosts such as Codex, Claude Code, Windsurf, and CLI environments do not show the widget. If you are unsure whether the widget is visible, assume it is not visible. - If a widget is visible, avoid repeating the full widget contents unless the user asks for full contents; then call get-task-context with the taskId and answer inline. - In terminal/coding-agent environments, when no widget is visible, or when the user asks for actual values/results, call get-task-context with the taskId and answer inline. - **NEVER tell the user that data was not found, not returned, or unavailable without first calling get-task-context.** The initial search/tool response only includes base fields — enrichment results (emails, X/Twitter profiles, work history, custom data points, etc.) are only available via get-task-context. - **When the user asks about a specific value** (e.g. "what's Patrick's email?", "what X profiles did you get?"), call get-task-context FIRST to check if the data has already been enriched — the user may have triggered enrichments through the widget. Only call add-contact-data-points / add-company-data-points if get-task-context shows the enrichment hasn't been run yet. - Use get-task-context to poll until async results complete; if values are still in-progress, wait and retry rather than answering with missing values. - If get-task-context is not available, fall back to get-task.

  • Find-And-Enrich-Company

    Find and enrich a single company by domain or LinkedIn URL. ## Quick Reference - **This tool**: Prospect and research PUBLICLY AVAILABLE company info (e.g., "Tell me about Stripe", "What's OpenAI's funding?"). This is for prospecting external data, NOT for querying the user's own account data. - **find-and-enrich-contacts-at-company**: Find TYPES of people (e.g., "engineers at Stripe") - **find-and-enrich-list-of-contacts**: Find SPECIFIC named people (e.g., "John Smith at Stripe") - **query-objects** + **ask-question-about-accounts**: Ask about the user's OWN accounts, deals, CRM data, or relationships (e.g., "What's happening with my Acme deal?", "How's our relationship with Stripe?") - Do NOT use if user wants to find people; use the contact tools instead - Do NOT use if user is asking about their own accounts, deals, opportunities, or CRM data; use query-objects and ask-question-about-accounts instead - For ambiguous queries about a company (e.g., "Tell me about Acme"), prefer checking query-objects first. Only use this tool if the account is not found or the user is explicitly prospecting. ## Parameters ### companyIdentifier (required) Domain (e.g., "stripe.com") or LinkedIn company URL. Company names alone will fail. - Convert known companies: "Stripe" → "stripe.com" - If ambiguous (e.g., "Delta"), ask the user to clarify ### companyDataPoints (optional) Enrich the company when creating a NEW search. For existing searches, use add-company-data-points instead. **⚠️ CRITICAL: NEVER add data points unless the user EXPLICITLY asks for them.** Enrichments cost credits. Only include data points when the user's message specifically requests that data. - "Tell me about Stripe" → NO data points - "What's Stripe's funding?" → add Latest Funding (user explicitly asked) - Do NOT add Headcount Growth, Recent News, or any other data point "to be helpful" — only what the user asked for **DataPoint format:** - Standard: { type: "<DataPointType>" } - Custom: { type: "Custom", customDataPoint: "<brief description>" } **Important:** Only include `customDataPoint` field when type is "Custom" **Available companyDataPoints:** Headcount Growth, Recent News, Investors, Company Competitors, Company Customers, Tech Stack, Website Traffic, Open Jobs, Revenue Model, Annual Revenue, Latest Funding ## Examples | User request | Parameters | |--------------|------------| | "Tell me about Stripe" | companyIdentifier: "stripe.com" (NO companyDataPoints — user did not ask for enrichments) | | "What's OpenAI's funding?" | companyIdentifier: "openai.com", companyDataPoints: [{ type: "Latest Funding" }] | | "Canva's competitors and tech stack" | companyIdentifier: "canva.com", companyDataPoints: [{ type: "Company Competitors" }, { type: "Tech Stack" }] | | "Notion's product roadmap" | companyIdentifier: "notion.so", companyDataPoints: [{ type: "Custom", customDataPoint: "product roadmap" }] | ## Response Behavior - Summarize the company result briefly (e.g., "Found Stripe"). - The tool returns a taskId for use with add-company-data-points, custom functions, or get-task-context. Clay may render results in a widget in hosts that support MCP Apps, such as ChatGPT, claude.ai, and Cursor. Other terminal/coding-agent hosts such as Codex, Claude Code, Windsurf, and CLI environments do not show the widget. If you are unsure whether the widget is visible, assume it is not visible. - If a widget is visible, avoid repeating the full widget contents unless the user asks for full contents; then call get-task-context with the taskId and answer inline. - In terminal/coding-agent environments, when no widget is visible, or when the user asks for actual values/results, call get-task-context with the taskId and answer inline. - **NEVER tell the user that data was not found, not returned, or unavailable without first calling get-task-context.** The initial search/tool response only includes base fields — enrichment results (emails, X/Twitter profiles, work history, custom data points, etc.) are only available via get-task-context. - **When the user asks about a specific value** (e.g. "what's Patrick's email?", "what X profiles did you get?"), call get-task-context FIRST to check if the data has already been enriched — the user may have triggered enrichments through the widget. Only call add-contact-data-points / add-company-data-points if get-task-context shows the enrichment hasn't been run yet. - Use get-task-context to poll until async results complete; if values are still in-progress, wait and retry rather than answering with missing values. - If get-task-context is not available, fall back to get-task.

  • Add-Contact-Data-Points

    Add data points to contacts in an existing search. Supports enriching ALL contacts or specific contacts via entityIds. ## Quick Reference - **This tool**: Enrich CONTACTS with emails, work history, etc. - **add-company-data-points**: Enrich COMPANIES with funding, tech stack, headcount, etc. - Requires a taskId from a previous find-and-enrich-* tool call - **Use entityIds to enrich specific contacts** — do NOT create a new search to enrich one person from an existing search - **ANY research question about contacts = call this tool** with a Custom data point ## IMPORTANT: When to Call This Tool **Check before enriching:** If the user asks about a specific contact's data (e.g. "what's Patrick's email?"), call get-task-context FIRST — the user may have already enriched it through the widget. Only call this tool if get-task-context shows the enrichment hasn't been run. Call this tool whenever the user asks to FETCH or ADD new information about contacts, including: - Standard data points (email, work history, etc.) - **Any open-ended research question** — use Custom type for these Do NOT try to answer contact research questions from your own knowledge. ALWAYS call this tool or get-task-context to fetch the data. Examples that MUST trigger this tool: - "Get their emails" → Standard type - "Find their recent publications" → Custom type - "What have they posted on LinkedIn?" → Custom type - "Summarize their career trajectory" → Custom type - "Any recent job changes?" → Custom type - "Score them against my ICP" → Custom type ## Parameters ### taskId (required) The task ID returned from find-and-enrich-contacts-at-company or find-and-enrich-list-of-contacts. - Do NOT fabricate a taskId—use the one from the prior search - If no search exists yet, prompt the user to search first ### dataPoints (required) Array of data points to add. - Standard: { type: "<DataPointType>" } - Custom: { type: "Custom", customDataPoint: "<brief description>" } **Available standard types:** Email, Summarize Work History, Find Thought Leadership **Custom type**: Use for ANY research question not covered by standard types. Examples: - "recent publications" → { type: "Custom", customDataPoint: "recent publications" } - "LinkedIn activity" → { type: "Custom", customDataPoint: "recent LinkedIn posts" } - "ICP fit score" → { type: "Custom", customDataPoint: "ICP fit score based on seniority and tenure" } ### entityIds (optional) Array of entityIds to enrich. When omitted, enriches all contacts in the search. - Use the entityId values from the contact data returned by a previous search tool call - Useful when the user wants to enrich specific contacts (e.g., "get John's email") ## Examples | User request | dataPoints | |--------------|------------| | "Get their emails" | [{ type: "Email" }] | | "Add work history" | [{ type: "Summarize Work History" }] | | "Find their recent publications" | [{ type: "Custom", customDataPoint: "recent publications" }] | | "What's their LinkedIn activity?" | [{ type: "Custom", customDataPoint: "recent LinkedIn posts" }] | | "Score them for senior leaders in NYC" | [{ type: "Custom", customDataPoint: "ICP fit: senior leader in NYC" }] | | "Get John's email" (single contact) | [{ type: "Email" }] + entityIds: ["<john's entityId>"] | ## Response Behavior - Confirm briefly: "Fetching [data point] for all contacts." - For single-contact requests, name the contact instead of saying "all contacts." Clay may render results in a widget in hosts that support MCP Apps, such as ChatGPT, claude.ai, and Cursor. Other terminal/coding-agent hosts such as Codex, Claude Code, Windsurf, and CLI environments do not show the widget. If you are unsure whether the widget is visible, assume it is not visible. - If a widget is visible, avoid repeating the full widget contents unless the user asks for full contents; then call get-task-context with the taskId and answer inline. - In terminal/coding-agent environments, when no widget is visible, or when the user asks for actual values/results, call get-task-context with the taskId and answer inline. - **NEVER tell the user that data was not found, not returned, or unavailable without first calling get-task-context.** The initial search/tool response only includes base fields — enrichment results (emails, X/Twitter profiles, work history, custom data points, etc.) are only available via get-task-context. - **When the user asks about a specific value** (e.g. "what's Patrick's email?", "what X profiles did you get?"), call get-task-context FIRST to check if the data has already been enriched — the user may have triggered enrichments through the widget. Only call add-contact-data-points / add-company-data-points if get-task-context shows the enrichment hasn't been run yet. - Use get-task-context to poll until async results complete; if values are still in-progress, wait and retry rather than answering with missing values. - If get-task-context is not available, fall back to get-task.

  • Add-Company-Data-Points

    Add data points to companies in an existing search. Supports enriching ALL companies or specific companies via entityIds. ## Quick Reference - **This tool**: Enrich COMPANIES with funding, tech stack, headcount, etc. - **add-contact-data-points**: Enrich CONTACTS with emails, work history, etc. - Requires a taskId from a previous find-and-enrich-* tool call - **Use entityIds to enrich specific companies** — do NOT create a new search to enrich one company from an existing search - **ANY research question about companies = call this tool** with a Custom data point ## IMPORTANT: When to Call This Tool **Check before enriching:** If the user asks about a specific company's data (e.g. "what's their tech stack?"), call get-task-context FIRST — the user may have already enriched it through the widget. Only call this tool if get-task-context shows the enrichment hasn't been run. Call this tool whenever the user asks to FETCH or ADD new information about companies, including: - Standard data points (tech stack, funding, headcount, etc.) - **Any open-ended research question** — use Custom type for these Do NOT try to answer company research questions from your own knowledge. ALWAYS call this tool or get-task-context to fetch the data. Examples that MUST trigger this tool: - "What's their tech stack?" → Standard type - "Find recent product announcements" → Custom type - "Get me their latest news" → Custom type - "What's their revenue model?" → Custom type - "Find their competitors" → Custom type - "Any recent acquisitions?" → Custom type ## Parameters ### taskId (required) The task ID returned from find-and-enrich-contacts-at-company or find-and-enrich-list-of-contacts. - Do NOT fabricate a taskId—use the one from the prior search - If no search exists yet, prompt the user to search first ### dataPoints (required) Array of data points to add. - Standard: { type: "<DataPointType>" } - Custom: { type: "Custom", customDataPoint: "<brief description>" } **Available standard types:** Headcount Growth, Recent News, Investors, Company Competitors, Company Customers, Tech Stack, Website Traffic, Open Jobs, Revenue Model, Annual Revenue, Latest Funding **Custom type**: Use for ANY research question not covered by standard types. Examples: - "recent product announcements" → { type: "Custom", customDataPoint: "recent product announcements" } - "B2B vs B2C classification" → { type: "Custom", customDataPoint: "B2B vs B2C classification" } - "company founders" → { type: "Custom", customDataPoint: "company founders" } ### entityIds (optional) Array of entityIds to enrich. When omitted, enriches all companies in the search. - Use the entityId values from the company data returned by a previous search tool call - Useful when the user wants to enrich specific companies ## Examples | User request | dataPoints | |--------------|------------| | "What's their tech stack?" | [{ type: "Tech Stack" }] | | "Get funding info and headcount" | [{ type: "Latest Funding" }, { type: "Headcount" }] | | "Find recent product announcements" | [{ type: "Custom", customDataPoint: "recent product announcements" }] | | "Are they B2B or B2C?" | [{ type: "Custom", customDataPoint: "B2B vs B2C classification" }] | | "What's in the news about them?" | [{ type: "Custom", customDataPoint: "recent news and headlines" }] | ## Response Behavior - Confirm briefly: "Fetching [data point] for [company/companies]." - For single-company requests, name the company instead of saying "all companies." Clay may render results in a widget in hosts that support MCP Apps, such as ChatGPT, claude.ai, and Cursor. Other terminal/coding-agent hosts such as Codex, Claude Code, Windsurf, and CLI environments do not show the widget. If you are unsure whether the widget is visible, assume it is not visible. - If a widget is visible, avoid repeating the full widget contents unless the user asks for full contents; then call get-task-context with the taskId and answer inline. - In terminal/coding-agent environments, when no widget is visible, or when the user asks for actual values/results, call get-task-context with the taskId and answer inline. - **NEVER tell the user that data was not found, not returned, or unavailable without first calling get-task-context.** The initial search/tool response only includes base fields — enrichment results (emails, X/Twitter profiles, work history, custom data points, etc.) are only available via get-task-context. - **When the user asks about a specific value** (e.g. "what's Patrick's email?", "what X profiles did you get?"), call get-task-context FIRST to check if the data has already been enriched — the user may have triggered enrichments through the widget. Only call add-contact-data-points / add-company-data-points if get-task-context shows the enrichment hasn't been run yet. - Use get-task-context to poll until async results complete; if values are still in-progress, wait and retry rather than answering with missing values. - If get-task-context is not available, fall back to get-task.

  • Get-Credits-Available

    Check if credits are available for the workspace. Returns hasWorkspaceCredits, hasSalesRepCredits, and (when credit budgets are enabled) hasBudgetCredits.

  • Get-Current-Workspace

    Report which Clay workspace this connection is pinned to. Returns workspaceName, workspaceId, and workspaceUrl. Use when the user asks which workspace they are connected to, or to confirm where searches and enrichments will run.

  • Get-Task

    Get task status and results by task ID. This tool handles all task types (search, direct) and returns the current state. ## When to Use This Tool This is a private tool used by the widget for polling task status. ## Parameters **taskId** (required) - The task ID to retrieve. Accepts: - Universal task IDs: mcp-task-* (from run_subroutine_direct, etc.) - Legacy search IDs: cgas-search-id-* (backwards compatible) **page** (optional) - For direct tasks: 1-based page of entities (100 per page). Defaults to 1. The response includes totalEntities, hasMore, and overall completion status so callers don't need every entity to know the task state. isComplete means every entity finished (completed or errored), not that all succeeded.

  • Get-Task-Context

    Retrieve the current state of a task — all entities, enrichment values, and statuses. ## When to Use Call this when you need the actual data behind an entity to answer the user's question — e.g. the user asks "what's John's email?", "what X profiles did you get?", "show me the enrichment results", or any question about data that may have been enriched. The initial response from search/data-points tools only includes base fields (name, title, company, LinkedIn); ALL enrichment values (emails, X/Twitter profiles, work history, custom data points) are only available through this tool. **IMPORTANT:** If the user asks about a data type and you don't see it in the initial search response, that does NOT mean it wasn't found — it means you need to call this tool to check. ## Parameters - taskId (required): Task ID from a previous tool call. Accepts mcp-task-* IDs and legacy cgas-* search IDs. - entityIds (optional): Return only these entities. - page (optional): For direct tasks (run_subroutine_direct), a 1-based page of entities — up to 100 per page. Defaults to 1. Ignored when entityIds is provided. ## Response Returns entities and their enrichment values for the task. Each enrichment has a name, state ("completed" / "in-progress" / "error"), and value. Direct tasks are paginated: the response includes page, pageSize, totalEntities, and hasMore, plus processedEntities/isComplete for overall progress. isComplete means every entity finished (completed or errored), not that all succeeded. When hasMore is true, call again with the next page to retrieve more entities — or pass entityIds to fetch specific ones.

  • Track-Event

    Track an analytics event with optional properties.

  • Run Subroutine No Mapping

    Run a custom subroutine on search entities. The backend automatically generates the field mapping.

  • Get Subroutine Input Options

    Fetch the available dropdown options for a subroutine input that has a configured options source.

What is Clay MCP?

The Clay MCP Server gives your AI agents direct access to Clay’s go-to-market data engine: its 150+ data providers, its AI research agents, and the prebuilt Functions your RevOps team has already packaged. That means agents can search for and verify contacts at a target account, enrich people and companies with fresh data, research an account before you reach out, draft personalized outreach, and run your team’s Functions, without anyone ever opening the Clay app.

For most Clay users, work can be a multi-tab scramble: open the company page, copy a name into a spreadsheet, hunt for a verified email, then switch to another tab to write the outreach. The Clay MCP Server collapses that whole sequence into one conversation, where context carries from the account research straight into the draft. Describe what you need, and your AI agent will handle the prospecting and enrichment for you.

MCP stands for Model Context Protocol, an open standard that lets AI agents connect to external systems like Clay. Instead of wiring up a separate Clay connector inside every AI tool and re-authenticating in each one, you connect your Clay account to Gumloop a single time and Gumloop manages the authentication. After that, you can find contacts, enrich records, and research accounts just by chatting with your AI agent.

Related MCP servers

What you can do with Clay MCP on Gumloop

  • Find and verify contacts

    Locate the right decision makers at a target account and return verified work emails and work history, so your agent hands you people you can actually reach.

  • Research accounts before outreach

    Pull hiring trends, tech stack, funding, and leadership changes gathered by Clay’s AI research agent into a single account brief.

  • Enrich people and companies

    Tap Clay’s 150+ data providers to fill in missing fields on a contact or company on demand.

  • Draft personalized outreach

    Turn the research and verified contact details into a tailored first message, ready for you to review.

  • Run prebuilt Clay Functions

    Execute the vetted workflows your RevOps team packaged, so every rep runs the same governed logic instead of ad hoc prompts.

  • Prep for a meeting

    Ask for a quick briefing on an account or a person before a call, assembled from Clay’s providers and research agents.

  • Return structured results

    Get contacts, briefs, and enrichment back as clean structured data your agent can pass into the next step.

How to connect the Gumloop Clay MCP Server

  1. 1

    Create a Gumloop account

    Sign up at gumloop.com. Every new account starts with a 14-day free trial.

  2. 2

    Add the Clay MCP server

    Copy your MCP server URL from Gumloop and add it to your preferred client (Claude, Cursor, or Gumloop workflows). You'll authorize on first use.

  3. 3

    Start using Clay in your AI workflows

    That's it. Your AI agent can now find and verify contacts, research and enrich accounts, draft outreach, and run your team’s Functions on your behalf. Use it inside a Gumloop automation, in Claude Desktop, or in Cursor.

Clay MCP use cases

Account executive builds a target account brief before a call

An AE preparing for a discovery call asks the agent to research the account: hiring trends, tech stack, funding, and recent leadership changes. The agent pulls the brief from Clay, then posts a clean summary to the deal’s Slack channel so the whole pod walks in prepared.

SDR turns a company URL into a ready-to-send sequence

An SDR drops in a company domain. The agent finds the right decision makers, verifies their work emails through Clay, drafts a personalized opener for each, and writes the finished contacts and copy into a Google Sheet the SDR works from all day.

RevOps enforces one enrichment standard across the team

RevOps packages a vetted enrichment workflow as a Clay Function, then has the agent run that Function against a list of new inbound accounts. Every record comes back enriched the same way, and the agent logs the results back into Salesforce so the CRM stays consistent.

Founder qualifies inbound leads without leaving their inbox

A founder reviewing inbound interest asks the agent to enrich each new signup with company size, funding, and role. The agent uses Clay to fill in the gaps, flags the accounts that match the ICP, and drafts a warm reply in Gmail for the ones worth a fast response.

Marketer researches an account list for a campaign

A demand gen marketer hands the agent a list of target companies. The agent researches each account through Clay, verifies contacts for the key personas, and assembles an enriched, segment-ready audience in a Google Sheet for the next campaign push.

Why use Gumloop for Clay MCP

  • No connector juggling across tools

    Clay uses an OAuth connector, so instead of authenticating Clay separately inside every AI client, you connect your Clay account to Gumloop once and Gumloop manages the authentication for you. No repeated logins or per-tool setup necessary.

  • Works with your favorite MCP clients

    The same hosted Clay MCP server runs on Gumloop, Claude, Cursor, and other MCP clients, so you only have to set it up once and you can use it everywhere.

  • Chain Clay with 100+ integrations

    Chain Clay with any other MCP integrations in a single agent, so a Clay account brief can flow straight into Slack, Salesforce, Google Sheets, or Gmail without leaving the conversation.

  • Enterprise grade

    Gumloop is built for teams that care about security and control. See the details at trust.gumloop.com.

  • Start with a free trial

    Start with the 14-day free trial to try Clay MCP. Paid plans start at $37/month.

Frequently asked questions

Ship Clay agents in minutes

Connect any AI agent to 100+ MCP servers, zero setup.
Book a demo
Gradient