# Getcleed for agents Getcleed watches LinkedIn for buying signals (someone describing a pain point, engaging with content on your topic, changing role, their company hiring, raising or launching), keeps only the signals it can quote from the source post, and drafts personalised email and LinkedIn messages from them. For: B2B founders and sales teams doing outbound, who want warm leads instead of a scraped list. Pricing: Pro $129/month (or $29/month billed annually on the entry plan), 7-day free trial with no charge until it ends. Trial includes the full feature set; volumes are 100 leads and 100 analyses. Trial and keys: https://www.getcleed.com/claude ## Connecting Remote MCP server, streamable HTTP, stateless: https://www.getcleed.com/api/mcp With OAuth (no key to copy; the client registers itself and the user approves in Getcleed): claude mcp add --transport http getcleed https://www.getcleed.com/api/mcp With an API key, Claude Code: claude mcp add --transport http getcleed https://www.getcleed.com/api/mcp --header "Authorization: Bearer YOUR_API_KEY" Any client that only accepts a URL (the key becomes the last path segment, no header needed): https://www.getcleed.com/api/mcp/YOUR_API_KEY Authentication is OAuth 2.1 or a Getcleed API key. The server advertises its authorization server, so an MCP client can register itself (RFC 7591), send the user to a Getcleed consent screen and get a token: no key to copy. Scopes are mcp:read and mcp:write, so a connection can be read-only. Metadata: https://www.getcleed.com/.well-known/oauth-protected-resource and https://www.getcleed.com/.well-known/oauth-authorization-server. An unauthenticated tools/call answers 401 with a WWW-Authenticate header pointing at the first of those. Getcleed > Settings > Integrations > Developer API > API Keys, then the "Use in Claude" tab builds the line for you. initialize, ping and tools/list answer without a key; every tools/call needs one, and the refusal explains what the account would unlock. Available on the Pro plan and during the 7-day free trial. ## What makes a signal trustworthy here Every signal Getcleed keeps must quote its source post verbatim; anything it cannot quote is discarded. So when a tool returns a signal, the evidence field is the prospect's or the author's own words and sourceUrl is the post it came from. Quote those rather than paraphrasing. ## Sending send_email and send_linkedin_message reach a real person immediately and cannot be undone. Show the draft to the user and get their agreement before calling them. They need a mailbox or LinkedIn account connected in Getcleed under Integrations. ## Read the pipeline ### list_prospects Search the saved prospects in the account. Filter by company, industry, job title, country, signal type, minimum number of signals, whether an email address is known, enrichment state, or whether they have been contacted. Ordered by signal count, then most recently saved. Read-only. Arguments: - search (string, optional): Free text matched against first name, last name, company and title - company (string, optional): - industry (string, optional): - title (string, optional): Job title contains this text - country (string, optional): - signalType (string, optional): Only prospects carrying a signal of this type (see list_signals) - minSignals (integer, optional): Only prospects with at least this many signals - hasEmail (boolean, optional): - enrichmentStatus (string, optional): - notContacted (boolean, optional): Only prospects with no email sent yet - limit (integer, optional): How many to return (max 50) - offset (integer, optional): ### get_prospect Everything known about one prospect: role, company, location, language, every detected signal with the verbatim quote from its source and the LinkedIn URL it came from, any existing email or LinkedIn draft, and outreach state. Read-only. Arguments: - prospectId (string, optional): The prospect id from list_prospects - linkedinUrl (string, optional): Their LinkedIn profile URL, if the id is unknown ### get_pipeline_stats How the pipeline stands: how many prospects, how many carry signals, enrichment state, how many have an email address, how many were contacted, what was added in the last 7 days, the most common signal types, and the remaining plan quota. Read-only. Arguments: (none) ### list_signals The buying signals this account looks for: the predefined ones and the custom ones, each with the definition used to detect it and whether it is enabled. Use the returned type values with list_prospects and find_leads_from_signals. Read-only. Arguments: - enabledOnly (boolean, optional): ### get_icp The active ICP: target roles, industries, countries, company sizes, relevant keywords and any exclusions. This is what sourcing and scoring filter against. Read-only. Arguments: (none) ## Build the pipeline ### add_leads_from_urls Save LinkedIn profiles as prospects and enrich them (name, role, company, industry, location, language). Skips anyone already saved. Counts against the import quota. Writes data. Arguments: - linkedinUrls (array, required): LinkedIn profile URLs - listId (string, optional): Optional list to add them to (see get_icp for list ids) ### find_leads_from_signals Search recent LinkedIn posts on the topics of this account's own signal definitions, keep only posts a check can prove are on topic, and return the people who wrote, commented on or reacted to them, filtered against the ICP (role, industry, country) and ranked. Nothing is saved: pass the returned candidates to import_sourced_leads. Spends a little of the monthly sourcing budget. Writes data. Arguments: - signalType (string, optional): Which signal to source for; omit to use the first enabled one (see list_signals) - postsPerSignal (integer, optional): ### import_sourced_leads Save candidates returned by find_leads_from_signals. They arrive already enriched and with the signal attached, including the verbatim quote from the post that surfaced them. Counts against the import quota. Writes data. Arguments: - signalType (string, required): The signalType returned by find_leads_from_signals - tokens (array, required): The token values of the candidates to import - listId (string, optional): ### analyze_prospects Run the signal pipeline on prospects: enrich anyone missing company data, read their recent LinkedIn activity, and detect buying signals. Every signal kept must quote its source verbatim. Counts against the monthly analysis quota. Slow: expect up to a few minutes. Writes data. Arguments: - prospectIds (array, optional): Which prospects to analyze; omit to take those with no signals yet - limit (integer, optional): Cap when prospectIds is omitted ## Outreach ### draft_email Write a personalised email for a prospect, built from their detected signals, in their language. Saves the draft on the prospect and returns it. Does not send. Writes data. Arguments: - prospectId (string, optional): - linkedinUrl (string, optional): - signalIndex (integer, optional): Which signal to lead with - regenerate (boolean, optional): Ignore any cached draft - language (string, optional): ### draft_linkedin_message Write a short LinkedIn connection note for a prospect from their detected signals, in their language. Saves the draft and returns it. Does not send. Writes data. Arguments: - prospectId (string, optional): - linkedinUrl (string, optional): - regenerate (boolean, optional): - language (string, optional): ### send_email Send an email to a prospect from the connected mailbox. This reaches a real person immediately and cannot be undone. Pass the subject and body you want sent, or omit them to send the saved draft. Requires a mailbox connected in getcleed under Integrations. Writes data. Arguments: - prospectId (string, optional): - linkedinUrl (string, optional): - subject (string, optional): Omit to use the saved draft - body (string, optional): Omit to use the saved draft ### send_linkedin_message Send a LinkedIn connection request with a note to a prospect from the connected LinkedIn account. This reaches a real person immediately and cannot be undone. Pass the note you want sent, or omit it to use the saved draft. Requires LinkedIn connected in getcleed under Integrations. Writes data. Arguments: - prospectId (string, optional): - linkedinUrl (string, optional): - message (string, optional): The note, max 300 characters. Omit to use the saved draft ### mark_email_sent Record that a prospect was emailed outside getcleed, so reporting and follow-ups stay correct. Writes data. Arguments: - prospectId (string, optional): - linkedinUrl (string, optional): ## Configuration ### create_custom_signal Teach the account a new buying signal to look for, described in plain language (for example "people complaining their onboarding takes too long"). Future analyses and sourcing will use it. Writes data. Arguments: - name (string, required): Short display name - detects (string, required): What to look for, in plain language - exampleTitle (string, optional): - exampleDetail (string, optional): ## Typical sequences - Review the week: get_pipeline_stats, then list_prospects with minSignals 1 and notContacted true, then get_prospect on the interesting ones. - Grow the pipeline: list_signals, then find_leads_from_signals for the signal that fits, then import_sourced_leads with the candidates worth keeping. - Outreach: get_prospect, draft_email, show the user, then send_email once they agree. ## Things people ask their agent - "Which of my leads showed a buying signal this week?" - "Find new leads from my strongest signal and import the ones that match my ICP." - "Draft an email for my top five prospects and show me each one before sending." - "Who did I never follow up with after they engaged with my content?" - "Add these five LinkedIn profiles and tell me which ones are worth contacting." ## Links - https://www.getcleed.com/claude (agent setup) - https://www.getcleed.com/pricing - https://www.getcleed.com/how-it-works - https://www.getcleed.com/.well-known/mcp.json