Embers
Work the warm leads Embers finds in LinkedIn engagement from your AI agent: today's queue, lead details, opener drafts, follow-ups, ICP changes and sending leads to your CRM. Hosted remote server with OAuth sign-in.
Hosted MCP Server
npx add-mcp 'https://mcp.useembers.com/mcp'Installs into Claude Code, Codex, Cursor and more
Documentation
Connect an AI assistant with MCP
URL: https://useembers.com/help/integrations/mcp/ Category: Integrations Plan: Solo and above Updated: 2026-10-27 Last verified: 2026-10-27
Paste one server address into an AI assistant, approve Embers once in your browser, and work your leads by chat or voice with nineteen actions.
An AI assistant connected to Embers can read your leads and act on them. Ask it "what should I work on today", "draft an opener for her", "mark him contacted and follow up Tuesday", "which post brought the most leads this month", or "which competitor's audience brings us the most ICP engagers". You paste one address, approve Embers once, and work from the conversation you are already in.
Warning: Solo and above, any signed-in member
Any member of a workspace can connect an assistant. It does not need an administrator. The plan check runs when the assistant first calls a tool, and a workspace on Free gets "Connecting an AI assistant requires a paid plan." On a client workspace, the plan that counts is the agency parent's. Plans and limits lists what each plan includes.
Connect an assistant
Open the MCP page
Open Integrations in the sidebar (/integrations). On the Build your own shelf, choose Set up on the MCP row. It reads Configure once an assistant is connected. It opens the MCP page (/integrations/mcp). Connected apps (/developer/connected-apps), which administrators also reach from Settings, then API and webhooks, shows the same setup and the same assistants. On Free the page shows "AI assistant access is on Solo and above" with See plans in place of the setup, but the address below is the same for everyone.
Copy the server address
The Connect an AI assistant card shows https://mcp.useembers.com/mcp. Choose Copy.
Add it to your assistant
Add it wherever your assistant lists remote MCP servers and paste the address. There is no API key to fill in. If your assistant shows optional OAuth Client ID and Client Secret fields, usually under advanced settings, leave them blank. The assistant registers itself with Embers.
Approve the connection
Your browser opens Connect to Embers. It shows the Embers account you are signed in as, which application is asking, the web address its callback points at, and what it will be able to do. If it is the wrong account, choose Use another account: you sign in again and come straight back to the same request. Check the address against the assistant you are setting up, then choose Allow access.
What an assistant can do
Nineteen actions, and nothing outside them. Ten only read, three change one lead, and six ask you first.
Read without changing anything
| It can | Tool | Which means |
|---|---|---|
| List your workspaces | list_accounts | So it knows which one you mean, which destinations each has, and each outreach configuration with its tool and connection |
| Sum up a workspace | workspace_summary | Lead counts (total, hot, new, rising, going cold), your outreach pipeline (contacted, replied, booked, follow-ups due), and your newest notifications. Reading them does not mark them read. An agency workspace also gets one row per client workspace |
| Read today's queue | today_queue | The same ranking as the Priority Queue, with the reason and a suggested action |
| Search your leads | search_leads | The leads list filters, up to 100 leads at a time. See how search filters work |
| Open one lead | get_lead | Profile, score breakdown, recent engagement, notes, status |
| Rank your posts | post_performance | Your posts, watched profiles' posts, keyword posts, and qualified posts, ranked by the leads or engagement they brought. It also names which of your own posts reached the most leads first |
| List your sources | list_sources | Each watched profile with its role, scan status, and leads found. Each tracked keyword with the posts it matched and kept and the leads it found. Your 10 newest qualified posts, and what your plan still allows |
| Compare your watched profiles | profile_stats | One row per watched profile, your own included, over the last 1 to 365 days (30 by default): followers and their change, posts and posts per week, average engagement per post, engagement rate, engagers read, ICP engagers, and whether Embers started watching it after that period began. The numbers mean what profile stats says they do |
| Read your ICP | get_icp | The criteria every lead is scored against, and its last five saves with who made each and what changed |
| Preview an ICP change | preview_icp_update | Saves nothing. Shows which leads the edit would drop or add |
Change one lead
| It can | Tool | Which means |
|---|---|---|
| Draft an opener | write_opener | Saved as that lead's draft, the same stored draft you see in the app, for you to send |
| Update a lead's status | update_lead_status | Status, note, follow-up date, outcome, or snooze. Anything you leave out stays as it is, so a note or a follow-up date needs no status |
| Record ICP feedback | icp_feedback | Your verdict on whether one lead fits, or withdraw one |
Ask you first
| It can | Tool | Which means |
|---|---|---|
| Update your ICP | update_icp | Re-judges every lead. It can add or remove single values, such as one job title, and leaves the rest of each list alone |
| Undo the last ICP change | undo_icp_change | Puts back the ICP from before its last save and the verdicts that save changed. It names the save first |
| Watch, track, or qualify | update_sources | Watch LinkedIn profiles, track keywords, pull one post's engagers with Qualify post, or remove a watched profile or keyword. Up to 10 of each per request. Your own profile stays managed in the app |
| Reveal contact details | reveal_contact | A lead's work email and phone. Details found in the last 30 days come back at once and cost nothing. Anything else is one paid lookup |
| Push leads to a destination | push_leads | Up to 100 leads to one connected destination: Slack, HubSpot, Salesforce, Pipedrive, Attio, Notion, Google Sheets, or an outreach tool |
| Block a company | block_company | Hides everyone at that company and dismisses the lead |
Before an action in this group changes or spends anything, the assistant tells you what would happen and what it would use. It goes ahead only when you agree.
The permissions you approve
The approval screen describes each permission in a sentence. Authorized apps names them like this:
- Read leads and drafts (
leads:read). Every read in the first table, and drafting an opener. - Update leads (
leads:write). Statuses, ICP feedback, pushes, company blocks, and contact reveals. - Edit your ICP (
icp:write). Previewing, saving, and undoing ICP changes. - Watch profiles, track keywords and pull post engagers (
sources:write). Adding and removing sources, which start scans.
When the assistant asks for the last one, the approval screen says "It asks you before it starts a scan or uses credits." Without it, the screen says it "cannot start a scan". Either way it ends "You can revoke access at any time from Settings, API and webhooks, Connected apps."
An assistant you approved before the sources permission existed does not have it, and cannot watch, track, or qualify. Reconnect it from the assistant and approve again to add it. Contact reveals sit under Update leads, so they need no new approval.
What it never does, and what it can spend
- Nothing is sent on LinkedIn. No action posts, messages, comments, connects, or follows. Sending an opener is yours.
- Nothing spends without your yes. These actions can use credits or plan limits, and each asks first:
- Watching a profile or tracking a keyword counts toward your watched profile or keyword limit. Embers scans it at once and then on its schedule until you remove it.
- Qualifying a post uses one Qualify post submission this billing cycle.
- Revealing a contact is one paid lookup, unless the details were found in the last 30 days.
- Saving an ICP change re-scores every lead and may enrich newly matched people.
- A push to an email tool looks up an email for a lead without one. A push to a HeyReach LinkedIn campaign looks up a public profile address for a lead whose LinkedIn link is an ID. The preview counts these lookups.
- Contact details stay locked on the free trial. An assistant returns a blank email and phone, as the lead page does, and cannot reveal contact details. They unlock with your first paid month. See reveal a lead's email and phone.
- Nothing is deleted. Blocking hides a company's people and dismisses the lead, and you can unblock the company later. Removing a watched profile stops its scans and keeps its leads. Removing a keyword retires the posts only that keyword found.
- Nothing leaves Embers unasked. A push asks every time and only reaches a destination the workspace already connected. HeyReach, Instantly, Smartlead, and Emelia do the sending on their side. Each destination's delivery rules apply unless you tell the assistant to ignore them.
Ready-made prompts
Assistants that show ready-made prompts, often as slash commands or a menu, list three from Embers. A prompt reads and changes nothing by itself. It gives the assistant the steps, and the actions above still ask where they always do.
- Work today's leads goes through today's queue, five leads by default and up to 25. It explains who needs action and why, drafts openers for the leads you pick, and updates their status once you say you reached out.
- Check my ICP compares your ICP with the people who actually engage, and previews any change before it is saved.
- Weekly pipeline review sums up the last 7 days by default, and up to 90. It covers hot leads, new engagers, leads waiting on you, leads going cold, and the posts that brought them, then suggests a few next steps.
Each takes the workspace name, which you can leave empty with one workspace.
How it handles scores, workspaces, and changes
Embers gives each lead two numbers from 0 to 100, and the assistant is told to keep them apart. ICP match (icp_score, filtered with min_icp_score) is the ICP fit percentage the app shows, and what "80%+ leads" means. Leads not yet classified are left out of that filter. Lead score (composite_score, filtered with min_score) blends engagement with ICP fit, as lead scoring explains, and is rarely what you mean.
Search takes the leads list filters, intent included ("who is hiring an agency?"), and each lead comes back with the words that show their intent. It also filters by seniority, job function, company industry, and company size, using the same choices as the app, and refuses a value that is not one of them. It can ask for leads active since a date, leads with at least a number of engagements, or new engagers first seen in the last few days.
With several workspaces, every action except listing them needs the workspace named. Names match whole, so "Acme" does not pick between "Acme HQ" and "Acme EU".
Repeating a status update saves the note once. Repeating a watch or track request that already went through changes nothing and starts no second scan.
How a push picks the tool
push_leads names Slack, HubSpot, Salesforce, Pipedrive, Attio, Notion, and Google Sheets directly (slack, hubspot, salesforce, pipedrive, attio, notion, google_sheets). A push to salesforce creates a Lead, or updates the Lead or Contact the org already has. A push to pipedrive creates a Person with a Lead in the Leads Inbox, or updates the mapped fields of the Person the company already has. A push to attio creates a person, or updates the person the workspace already has, and adds them to the chosen list. For outreach it names a channel, not a tool. automation is LinkedIn (HeyReach), email_outreach is email (Instantly or Smartlead), and multichannel_outreach is Emelia. A configuration_uuid picks one configuration, and with it the tool and the campaign.
A workspace can connect several accounts of one tool, such as an Emelia account per seat. list_accounts names each configuration's connection in installation_label, such as "Emelia: Sean".
With one email tool connected, a push to email_outreach without a configuration_uuid goes to its first switched-on configuration. When both Instantly and Smartlead have configurations, or two accounts of one tool do, it never guesses. The tool returns a configuration_required error, and data.configurations lists each configuration that could take the leads, with its uuid, name, provider, provider_label, installation_uuid, installation_name, installation_label, target_name, is_enabled, and paused. The error text names each one with its connection, such as "Q4 list (Emelia: Sean, configuration_uuid …)". The assistant should ask you which one and push again with that configuration_uuid.
What a push shows before it sends
The first request sends nothing. It runs each lead through the destination's delivery rules and duplicate check and reports it as queued, skipped, or blocked, with the reason and the lead's name. It also marks each lead that sending would look up, and counts those paid lookups. A lead the preview skips is skipped for the same reason when you send. On the free trial, a lead without an email is skipped for an email tool, because no lookup runs.
How an ICP change works through an assistant
The assistant should preview the change first. Leads a rule would drop come back at once, with the rule named. The AI then re-judges a sample of up to 200 leads and reports the matches it would drop and the leads it would add. Nothing is saved yet.
You can ask for a single value added or removed, such as "add RevOps to the job titles". The assistant changes that value and keeps the rest of the list, and the preview and the save make the same edit.
When you agree, the assistant applies that preview, so the verdicts you saw are the ones saved, and it can keep any lead you name as a match. The confirmation lists what is added and removed, how many leads will be re-classified, and how many match today. A change that matches what the ICP already says is refused rather than re-scoring for nothing.
To undo it, ask the assistant, or use Undo last change in the Change history card on the ICP screen, as change your ICP safely describes. Either way only the last save can be undone, and an undo cannot itself be undone. To reverse feedback on one lead, ask the assistant to withdraw the verdict. The lead goes back to unclassified, as read and correct an ICP match describes.
Access, activity, and limits
Approval issues credentials that act as you and work only at the MCP address, not against the rest of Embers. Access lasts an hour at a time and renews in the background. The renewal credential lasts 30 days and is replaced every time it is used.
Once you approve an assistant, the MCP page opens on a status line, "Connected to" and the assistant's name, or "Connected to 2 assistants", with facts such as "last used 2h ago" and "14 actions in the last 90 days". Authorized apps lists each assistant with its permissions and when it last used the connection. Revoke ends its access immediately, after you confirm with Revoke access. Recent activity records every action an assistant takes. It shows which action, a short summary of what it was asked, whether it failed, which assistant, and when. Activity is kept for 90 days. The Connect an AI assistant card moves to the bottom of the page and reads "It never posts, messages, or connects with anyone on LinkedIn. Scans, paid lookups, and changes that affect other leads ask you first." Connected apps under Settings, then API and webhooks, lists the same assistants and activity.
An assistant can make 300 calls an hour. Drafting an opener also counts against the app's 60 per hour AI budget. Each paid contact lookup, watched profile, and qualified post the assistant starts counts against the same 30 per hour as the app's scan and lookup actions. Over a limit, the assistant is told how long to wait.
Troubleshooting
The approval screen says the request is not valid. The request expired or was already used. Start again from the assistant.
The assistant says it is not authorized. Access was revoked, or approval never finished. Reconnect from the assistant and complete the browser step.
The assistant says it lacks permission to watch profiles or track keywords. You approved it before that permission existed, or the approval did not include it. Authorized apps shows its permissions. Reconnect from the assistant and choose Allow access on the screen that lists Watch LinkedIn profiles, track keywords and pull engagers from posts.
It says you have several workspaces, or a workspace was not found. Tell it which one, by full name, or ask it to list your workspaces.
The assistant lists names but cannot open a lead, draft an opener, or update a status. Embers used to send each lead's ID and LinkedIn address only in a part of the answer that some assistants never show the model. The model saw a one-line summary such as "1 lead(s) match; showing 1." Every answer now carries the full data as text, IDs and LinkedIn addresses included. You do not need to reconnect. Ask the assistant to search your leads again.
A tool says it requires a paid plan. The workspace, or a client workspace's agency parent, is on Free. See change your plan.
Revealing a contact is refused on the free trial. Contact details unlock with your first paid month, as in the app.
A watched profile, keyword, or post is refused. Each item is checked as the app checks it. Common reasons are a plan limit already reached, a profile with a very large audience, or no Qualify post submissions left this cycle. The other items in the same request still go ahead.
A push is refused with configuration_required. Both Instantly and Smartlead have configurations, or two accounts of one tool do, and the assistant did not say which one to use. Tell it which campaign, and which connection. It retries with that configuration.
A push is refused with "configuration not found". The configuration_uuid is unknown or stale, usually because the configuration was deleted. Ask the assistant to list your workspaces again and pick a current one.
A push is refused. The destination is not connected, or its configuration is paused. An administrator sets destinations up. Start from choosing where Embers sends your leads.
The assistant cannot connect at all. Check the address is https://mcp.useembers.com/mcp. Assistants that verify the server they connect to refuse the older api.useembers.com address.
Related
-
Choose where Embers sends your leads: Every destination, and where an assistant fits.
-
Work the Priority Queue: The queue an assistant reads as "today".
-
Change your ICP safely: Preview an ICP edit, keep leads, and undo the last change.
-
Compare plans and limits: Which plans include assistant access.
Frequently asked questions
Can an assistant message or connect with people on LinkedIn?
No. No action posts, messages, comments, connects, or follows on LinkedIn. Drafting an opener saves a draft for you to send yourself.
Can an assistant spend credits or use my plan limits?
Only after you agree. Watching a profile, tracking a keyword, qualifying a post, revealing a contact, saving an ICP change, and a push that needs a lookup can spend. The assistant tells you what the action would use and waits for your yes.
Can an assistant start a scan?
Only with the permission to watch profiles, track keywords, and pull post engagers, and only after you agree. A new watched profile or keyword is scanned at once and then on its schedule. An assistant connected before this permission existed has to reconnect to get it.
How do I disconnect an assistant?
Open the MCP page from Integrations, or Connected apps under Settings, then API and webhooks. Choose Revoke next to it under Authorized apps, then confirm with Revoke access. Access stops immediately.
My assistant asks for an OAuth Client ID. Where do I find it?
You do not need one. Leave the OAuth Client ID and Client Secret fields blank when you add the connector. The assistant identifies itself to Embers automatically, so there is nothing to look up or paste.
Do I need an API key?
No. You approve the connection in your browser and Embers issues the credentials itself. There is no key to copy or store.