every tool eesier gives your agent
The complete, always-current reference for the eesier MCP server. Generated straight from the running server, so what you read here is exactly what your agent gets.
connecting
One endpoint, one bearer token.
https://mcp.eesier.com
Authorization: Bearer <token> — or OAuth 2.1, discoverable at /.well-known/oauth-protected-resource
https://mcp.eesier.com/SKILL.md
Claude Code
claude mcp add eesier https://mcp.eesier.com/ -t http -H "Authorization: Bearer <TOKEN>"
Any MCP-capable agent works the same way: point it at the server URL and send the bearer token. Not using an agent? The same tools are callable over plain HTTP — see the REST API reference.
how the surface behaves
The conventions every tool on this page follows.
read, write, destructive
Every tool is annotated. read never changes anything. write creates or updates. destructive removes or cancels something — treat it as irreversible and confirm with the user first.
whoami first
Call whoami at the start of every session. It returns the account profile, the plan and timezone_offset_utc_hours, which you need to read every date correctly.
paging
List tools take page (0-based) and page_size (default 20, capped at 100) and return the total alongside the rows.
dates
Every timestamp is returned in UTC ISO 8601 (2026-01-31T14:05:00Z). Date filters accept ISO dates too.
errors
A failed call returns a JSON object with an error field describing what went wrong, not an HTTP error. Read it and act on it — do not retry blindly.
plan gating
A few write tools require an active plan (paid or trial). They return a clear message saying so instead of failing silently.
search_knowledge before answering
Any question about how the platform itself works should go through search_knowledge first — it reads eesier's own knowledge base.
catching up
list_account_events is a cursor feed of what happened since your last check. what_changed_since gives the same ground as a narrative digest.
stable names
Tool names are the contract and every entry here links to itself, so you can point a teammate straight at one tool.
the tools
All 202 of them, grouped by what they touch. Open one to see its parameters.
No tool matches that filter.
Session
Identify the connected account and read its pending notifications. whoami is the first call of every session — it returns the profile, the plan and the account timezone.
acknowledge_notification
write
Acknowledge a notification you have already surfaced to the user — it stops appearing in list_pending_notifications for you. This is an agent-side bookmark only: the platform's own delivery of the notification to the user is unaffected.
Parameters
notification_id |
integer required | Notification ID (from list_pending_notifications) |
list_notification_history
read
List the customer's past and pending system notifications (newest first, paginated) — including ones already processed by the platform or already acknowledged. Use list_pending_notifications for just the new, unseen ones.
Parameters
page |
integer
optional
default 0
|
Page number (0-based, default 0) |
page_size |
integer
optional
default 20
|
Notifications per page (default 20, max 100) |
list_pending_notifications
read
List all pending (unprocessed) system notifications queued for the customer. These are heads-up messages the platform wants the user to see — platform updates or action confirmations that haven't been surfaced yet. Surface them to the user; you cannot mark them as processed — they remain in the queue until the platform clears them internally. Sorted by oldest first. After surfacing one, call acknowledge_notification so it stops reappearing here; for past notifications use list_notification_history.
Parameters
This tool takes no parameters.
whoami
read
Returns the authenticated customer's profile information including name, phone, email, language, timezone offset from UTC (in hours, may be null if not set), subscription plan, and prospecting eligibility.
Parameters
This tool takes no parameters.
Leads
Search, read, register and update leads. Take a lead over from the agent, hand it back, stop it, or list everything waiting on a human right now.
get_lead
read
Get a lead's full profile including contact info, company data, prospecting status, and conversation history. Email thread bodies are included inline (latest 50 per direction); WhatsApp and voice activity appear as counts — use get_lead_conversation for the full merged cross-channel timeline.
Parameters
lead_id |
integer required | Lead ID |
list_lead_emails
read
List the emails exchanged with a specific lead (outbound and inbound), oldest first. Paginated — outbound_total/inbound_total report the full thread size. Set include_bodies=false for a lightweight metadata-only view (dates, subjects, attachment names).
Parameters
lead_id |
integer required | Lead ID |
page |
integer
optional
default 0
|
Page number (0-based, default 0) |
page_size |
integer
optional
default 20
|
Emails per direction per page (default 20, max 100) |
include_bodies |
boolean
optional
default true
|
Include full email bodies (default true); false returns metadata only |
list_pending_review
read
List leads that have been flagged for human review by the prospecting agent.
Parameters
This tool takes no parameters.
register_lead
write
Manually register a new lead so Blue Button can prospect it. A valid email is required for the lead to actually be contacted (phone alone only enables WhatsApp/voice). Deduplicates: if a lead with the same email or phone already exists, returns that lead's id instead of creating a duplicate. To bring in many leads at once use import_leads; for a lead referred by another lead use register_referral_lead.
Parameters
name |
string required | Contact name |
email |
string optional | Email address |
phone |
string optional | Phone number |
company |
string optional | Company name |
status |
string optional | Initial status: Cold (default) or Confirmed |
campaign |
string optional | Campaign name or numeric campaign_id to assign lead to |
return_lead_to_pipeline
write
Return a lead to the autonomous prospecting pipeline with optional instructions for the next touch.
Parameters
lead_id |
integer required | Lead ID |
instructions |
string optional | Instructions for the agent's next touch |
next_touch_date |
string optional | When to make the next touch (ISO date, default: now) |
search_leads
read
Search leads by query, status, campaign, date range, or last prospecting message date. Supports sorting by date_created (default), last_prospecting_message, or status. Returns paginated results. Each result includes last_outbound_at (date of last outbound message sent to this lead) and last_inbound_at (date of last reply from this lead) so you can triage activity without opening the thread.
Parameters
query |
string optional | Search query (matches name, company name, email) |
status |
string optional | Filter by status: Pending, Cold, Confirmed, Aware, NotInterested, Interested, Frozen, Closed, Unqualified, Rejected, Gatekeeper |
campaign |
string optional | Filter by campaign name or numeric campaign_id |
created_after |
string optional | Only leads created on or after this date (ISO format, e.g. 2026-01-01) |
created_before |
string optional | Only leads created on or before this date (ISO format, e.g. 2026-03-31) |
last_prospecting_message_after |
string optional | Only leads that received a prospecting message on or after this date (ISO format) |
sort_by |
string optional | Sort order: date_created (default, newest first), last_prospecting_message (most recent activity first), status (by status then date). Unrecognized values default to date_created. |
page |
integer
optional
default 0
|
Page number (0-based, default 0) |
page_size |
integer
optional
default 20
|
Page size (default 20, max 100) |
has_linkedin |
boolean optional | Filter by LinkedIn presence: true returns only leads that have a LinkedIn profile URL, false only leads without one. Omit for all leads. |
send_message_to_lead
write
Send a direct email to a lead from the customer's Blue Button address. SIDE-EFFECT: this takes the lead over (removes it from the autonomous pipeline, same as take_over_lead) — the customer owns the conversation from then on. The email is queued for delivery, not sent instantly. If the customer only wants to steer the approach without taking over, use return_lead_to_pipeline with instructions instead. For WhatsApp use send_whatsapp_message_to_lead.
Parameters
lead_id |
integer required | Lead ID |
subject |
string required | Email subject |
body |
string required | Email body |
stop_lead
destructive
Stop prospecting a lead — Blue Button finishes the lead and sends nothing further. Reversible: recover_lead_to_pipeline puts it back in the pipeline with re-engagement framing. Contrast: take_over_lead means the customer will personally handle the lead; stop_lead means nobody will. To record WHY (won/lost/gave up, deal value) use register_lead_outcome instead — it stops prospecting AND keeps the outcome history.
Parameters
lead_id |
integer required | Lead ID |
reason |
string optional | Reason for stopping |
take_over_lead
write
Take over a lead — marks it as user-controlled, removing it from the autonomous prospecting pipeline (Blue Button stops contacting it; the customer handles it through their own channels). To hand the lead back to Blue Button later, use recover_lead_to_pipeline (gentle re-engagement). Contrast: stop_lead ends prospecting without implying the customer will handle it; send_message_to_lead also takes over as a side-effect; return_lead_to_pipeline is the post-human-review resume.
Parameters
lead_id |
integer required | Lead ID |
update_lead
write
Update a lead's status, goal, or background. Pass only the fields you want to change. Note: setting a status here does NOT stop or pause prospecting — to remove the lead from the pipeline use stop_lead (finish permanently) or take_over_lead (customer handles it personally).
Parameters
lead_id |
integer required | Lead ID |
status |
string optional | New status: Pending, Cold, Confirmed, Aware, NotInterested, Interested, Frozen, Closed, Unqualified, Rejected, Gatekeeper |
goal |
string optional | Lead-specific outreach goal |
background |
string optional | Background context about this lead |
Lead operations
Act on a lead: send a WhatsApp message, import a list, reschedule the next touch, register a referral, or generate a presentation for one specific lead.
create_lead_presentation
write
Generate a personalized strategic presentation (PDF) for a specific lead, based on the customer's business and the lead's context. Runs synchronously and can take a minute. Returns the PDF URL. If the lead already has a presentation, returns the existing one. Respects the customer/campaign 'generate custom presentations' toggle.
Parameters
lead_id |
integer required | Lead ID |
import_leads
write
Import many leads at once. Provide EITHER an existing customer_file_id (an uploaded CSV/Excel/TXT file) OR inline rows (rows_json: a JSON array of objects with name, email, phone, company — email or phone required per row). The import is queued and processed in the background (deduped against existing leads); new leads enter prospecting automatically. For a single lead use register_lead.
Parameters
customer_file_id |
integer optional | Id of an already-uploaded customer file (.csv, .xlsx, .xls, .txt) to import from |
rows_json |
string optional | Inline leads as a JSON array, e.g. [{"name":"Ana","email":"[email protected]","phone":"+5511999999999","company":"Acme"}]. Max 500 rows per call. |
instructions |
string optional | Special instructions for extraction (column mappings, filters) |
status |
string optional | Initial status for imported leads (e.g. Cold, Confirmed) |
preferred_channel |
string optional | First-contact channel: Email or WhatsApp (applied per lead only when it has that contact info) |
first_message_instructions |
string optional | Instructions for the first prospecting message to imported leads |
prospecting_background |
string optional | Background about the imported leads (e.g. 'Leads from TechConf 2026 workshop on AI') |
prospecting_goal |
string optional | Outreach goal for the imported leads, overriding the customer-level goal |
campaign |
string optional | Campaign name or numeric campaign_id to assign the imported leads to |
register_referral_lead
write
Register a NEW lead that an existing lead referred ('talk to X'). Goes through the shared referral pipeline: dedupe, email verification, company-data copy when same_company, enrichment, and automatic entry into prospecting. Needs at least an email or a phone for the referred person. Requires an active paid plan.
Parameters
referring_lead_id |
integer required | ID of the existing lead who made the referral |
lead_name |
string required | Name of the referred person |
lead_email |
string optional | Email of the referred person |
lead_phone |
string optional | Phone of the referred person |
same_company |
boolean
optional
default false
|
True when the referred person works at the SAME company as the referring lead (company data is copied over) |
status |
string optional | Initial status (e.g. Cold, Confirmed) |
instructions_for_first_touch |
string optional | Instructions for the first touch to the referred lead |
reschedule_lead_touch
write
Update the next prospecting touch date and/or preferred channel for one or more actively-prospected leads, selected by explicit lead IDs and/or by the file they were imported from. Setting next_touch_date to now makes each lead be contacted as soon as possible. Leads the prospecting queue would not pick up (never started, finished, pending review, taken over, rejected, or frozen without a newer reply) are skipped and reported.
Parameters
lead_ids |
string optional | Comma-separated lead IDs to update (optional if imported_from_file_id is provided) |
imported_from_file_id |
integer optional | Update every actively-prospected lead imported from this customer file id |
next_touch_date |
string optional | New next-touch date/time in UTC (ISO format). Pass the current UTC time to contact ASAP. Omit to keep each lead's schedule. |
preferred_channel |
string optional | New preferred first-contact channel: Email or WhatsApp (applied only where the lead is reachable on that channel) |
send_whatsapp_message_to_lead
write
Send a direct WhatsApp message to a lead on the customer's prospecting number. Behavior mirrors the in-app agent: if the lead is NOT taken over, the message is parked as next-touch instructions and delivered on the lead's next natural prospecting touch (the lead is NOT taken over). If the lead IS taken over and its 24h WhatsApp service window is open (the lead messaged within the last 24h), the message is sent now, verbatim; if the window is closed, the send is refused (WhatsApp policy) — use email via send_message_to_lead instead. Requires a live WhatsApp prospecting line (register_whatsapp_line).
Parameters
lead_id |
integer required | Lead ID |
message |
string required | The message to deliver, written exactly as it should reach the lead |
attachment_url |
string optional | Optional absolute https URL of a file to send as a WhatsApp media message after the text |
Outcomes
Close the loop: record what happened with a lead, answer a question it asked, recover it into the pipeline, or read its lifecycle history.
answer_lead_question
write
Save the customer's answer to a question a lead previously asked that the platform couldn't answer (price, delivery area, specs, process...). The answer is stored in the business FAQ so EVERY future lead gets it, and if the asking lead is still in the pipeline the answer is relayed on the next touch. Pass open_question_id when known; otherwise pass question_text.
Parameters
answer_text |
string required | The customer's answer, in their own words |
open_question_id |
integer optional | ID of the open question being answered, when known |
question_text |
string optional | The question text — required when no open_question_id is provided |
list_lead_lifecycle_events
read
List the lifecycle/outcome history of a specific lead (outcome recorded, recovered, check-ins muted, questions answered, meeting outcomes...), newest first. The append-only audit trail behind register_lead_outcome and its siblings.
Parameters
lead_id |
integer required | Lead ID |
limit |
integer
optional
default 50
|
Max events to return (default 50, max 200) |
mute_lead_check_ins
write
Stop the periodic 'how did it go with this lead?' check-in questions for a specific lead, when the customer asks not to be reminded about it anymore. Does NOT change the lead's status or pipeline state.
Parameters
lead_id |
integer required | Lead ID |
reason |
string optional | Why the customer wants to stop hearing about this lead, in their own words |
recover_lead_to_pipeline
write
Bring a lead the customer had taken over (or given up on) BACK into the autonomous prospecting pipeline with gentle re-engagement framing (the lead already knows the business). Use this — NOT return_lead_to_pipeline — when the customer PERSONALLY took over or stopped pursuing the lead and now wants Blue Button to resume it. Refuses unsubscribed leads and leads with a recorded won/lost outcome. The first re-engagement touch happens after a short delay.
Parameters
lead_id |
integer required | Lead ID |
owner_context |
string optional | Context the customer gave for the recovery, in their words (e.g. 'he asked to talk after the holidays') |
register_lead_outcome
write
Record the FINAL outcome of a lead as reported by the customer: 'won' (closed the sale), 'lost' (competitor, gave up, no budget), or 'gave_up' (the customer will no longer pursue this lead). Use for ANY update on how a lead's story ended — including casual positive announcements ('fechei com o X'). Also stops prospecting for the lead. Only pass reason/deal_value_brl when the customer volunteered them — NEVER ask for a deal value. Contrast: stop_lead ends prospecting without recording why; this keeps the outcome history.
Parameters
lead_id |
integer required | Lead ID |
outcome |
string required | The outcome: 'won', 'lost', or 'gave_up' |
reason |
string optional | The customer's own words about why/how it ended — only when volunteered |
deal_value_brl |
number optional | Deal value in BRL — ONLY when the customer explicitly mentioned an amount |
Meetings
List the meetings booked with leads, confirm or cancel them, and record who actually showed up.
cancel_lead_meeting
destructive
Cancel a meeting on the customer's side and send the lead back into the prospecting pipeline so the executor communicates the cancellation on the next touch.
Parameters
meeting_id |
integer required | Id of the meeting to cancel |
next_touch_date |
string required | When the executor should re-engage the lead about the cancellation (ISO 8601 UTC, usually within a few hours) |
reason |
string optional | Optional cancellation reason — appended to the meeting notes and included in the next-touch instructions |
additional_instructions |
string optional | Optional extra next-touch instructions for the executor, written in the customer's language |
confirm_lead_meeting
write
Confirm a meeting on the customer's side (call when the customer accepts a meeting the lead proposed). Stamps the customer's acceptance.
Parameters
meeting_id |
integer required | Id of the meeting the customer is confirming |
list_lead_meetings
read
List meetings between the customer and their leads. Optionally filter by a specific lead, include cancelled meetings, or include past meetings.
Parameters
lead_id |
integer optional | Optional lead id to filter by |
include_cancelled |
boolean
optional
default false
|
Include cancelled meetings (default false) |
include_past |
boolean
optional
default true
|
Include past meetings from the last 30 days (default true). Set false for upcoming only. |
update_lead_meeting_attendance
write
Record attendance for a meeting that already happened — whether the customer and/or the lead showed up, plus optional outcome notes. Pass at least one field.
Parameters
meeting_id |
integer required | Id of the meeting to update |
has_customer_attended |
boolean optional | Whether the customer attended |
has_lead_attended |
boolean optional | Whether the lead attended |
notes |
string optional | Optional outcome notes — appended to existing notes |
Timing intelligence
Read the timing signals collected for a lead — when this kind of contact tends to answer.
get_lead_timing_intelligence
read
Get a lead's timing intelligence: the best times to reach out (by day of week, in the lead's local time), when the lead historically responds, and their average response time. Built from this lead's history, falling back to their sector, this customer, then platform-wide data (the source field says which). Use it to time send_message_to_lead / return_lead_to_pipeline touches.
Parameters
lead_id |
integer required | Lead ID |
Conversations
Read what was actually said. Full cross-channel timeline for one lead, the WhatsApp thread on its own, or a meaning-based search across every lead conversation at once.
get_lead_conversation
read
Get a lead's full cross-channel conversation timeline — email, WhatsApp, and voice calls — merged chronologically, each item tagged with its channel and direction. Paginated. This is the one tool that shows the WHOLE conversation as the lead experienced it; for a single channel use list_lead_emails or list_lead_whatsapp_messages.
Parameters
lead_id |
integer required | Lead ID |
page |
integer
optional
default 0
|
Page number (0-based, default 0) |
page_size |
integer
optional
default 30
|
Items per page (default 30, max 100) |
order |
string
optional
default newest_first
|
Ordering: newest_first (default) or oldest_first |
include_transcripts |
boolean
optional
default false
|
Include full voice-call transcripts (default false — only the outcome summary) |
list_lead_whatsapp_messages
read
List the WhatsApp messages exchanged with a specific lead (outbound and inbound), oldest first. Paginated — outbound_total/inbound_total report the full thread size. Set include_bodies=false for a lightweight metadata-only view. For the lead's emails use list_lead_emails; for the merged email+WhatsApp+voice timeline use get_lead_conversation.
Parameters
lead_id |
integer required | Lead ID |
page |
integer
optional
default 0
|
Page number (0-based, default 0) |
page_size |
integer
optional
default 20
|
Messages per direction per page (default 20, max 100) |
include_bodies |
boolean
optional
default true
|
Include full message bodies (default true); false returns metadata only |
search_lead_conversations
read
Semantic search ACROSS ALL the customer's LEAD conversations — lead emails and lead WhatsApp messages — by meaning, not keywords (e.g. 'leads who asked about pricing', 'objections about contract length'). Returns snippets with lead_id; fetch full threads via get_lead_conversation / list_lead_emails / list_lead_whatsapp_messages. Optionally scope to one lead or one channel. NOT for the customer's own chat with their Blue Button agent — that is search_my_agent_conversation.
Parameters
query |
string required | What to search for, phrased by meaning (any language) |
lead_id |
integer optional | Restrict to one lead's conversation (optional) |
channel |
string optional | Restrict channel: email, whatsapp, email_inbound, email_outbound, whatsapp_inbound, whatsapp_outbound (optional; default = all) |
top_k |
integer
optional
default 10
|
Max results (default 10, max 25) |
min_score |
number optional | Minimum similarity score 0..1 (optional) |
search_my_agent_conversation
read
Semantic search over the customer's OWN past conversation with their Blue Button agent (the WhatsApp assistant they talk to) — use it to recall what the customer previously discussed, decided, or asked for. NOT for lead conversations — that is search_lead_conversations.
Parameters
query |
string required | What to search for, phrased by meaning (any language) |
top_k |
integer
optional
default 5
|
Max results (default 5, max 10) |
Campaigns
Run separate prospecting tracks for different products or markets: create, pause, resume, rename, archive, compare results, and move leads between them.
archive_campaign
destructive
Archives a campaign permanently. Every lead in it has its campaign link cleared and goes back to default prospecting, and the campaign stops appearing in campaign lists. Use pause_campaign instead for a temporary stop.
Parameters
name |
string required | Campaign name or numeric campaign_id |
compare_campaigns
read
Compare two campaigns side-by-side: configuration and lead stats.
Parameters
name_a |
string required | First campaign name |
name_b |
string required | Second campaign name |
create_campaign
write
Creates a new prospecting campaign. Name and business_name are required. Each campaign is ISOLATED — it does NOT inherit any field from the customer-level defaults, so populate every field that matters at creation time.
Parameters
name |
string required | Campaign name (unique per customer) |
business_name |
string required | Business name for this campaign |
business_description |
string optional | Business description for this campaign — the product/service it represents. REQUIRED when the campaign represents a different product than the customer's main business, otherwise prospecting copy will have no product context. |
business_website |
string optional | Business website URL for this campaign |
icp |
string optional | Ideal customer profile |
cnae_filter |
string optional | Comma-separated CNAE codes to include |
cnae_exclusion_filter |
string optional | Comma-separated CNAE codes to exclude |
instructions |
string optional | Prospecting instructions |
email_instructions |
string optional | Email-channel instructions overlay — extra guidance applied ONLY when reaching a lead by email for THIS campaign, layered on top of the campaign's general instructions (raw replace of the email overlay). |
whatsapp_instructions |
string optional | WhatsApp-channel instructions overlay — extra guidance applied ONLY when reaching a lead on WhatsApp for THIS campaign, layered on top of the campaign's general instructions (raw replace of the WhatsApp overlay). |
voice_instructions |
string optional | Voice-channel instructions overlay — extra guidance applied ONLY on outbound calls for THIS campaign, layered on top of the campaign's general instructions (raw replace of the voice overlay). |
goal |
string optional | Outreach goal |
lead_qualification_instructions |
string optional | Lead qualification instructions — rules for HOW to evaluate leads against the ICP (hard requirements vs. flexible preferences, override conditions, leniency rules, disqualification thresholds) |
human_review_criteria |
string optional | Human review criteria — when to flag a lead for manual review instead of auto-advancing |
email_display_name |
string optional | Email display name override for this campaign (e.g. 'Carlos from PrimeAssist'). Leave blank to use the customer-level display name. |
uf_filter |
string optional | Comma-separated Brazilian state codes (e.g. 'SP,RJ,MG') |
city_filter |
string optional | Comma-separated city names |
country_filter |
string optional | ISO country codes |
min_employee_count |
integer optional | Minimum employee count |
max_employee_count |
integer optional | Maximum employee count |
min_annual_revenue |
number optional | Minimum annual revenue |
max_annual_revenue |
number optional | Maximum annual revenue |
company_size_filter |
string optional | Comma-separated company sizes: Micro,Small,Medium,Large |
company_type_filter |
string optional | Comma-separated company types to include in lead searches: Private, Individual, Government, StateOwned, NonProfit. Empty = inherit the customer's company type filter (customer default = Private only — MEI / individual entrepreneurs, government, state-owned and non-profit entities excluded). |
lead_generation_active |
boolean optional | Whether to auto-generate NEW leads for this track. Defaults to true. Set to false ONLY when the campaign should ONLY work on a list the user imports themselves and never receive auto-generated leads. Existing leads still get prospected — only new lead acquisition is paused when false. |
get_campaign
read
Returns full configuration and lead stats for a specific campaign. Accepts the campaign name or its numeric campaign_id (as returned by list_campaigns, search_leads, get_lead).
Parameters
name |
string required | Campaign name or numeric campaign_id |
list_campaigns
read
Lists all prospecting campaigns for the customer with their lead stats (total, interested, confirmed, cold, aware, frozen, not interested, taken over, pending review) and email metrics (emails sent, replies received, reply rate).
Parameters
This tool takes no parameters.
move_leads_to_campaign
write
Move leads from one campaign to another, or remove them from their campaign and return them to default (no-campaign) prospecting. Pass the target campaign name, or 'default' to remove the leads from any campaign. Optionally filter by lead status.
Parameters
target_campaign |
string required | Target campaign name or numeric campaign_id, or 'default' (or 'none') to remove the leads from their campaign and return them to default prospecting |
lead_ids |
string required | Comma-separated lead IDs to move |
status_filter |
string optional | Only move leads with this status (optional) |
pause_campaign
write
Pauses a campaign. Leads in this campaign will not be processed until resumed.
Parameters
name |
string required | Campaign name or numeric campaign_id |
rename_campaign
write
Renames a campaign.
Parameters
old_name |
string required | Current campaign name |
new_name |
string required | New campaign name |
resume_campaign
write
Resumes a paused campaign.
Parameters
name |
string required | Campaign name or numeric campaign_id |
set_campaign_lead_generation_active
write
Toggles whether the system AUTO-GENERATES new leads for a campaign. true = generate new leads (default). false = stop generating new leads — only work the existing list. INDEPENDENT from pause/resume: a campaign with lead_generation_active=false but is_active=true still prospects its existing leads, just no new lead acquisition. Use this when the user wants a campaign to work ONLY on a list they imported themselves.
Parameters
name |
string required | Campaign name or numeric campaign_id |
active |
boolean required | true to keep generating new leads, false to stop generating new leads (existing leads still get prospected) |
update_campaign
write
Updates an existing campaign's configuration. Pass only the fields you want to change. For numeric filters (employee count, revenue), set to -1 to clear.
Parameters
name |
string required | Current campaign name |
business_name |
string optional | New business name |
business_description |
string optional | Business description |
business_website |
string optional | Business website |
icp |
string optional | Ideal customer profile |
cnae_filter |
string optional | CNAE inclusion filter |
cnae_exclusion_filter |
string optional | CNAE exclusion filter |
uf_filter |
string optional | Comma-separated Brazilian state codes (e.g. 'SP,RJ,MG') |
city_filter |
string optional | Comma-separated city names |
country_filter |
string optional | Country filter |
instructions |
string optional | Prospecting instructions |
email_instructions |
string optional | Email-channel instructions overlay — extra guidance applied ONLY when reaching a lead by email for THIS campaign, layered on top of the campaign's general instructions (raw replace of the email overlay). |
whatsapp_instructions |
string optional | WhatsApp-channel instructions overlay — extra guidance applied ONLY when reaching a lead on WhatsApp for THIS campaign, layered on top of the campaign's general instructions (raw replace of the WhatsApp overlay). |
voice_instructions |
string optional | Voice-channel instructions overlay — extra guidance applied ONLY on outbound calls for THIS campaign, layered on top of the campaign's general instructions (raw replace of the voice overlay). |
goal |
string optional | Outreach goal |
strategy |
string optional | Strategy |
human_review_criteria |
string optional | Human review criteria |
lead_qualification_instructions |
string optional | Lead qualification instructions — rules for HOW to evaluate leads against the ICP (hard requirements vs. flexible preferences, override conditions, leniency rules, disqualification thresholds) |
email_display_name |
string optional | Email display name |
min_employee_count |
integer optional | Minimum employee count (-1 to clear) |
max_employee_count |
integer optional | Maximum employee count (-1 to clear) |
min_annual_revenue |
number optional | Minimum annual revenue (-1 to clear) |
max_annual_revenue |
number optional | Maximum annual revenue (-1 to clear) |
company_size_filter |
string optional | Comma-separated company sizes: Micro,Small,Medium,Large (empty to clear) |
company_type_filter |
string optional | Comma-separated company types to include in lead searches: Private, Individual, Government, StateOwned, NonProfit. Empty string clears the campaign override and inherits the customer's company type filter (customer default = Private only — MEI / individual entrepreneurs, government, state-owned and non-profit entities excluded). |
lead_generation_active |
boolean optional | Whether to auto-generate NEW leads for this track. true = generate new leads (default for new campaigns). false = stop generating new leads, only work the existing list. Independent from pause/resume — when false the campaign keeps prospecting its existing leads, just doesn't acquire new ones. |
is_active |
boolean optional | Whether this campaign is running at all. false pauses the whole track (same as pause_campaign), true resumes it. |
voice_calling_active |
boolean optional | Per-track outbound voice calling. true calls this track's leads, false never calls them, omit to keep the current setting. Cleared to inherit the customer-level toggle via clear_voice_calling_active. |
generate_custom_presentations |
boolean optional | Whether to generate a per-lead custom presentation for this track (true/false) |
notify_on_interested |
boolean optional | Alert when a lead of this track shows interest (true/false) |
notify_on_confirmed |
boolean optional | Alert when a lead of this track is confirmed (true/false) |
min_founding_date |
string optional | Earliest company founding date to include, as 'yyyy-MM-dd' (empty to clear) |
max_founding_date |
string optional | Latest company founding date to include, as 'yyyy-MM-dd' (empty to clear) |
Prospecting settings
The master switch plus everything that shapes who gets contacted and how: targeting, rules and preferences.
get_prospecting_config
read
Returns all prospecting configuration: filters (CNAE, location), instructions, goal, strategy, human review criteria, lead qualification instructions, notification settings, mode, and activation status.
Parameters
This tool takes no parameters.
set_allow_template_whatsapp_messages
write
Allows or blocks agent-initiated WhatsApp template messages to leads. When blocked the agent may only reply to leads who wrote first, inside WhatsApp's 24-hour window, and never opens a conversation by template. Free-form replies are unaffected.
Parameters
allowed |
boolean required | true to allow agent-initiated template messages, false to reply-only |
set_prospecting_active
write
Activates or deactivates autonomous prospecting. Returns the new status and eligibility information.
Parameters
active |
boolean required | true to activate, false to deactivate |
set_prospecting_preferences
write
Updates prospecting preferences: mode (Active/Passive), custom presentations, and notification settings. Pass only the fields you want to change.
Parameters
mode |
string optional | Prospecting mode: 'Active' (searching for leads) or 'Passive' (paused until review) |
generate_presentations |
boolean optional | Whether to generate custom presentations per lead (true/false) |
notification_email |
string optional | Email address to receive prospecting notifications |
notify_on_interested |
boolean optional | Notify (in-app/WhatsApp) when leads show interest (true/false) |
notify_on_confirmed |
boolean optional | Notify (in-app/WhatsApp) when leads are confirmed (true/false) |
notify_on_interested_via_email |
boolean optional | Send the branded EMAIL when leads show interest (true/false) — independent of the in-app/WhatsApp alert |
notify_on_confirmed_via_email |
boolean optional | Send the branded EMAIL when leads are confirmed (true/false) — independent of the in-app/WhatsApp alert |
notify_on_first_whatsapp_message |
boolean optional | Notify (one-time heads-up) when a lead sends their first WhatsApp message (true/false) |
cc_on_interested_lead_emails |
boolean optional | Copy the customer on the interested-lead emails sent to the notification addresses (true/false) |
set_prospecting_rules
write
Updates prospecting rules: instructions for the agent, outreach goal, strategy, human review criteria, and lead qualification instructions. Pass only the fields you want to change.
Parameters
instructions |
string optional | Instructions for how the agent should prospect (raw replace) |
goal |
string optional | Desired outreach goal (e.g. 'schedule a demo', 'book a meeting') |
strategy |
string optional | Prospecting strategy document |
human_review_criteria |
string optional | Criteria for when to escalate leads to human review |
lead_qualification_instructions |
string optional | Rules for HOW to evaluate leads against the ICP — which characteristics are hard requirements vs. flexible preferences, override conditions, leniency rules, disqualification thresholds. Distinct from the ICP itself (who to target). |
email_instructions |
string optional | Email-channel instructions overlay — extra guidance applied ONLY when reaching a lead by email, layered on top of the general instructions (raw replace of the email overlay). |
whatsapp_instructions |
string optional | WhatsApp-channel instructions overlay — extra guidance applied ONLY when reaching a lead on WhatsApp, layered on top of the general instructions (raw replace of the WhatsApp overlay). |
voice_instructions |
string optional | Voice-channel instructions overlay — extra guidance applied ONLY on outbound calls, layered on top of the general instructions (raw replace of the voice overlay). |
email_signature |
string optional | Exact signature block appended verbatim to every prospecting email. When set, the copywriter writes no signature of its own. Pass an empty string to clear it and go back to the default name-only signature. |
set_targeting
write
Updates prospecting targeting filters. Pass only the fields you want to change. Comma-separated values for multi-value fields. For numeric filters (employee count, revenue), set to -1 to clear.
Parameters
cnae_filter |
string optional | Comma-separated CNAE codes to include (e.g. '6201,6202,6311') |
cnae_exclusion_filter |
string optional | Comma-separated CNAE codes to exclude |
uf_filter |
string optional | Comma-separated Brazilian state codes (e.g. 'SP,RJ,MG') |
city_filter |
string optional | Comma-separated city names |
country_filter |
string optional | Comma-separated ISO country codes (e.g. 'BR,US') |
min_employee_count |
integer optional | Minimum employee count (-1 to clear) |
max_employee_count |
integer optional | Maximum employee count (-1 to clear) |
min_annual_revenue |
number optional | Minimum annual revenue (-1 to clear) |
max_annual_revenue |
number optional | Maximum annual revenue (-1 to clear) |
company_size_filter |
string optional | Comma-separated company sizes: Micro,Small,Medium,Large (empty to clear) |
company_type_filter |
string optional | Comma-separated company types to include in lead searches: Private, Individual, Government, StateOwned, NonProfit. Default (empty) = Private only — MEI / individual entrepreneurs, government, state-owned and non-profit entities are excluded. |
min_founding_date |
string optional | Earliest company founding date to include, as 'yyyy-MM-dd' (empty to clear) |
max_founding_date |
string optional | Latest company founding date to include, as 'yyyy-MM-dd' (empty to clear) |
Prospecting files
The catalog of files the agent may send to a lead — presentations, price tables, guides — scoped to a campaign or to the whole account.
list_prospecting_files
read
List the prospecting files catalog — the materials the prospecting agent can offer and send to leads, with each file's title, description, url and campaign scope.
Parameters
This tool takes no parameters.
register_prospecting_file
write
Register a file in the prospecting files catalog — the materials the prospecting agent can offer and SEND TO LEADS during outreach (price table, institutional presentation, onboarding guide), via email attachments and WhatsApp documents. Provide either customer_file_id (an already-uploaded customer file — preferred) or a direct url. If no description is given, one is auto-generated from the file's content so the agent knows when to send it. NOT for business knowledge the agent answers questions from (register_business_file) and NOT the per-lead AI-generated custom guide.
Parameters
title |
string required | Short lead-facing title, e.g. 'Tabela de precos' |
description |
string optional | What the file contains and when to send it to a lead (1-3 sentences). Leave empty to auto-generate from the file's content. |
customer_file_id |
integer optional | Id of an existing customer file to register (preferred over a raw url) |
url |
string optional | Direct public URL of the file (alternative to customer_file_id) |
campaign |
string optional | Optional campaign name to make the file sendable ONLY to that campaign's leads. Leave empty for a customer-wide file sendable to every lead. |
sort_order |
integer
optional
default 0
|
Catalog display/prompt order (lower first, default 0) |
remove_prospecting_file
destructive
Remove a file from the prospecting files catalog so the prospecting agent stops offering and sending it to leads. Find the id with list_prospecting_files.
Parameters
prospecting_file_id |
integer required | Id of the prospecting file to remove |
update_prospecting_file
write
Update a prospecting file's title, description, campaign scope or display order. Find the id with list_prospecting_files. To change the file itself, remove the entry and register a new one.
Parameters
prospecting_file_id |
integer required | Id of the prospecting file to update |
title |
string optional | New lead-facing title |
description |
string optional | New description of what the file contains and when to send it |
campaign |
string optional | Campaign name to scope the file to, or 'all' to make it customer-wide |
sort_order |
integer optional | New catalog display/prompt order (lower first) |
Reports
The numbers: headline prospecting report, funnel by industry and by state, performance trends, message performance, volume estimates, and a narrative catch-up of what changed.
estimate_lead_volume
read
Returns a benchmark of what a typical PAID Blue Button customer (and paid customers with a similar ICP) produces in the last 30 days: new leads found, confirmed responses (real conversations), interested (hot) leads, and messages sent — each shown as a range from median (typical customer) to top (more active ones) per week and per month. Free-trial-only users are excluded. The tool picks the most relevant benchmark automatically — Similar (CNAE-overlapping paid customers) when available, Global (all paid customers) otherwise.
Parameters
This tool takes no parameters.
get_funnel_by_industry
read
Get a funnel breakdown by industry. For Brazilian customers, groups by CNAE division. For international customers, groups by the CompanyIndustry field from Apollo/Lusha data. Optionally filter by campaign.
Parameters
campaign |
string optional | Filter by campaign name or numeric campaign_id (optional, omit for global funnel) |
get_funnel_timeline
read
Count of leads ENTERING each funnel stage per time bucket (day or week). Stages tracked: cold (DateProspectingStarted), confirmed (DateConfirmedProspectingQualification), interested (DateConfirmedInterest), closed (DateStatusChanged while current Status=Closed — APPROXIMATION: a lead that was Closed and later moved to another status will not be counted, because the platform does not store status history). Aware is not exposed — the platform does not reliably track entry into that stage. Missing buckets gap-filled with zeros, newest-first. Optionally filter by campaign.
Parameters
days |
integer
optional
default 30
|
Number of days to look back (default 30, max 365) |
bucket |
string
optional
default day
|
Bucket size: 'day' (default) or 'week' (Monday-aligned) |
campaign |
string optional | Filter by campaign name or numeric campaign_id (optional, omit for global timeline) |
get_message_performance
read
Reply rate broken down by campaign and/or message type over a time window. Returns total sent, replied (distinct outbound emails with at least one reply), reply_rate_pct, plus a breakdown. Breakdown shape depends on group_by: 'campaign' returns one row per campaign (message types collapsed); 'type' returns one row per message type (campaigns collapsed); 'both' (default) returns one row per campaign×type combination (a matrix — NOT two separate lists — so expect up to N_campaigns × N_types rows). Message types: first_contact (AutonomousFirstTouch), follow_up (AutonomousFollowUp), response (AutonomousResponse to inbound), direct (DirectMessage sent on user's behalf), user_written (UserWrittenMessage sent manually by user). Defaults to 30 days.
Parameters
days |
integer
optional
default 30
|
Number of days to look back (default 30, max 365) |
campaign |
string optional | Filter by campaign name or numeric campaign_id (optional, omit for all campaigns) |
group_by |
string
optional
default both
|
How to group the breakdown: 'campaign', 'type', or 'both' (default) |
get_metrics_by_state_and_industry
read
Breaks down every prospecting metric by Brazilian STATE and by INDUSTRY (CNAE description) over a time window, so you can compare which states/industries are performing best. For each dimension it returns the top groups by lead volume — each with new_leads, emails_sent, responses, whatsapp_sent, whatsapp_responses, conscientizados, interested (became interested in the window), confirmed_aware_interested_or_takenover, referrals, and meeting counts (invitations made/received, booked, made) — plus the top-performing group per metric category. Leads with no state/CNAE fall into 'Não informado' and are excluded from the top-performer picks. interested is counted by DateConfirmedInterest (the moment the lead converted). Optionally filter by campaign.
Parameters
days |
integer
optional
default 30
|
Number of days to look back (default 30, max 365) |
campaign |
string optional | Filter by campaign name or numeric campaign_id (optional, omit for whole account) |
get_performance_trends
read
Get prospecting performance trends per day over the specified window. All metrics are daily FLOW counts (events that happened on that day), not cumulative stocks. Each row has: leads_generated (leads created that day), emails_sent (outbound prospecting emails sent that day), replies_received (inbound replies to outbound emails received that day), confirmed (leads whose status became Confirmed for the first time on that day, i.e. DateConfirmedProspectingQualification falls on the day), interested (leads whose status became Interested for the first time on that day, i.e. DateConfirmedInterest falls on the day — this is the per-day entry count, NOT the total number of leads currently with Status=Interested), whatsapp_sent (prospecting WhatsApp messages sent that day, by DateSent), whatsapp_replies_received (WhatsApp replies from leads that day, by the lead's send timestamp). Missing days are gap-filled with zeros. Optionally filter by campaign.
Parameters
days |
integer
optional
default 30
|
Number of days to look back (default 30, max 365) |
campaign |
string optional | Filter by campaign name or numeric campaign_id (optional, omit for global trends) |
get_prospecting_report
read
Get an overall prospecting report: total leads, leads by status, emails sent, response rate, and pipeline summary. Also returns WhatsApp activity: whatsapp_sent (prospecting WhatsApp messages sent), whatsapp_responses (WhatsApp replies received, counted separately from email responses), and leads_talked_to_on_whatsapp (distinct leads with any WhatsApp message in either direction). Optionally filter by campaign.
Parameters
campaign |
string optional | Filter by campaign name or numeric campaign_id (optional, omit for global report) |
get_whatsapp_message_performance
read
WhatsApp reply performance broken down by campaign and/or message type over a time window. NOTE: unlike get_message_performance (email), WhatsApp reply rate is reported at the LEAD level — WhatsApp inbound has no per-message link to a specific outbound, so 'replied' cannot be attributed per message. Returns total sent (message count), leads_messaged (distinct leads contacted), leads_replied (distinct leads who sent at least one inbound on/after their first outbound of that type in the window), lead_reply_rate_pct (leads_replied / leads_messaged), plus a breakdown. group_by: 'campaign' (one row per campaign), 'type' (one row per message type), 'both' (default, campaign×type matrix). Message types: first_contact (AutonomousFirstTouch), follow_up (AutonomousFollowUp), response (AutonomousResponse), direct (DirectMessage), user_written (UserWrittenMessage). Defaults to 30 days.
Parameters
days |
integer
optional
default 30
|
Number of days to look back (default 30, max 365) |
campaign |
string optional | Filter by campaign name or numeric campaign_id (optional, omit for all campaigns) |
group_by |
string
optional
default both
|
How to group the breakdown: 'campaign', 'type', or 'both' (default) |
list_prospecting_optimizations
read
Lists the autonomous prospecting optimization history in reverse-chronological order (newest first). Paginated. Each entry shows when the prospecting reviewer agent ran and what targeting/configuration changes it made and why. Optionally filter by campaign.
Parameters
campaign |
string optional | Filter by campaign name or numeric campaign_id (optional, omit for all optimizations) |
page |
integer
optional
default 0
|
Page number (0-based, default 0) |
page_size |
integer
optional
default 20
|
Page size (default 20, max 100) |
what_changed_since
read
Full digest of what happened in the prospecting operation since a given date — built for the 'I've been away for months, what happened?' case. Blocks: (1) activity_summary — the engine's raw work in the window: new_leads, emails_sent, email_replies, whatsapp_sent, whatsapp_replies; (2) funnel_progress — leads that reached each stage in the window: reached_confirmed, became_interested; (3) new_interested_leads — the interested leads themselves (up to 100, plus total_count); (4) outcomes — deals closed in the window: won_count, lost_count, gave_up_count, total_deal_value_brl, and won_items; (5) meetings — booked, cancelled, held, no_show counts in the window plus items; (6) pending_human_review — the CURRENT pile of leads waiting on the owner (a live snapshot, NOT limited to the window): total_count plus items; (7) support_answered — support requests the team answered in the window (message + answer); (8) campaign_performance_changes — campaigns whose reply rate shifted by at least 3 percentage points (30-day window ending on since_date vs since_date→now, skipping windows with fewer than 50 sent); (9) optimizer_adjustments — prospecting-optimizer changes persisted since that date (capped at 500 items; total_count/returned_count/truncated report the true total). All windowed counts cover since_date→now; timestamps are UTC.
Parameters
since_date |
string required | ISO date in YYYY-MM-DD format (e.g. 2026-01-15) |
Voice calls
Place a goal-driven phone call to a lead, read the calls already placed, and switch voice calling on or off per account or per campaign.
get_campaign_voice_calling_active
read
Read a campaign's voice-calling toggle. A null value means the campaign inherits the customer-level toggle.
Parameters
campaign |
string required | Name of the campaign |
get_voice_call
read
Get the status and outcome of a goal-driven phone call placed with place_goal_driven_call: lifecycle status, whether a person picked up, whether the goal was achieved, the outcome summary, and the full transcript.
Parameters
voice_call_request_id |
integer required | The voice_call_request_id returned by place_goal_driven_call |
get_voice_calling_active
read
Read whether autonomous outbound voice calling to leads is active at the customer level.
Parameters
This tool takes no parameters.
list_voice_calls
read
List the customer's goal-driven phone calls (newest first) with status and outcome summary. Use get_voice_call for the full transcript of one call.
Parameters
page |
integer
optional
default 0
|
Page number (0-based, default 0) |
page_size |
integer
optional
default 20
|
Page size (default 20, max 100) |
place_goal_driven_call
write
Place a REAL phone call to a number the customer gives you, to accomplish a stated goal (e.g. 'call this restaurant and ask if they have a table tonight'). A real-time voice assistant makes the call in the background; this only enqueues the request — the call is placed shortly after and cannot be recalled once dialing. Poll get_voice_call with the returned voice_call_request_id for the outcome (status, goal_achieved, summary, transcript); the result also arrives as a platform notification.
Parameters
phone_number |
string required | The phone number to call, international format e.g. +5511999999999 |
goal |
string required | The goal of the call in plain language and the customer's language — exactly what to accomplish or find out |
context |
string optional | Optional background/context: who is being called and any helpful info |
set_campaign_voice_calling_active
write
Enable or disable autonomous outbound voice calls for a specific campaign, overriding the customer-level toggle for that campaign only.
Parameters
campaign |
string required | Name of the campaign |
active |
boolean required | True to enable, false to disable, for this campaign |
set_voice_calling_active
write
Enable or disable autonomous outbound voice calls to leads at the customer level. Separate from email prospecting.
Parameters
active |
boolean required | True to enable, false to disable |
WhatsApp line
Register and inspect the prospecting WhatsApp line, set its monthly and daily cost caps, and update its business profile.
get_whatsapp_line
read
Get the customer's WhatsApp prospecting line — the one-stop status/diagnostic read: whether it is live/ready to send, its number, quality rating, full WhatsApp business profile, the pending one-click Meta signup link (when the customer still needs to connect their WhatsApp Business Account), any ACTIVE HEALTH ISSUE with the exact fix the customer must apply (payment method, reconnect link, Meta restriction), and the day- and month-to-date WhatsApp spend vs the customer's daily and monthly cost caps. Refreshes the live snapshot from Meta first.
Parameters
This tool takes no parameters.
register_whatsapp_line
write
Register a dedicated WhatsApp prospecting line (a real WhatsApp number). Provisioning is automatic and takes a few minutes. If the customer already has a line, returns that line instead of creating another (one line per customer). Requires an active paid plan that includes WhatsApp prospecting. By default Eesier provides a brand-new number; pass use_own_number=true when the customer wants to prospect from their OWN WhatsApp number — they then receive a one-click Meta link whose official popup connects their WhatsApp Business Account (or creates one), lets them pick which of their numbers to use, or verifies a new number on the spot.
Parameters
use_own_number |
boolean
optional
default false
|
True when the customer wants to use their OWN WhatsApp number instead of a new Eesier-provided one. Default false. |
set_whatsapp_daily_cost_cap
write
Set (or clear) the customer's daily WhatsApp prospecting spending cap, in BRL. Meta bills WhatsApp conversation fees to the customer's own account, so this cap lets the customer decide the maximum they want to spend per day. When the cap is reached, paid (conversation-opening) WhatsApp messages pause until the next day — replies to leads who message first keep working, and email prospecting is unaffected. Pass 0 or a negative value to remove the cap. The current spend and cap are visible on get_whatsapp_line.
Parameters
daily_cap_brl |
number required | Maximum daily WhatsApp spend in BRL (e.g. 20.00). 0 or negative removes the cap. |
set_whatsapp_line_profile_picture
write
Set the WhatsApp line's profile picture from a public image URL or an already-uploaded customer file. Square JPG/PNG, at least 192x192, under 5MB. The line must already be live.
Parameters
image_url |
string optional | Public URL of the image (square JPG/PNG, >=192x192, <=5MB) |
customer_file_id |
integer optional | Id of an already-uploaded customer file to use as the picture. Preferred when the user uploaded an image. |
set_whatsapp_monthly_cost_cap
write
Set (or clear) the customer's monthly WhatsApp prospecting spending cap, in BRL. Meta bills WhatsApp conversation fees to the customer's own account, so this cap lets the customer decide the maximum they want to spend per calendar month. When the cap is reached, paid (conversation-opening) WhatsApp messages pause until the 1st of the next month — replies to leads who message first keep working, and email prospecting is unaffected. Pass 0 or a negative value to remove the cap. The current spend and cap are visible on get_whatsapp_line.
Parameters
monthly_cap_brl |
number required | Maximum monthly WhatsApp spend in BRL (e.g. 150.00). 0 or negative removes the cap. |
update_whatsapp_line_profile
write
Update the WhatsApp line's business profile. Only provided fields change. The line must already be live. Display name is not managed here.
Parameters
about |
string optional | Short 'about' text (max 139 chars) |
description |
string optional | Business description (max 512 chars) |
address |
string optional | Business street address |
email |
string optional | Business contact email |
websites |
string optional | Business website URLs, comma-separated (WhatsApp shows at most 2) |
vertical |
string optional | Business category (WhatsApp vertical), e.g. PROF_SERVICES, RETAIL, EDU, HEALTH, FINANCE, RESTAURANT, OTHER |
Business profile
What the account sells and to whom. Read the profile, read the agent's assessment of it, and rewrite it.
get_business
read
Returns the customer's business profile: name, description, website, ideal customer profile, and default presentation URL.
Parameters
This tool takes no parameters.
get_business_assessment
read
Read the last business-fundamentals assessment Blue Button's internal advisor recorded for this customer: verdict, results probability, the full assessment JSON, when it was made, and the customer's known paying-client examples. Read-only data — bring your own analysis on top of it; there is no tool to re-run the assessment.
Parameters
This tool takes no parameters.
set_business
write
Updates the customer's business profile. Pass only the fields you want to change. Fields: business_name, business_description, business_website, ideal_customer_profile, paying_customer_examples. For the files the prospecting agent sends to leads (presentation, price table, ...), use the prospecting-file tools (register_prospecting_file / list_prospecting_files).
Parameters
business_name |
string optional | Business name |
business_description |
string optional | Business description |
business_website |
string optional | Business website URL |
ideal_customer_profile |
string optional | Ideal customer profile text |
paying_customer_examples |
string optional | Real paying-customer examples the ICP and the business advisor reason from |
Business files
The reference material the agent reads to understand the business — register, list and remove it.
list_business_files
read
List the business-knowledge files registered for this customer, with each file's indexing state and campaign scope.
Parameters
This tool takes no parameters.
register_business_file
write
Register text (or an already-uploaded customer file) as business knowledge so the prospecting agents can answer questions about the business (services, processes, pricing, FAQs). The content is chunked + embedded in the background and becomes searchable shortly. Provide either text or customer_file_id.
Parameters
title |
string required | Short descriptive title, e.g. 'Tabela de precos 2026' |
text |
string optional | Raw text to register as business knowledge (use when the content was pasted directly) |
customer_file_id |
integer optional | Id of an existing customer file to register (find it with list_business_files or the file list) |
campaign |
string optional | Optional campaign name to scope this knowledge to one campaign. Leave empty for customer-level knowledge shared across every campaign. |
remove_business_file
destructive
Remove a registered business-knowledge file and its indexed chunks so the agents stop answering from it. Find the id with list_business_files.
Parameters
business_file_id |
integer required | Id of the business knowledge file to remove |
FAQ
The questions leads keep asking: the answered business FAQ, and the ones still open waiting for an answer.
list_business_faq
read
List the business FAQ — every question-and-answer pair the platform has accumulated about this business (each answer given via answer_lead_question lands here, and the prospecting agents use it to answer leads). Read it before asking the user something that may already be answered.
Parameters
This tool takes no parameters.
list_open_lead_questions
read
List the questions LEADS asked that the agent could not answer and that are still waiting for the business owner's input. High-value loop: surface these to the user, get the answers, then record each via answer_lead_question (pass the open_question_id) — every answer improves all future lead conversations.
Parameters
This tool takes no parameters.
Suggestions
Ask the platform to draft targeting for you — an ideal customer profile, or the activity codes to include and exclude.
generate_cnae_exclusion_suggestion
read
Generate suggested CNAE exclusion codes based on an ideal customer profile and business description. These codes identify competitors and bad-fit industries to exclude from prospecting. Only works for Brazilian customers. Returns codes without saving — use set_targeting to save.
Parameters
icp_text |
string optional | ICP text to analyze. If omitted, uses the customer's current ICP. |
generate_cnae_suggestion
read
Generate suggested CNAE inclusion codes based on an ideal customer profile. CNAE codes are used to target specific industries in Brazilian lead prospecting. Only works for Brazilian customers. Returns codes without saving — use set_targeting to save.
Parameters
icp_text |
string optional | ICP text to analyze. If omitted, uses the customer's current ICP. |
generate_icp_suggestion
read
Generate an ideal customer profile (ICP) suggestion based on the customer's business information. Uses AI to analyze the business and suggest who the ideal customers are. Returns the suggestion without saving it — use set_business to save.
Parameters
This tool takes no parameters.
Reference lookups
Search the platform's own knowledge base before answering any question about how it works, and resolve activity codes and cities.
lookup_city
read
Look up a Brazilian city code (código IBGE) from a city name. Only works for Brazilian customers. Returns matching cities. Used for city-based prospecting filters.
Parameters
city_name |
string required | City name to search for (e.g. 'São Paulo', 'Curitiba') |
lookup_cnae
read
Look up a CNAE code's name and description. CNAE (Classificação Nacional de Atividades Econômicas) is the Brazilian industry classification system. Only works for Brazilian customers. Provide a code to get its name at division (2-digit), group (3-digit), class (5-digit), or subclass (7-digit) level.
Parameters
code |
string required | CNAE code (e.g. '62' for IT division, '6201' for software development group, '6201501' for software development subclass) |
search_knowledge
read
Search the Blue Button knowledge base for authoritative answers about how the platform works — pricing, plans, onboarding, targeting capabilities, email sending, takeovers, reports, privacy, cancellation, and every other platform-specific question. Uses semantic RAG (embedding similarity) over curated knowledge pieces, so the query can be a natural-language question, a keyword, or a topic. ALWAYS call this tool whenever the user asks anything specific about Blue Button — never improvise from general knowledge. Returns the top matches with title, content, and similarity score.
Parameters
query |
string required | Natural-language query describing what the user wants to know about Blue Button (e.g. 'how much does it cost', 'can I target by company size', 'what happens when I take over a lead', 'international prospecting'). |
top_k |
integer
optional
default 3
|
Number of top results to return. Default 3. Use a higher value (up to 10) when the question is broad or you want multiple angles. |
min_score |
number
optional
default 0.7
|
Minimum similarity score threshold (0.0–1.0). Default 0.7. Lower values return more results but may be less relevant. |
Blacklist
Never contact these again: block and unblock e-mail addresses, whole domains and phone numbers.
add_blacklisted_domain
write
Add a whole DOMAIN to the blacklist. Every email at that domain (e.g. [email protected]) is blocked. Do not pass a full email address — use add_blacklisted_email for that.
Parameters
domain |
string required | The domain to blacklist, e.g. 'acme.com'. Subdomains are not auto-included. |
reason |
string optional | Reason: Competitor, Client, or Other |
add_blacklisted_email
write
Add a single email address to the blacklist. Blacklisted emails never receive prospecting messages. To block an entire company, use add_blacklisted_domain instead.
Parameters
email |
string required | The email address to blacklist |
reason |
string optional | Reason: Competitor, Client, or Other |
add_blacklisted_phone
write
Add a PHONE NUMBER to the blacklist. The number never receives a WhatsApp message or a voice call. Digits are kept and everything else is stripped, so any formatting is accepted.
Parameters
phone |
string required | The phone number to blacklist, in any format (e.g. '+55 11 99999-9999') |
reason |
string optional | Reason: Competitor, Client, or Other |
list_blacklisted_emails
read
List blacklisted entries (individual emails, whole domains and phone numbers) with their reason and times-blocked count. Paginated — 'total' reports the full list size.
Parameters
page |
integer
optional
default 0
|
Page number (0-based, default 0) |
page_size |
integer
optional
default 50
|
Entries per page (default 50, max 200) |
remove_blacklisted_domain
destructive
Remove a whole DOMAIN from the blacklist, allowing addresses at that domain to receive prospecting messages again.
Parameters
domain |
string required | The domain to remove from the blacklist, e.g. 'acme.com' |
remove_blacklisted_email
destructive
Remove a single email address from the blacklist, allowing it to receive prospecting messages again.
Parameters
email |
string required | The email address to remove from the blacklist |
remove_blacklisted_phone
destructive
Remove a PHONE NUMBER from the blacklist, allowing it to receive WhatsApp messages and voice calls again.
Parameters
phone |
string required | The phone number to remove from the blacklist, in any format |
Account settings
Timezone, user name, preferences, call permission, notification e-mails, sending e-mail settings, sender domain setup, and tax data.
get_email_settings
read
Get the customer's Blue Button email settings: the full address, handle, display name, and notification instructions.
Parameters
This tool takes no parameters.
get_general_settings
read
Get the customer's general account settings: voice mode, autonomous-message sending, account email, and timezone offset.
Parameters
This tool takes no parameters.
get_notification_emails
read
Get the email addresses currently set for autonomous prospecting notifications and daily reports.
Parameters
This tool takes no parameters.
lookup_municipality_code
read
Look up the 7-digit IBGE municipality code for a Brazilian city. Returns all matches when the city exists in multiple states. Use before update_tax_info.
Parameters
city_name |
string required | Brazilian city name (accent-insensitive) |
state |
string optional | Optional state — 2-letter UF (RS, SP...) or full Portuguese name — to disambiguate |
set_agent_phone_call_permission
write
Get or set whether the agent may place outbound phone calls to the customer. Omit 'enabled' to read the current value; pass true/false to change it.
Parameters
enabled |
boolean optional | True to allow calls, false to block. Omit to just read the current value. |
set_email_notification_instructions
write
Set the free-text rules that decide which inbound emails deserve an immediate notification to the customer. Pass an empty string to clear them and fall back to the default behaviour.
Parameters
instructions |
string required | Rules describing which inbound emails warrant an immediate heads-up (empty to clear) |
set_personal_email
write
Set the account's own personal email address — the single address tied to the account itself, distinct from the comma-separated prospecting notification list managed by update_notification_emails.
Parameters
email |
string required | The account owner's personal email address |
set_timezone
write
Set the customer's timezone by telling the agent the current local hour (0-23, 24h format). The offset is computed from UTC.
Parameters
current_hour |
integer required | Hour part of the customer's current local time, 0-23 (24h format) |
setup_custom_domain
write
Set up, verify, or remove a custom-domain email address (e.g. [email protected]). Requires an active paid plan. action: 'activate' (needs email_address), 'verify', or 'remove'.
Parameters
action |
string required | 'activate' to set a new custom email, 'verify' to check DNS, 'remove' to remove it |
email_address |
string optional | The full custom email address, e.g. '[email protected]'. Required for 'activate'. |
setup_email_subdomain
write
Set up or verify a custom email subdomain (e.g. yourcompany.eesiermail.com). Requires an active paid plan. action: 'activate' (needs subdomain) or 'verify'.
Parameters
action |
string required | 'activate' to set a new subdomain, 'verify' to check DNS verification status |
subdomain |
string optional | The subdomain name, e.g. 'mycompany'. Required for 'activate'. |
update_email_settings
write
Update the Blue Button email handle (the part before @, max 20 chars, unique) and/or the display name shown in outgoing emails. Pass at least one field.
Parameters
handle |
string optional | New email handle (lowercase, no spaces, max 20 chars). Accents/invalid chars are stripped. |
display_name |
string optional | New display name for outgoing emails (the 'From' name recipients see) |
update_notification_emails
write
Set the email address(es) for autonomous prospecting notifications and daily reports (comma-separated). The first address also becomes the account email.
Parameters
emails |
string required | Email address(es) for notifications, comma-separated |
update_preferences
write
Update customer preferences: language, whether to show the business on the Blue Button website, and push notifications. Pass at least one field.
Parameters
language_key |
string optional | Language key, e.g. pt-BR, en-US, es-AR |
show_on_website |
boolean optional | Whether to show the business on the Blue Button website |
push_notifications |
boolean optional | Whether push (console) notifications are enabled |
update_tax_info
write
Update tax/invoice information. Pass whichever fields need updating. Tax document must be CPF (11 digits) or CNPJ (14 digits); CEP must be 8 digits; municipality code must be a valid 7-digit IBGE code (use lookup_municipality_code first).
Parameters
tax_name |
string optional | Tax-registered name (company or person) |
tax_document |
string optional | Tax document, digits only: CPF (11) or CNPJ (14) |
street |
string optional | Street name |
number |
string optional | Address number |
neighborhood |
string optional | Neighborhood |
cep |
string optional | Postal code (CEP, 8 digits) |
municipality_code |
integer optional | IBGE municipality code (7 digits) |
update_user_name
write
Update the customer's display name.
Parameters
name |
string required | The new name for the customer |
Team members
Who else is on the account — add, list and remove members.
add_member
write
Add another person (an additional phone number) to this account. They get their own conversation with the agent but full shared access to the same company, settings, and prospecting. Fails if the phone number already belongs to any account.
Parameters
name |
string required | The person's name |
phone_number |
string required | The person's phone number in international format, e.g. +5511999999999 |
email |
string optional | Optional email — when set, they receive copies of email notifications (interested/confirmed-lead emails) |
list_members
read
List everyone on this account: the account owner plus any additional people that were added.
Parameters
This tool takes no parameters.
remove_member
destructive
Remove an additional person from this account, identified by name or phone number. The account owner cannot be removed.
Parameters
name_or_phone |
string required | The name or phone number of the person to remove |
Access tokens
Manage the tokens that authenticate this connection: list them, issue a new one, revoke one.
generate_mcp_token
write
Create a new MCP access token for this account. The token value is returned ONCE and never again — pass it to the caller immediately and tell them to store it securely.
Parameters
label |
string optional | A short label naming what will use this token, e.g. 'n8n workflow' |
list_mcp_tokens
read
List the account's MCP access tokens. The token values themselves are never returned — only the id, label, creation date, last-used date and whether the token has been revoked.
Parameters
This tool takes no parameters.
revoke_mcp_token
destructive
Revoke an MCP access token so it can no longer connect. Use list_mcp_tokens to find the token_id. Revoking the token the caller is currently authenticated with immediately ends their own access.
Parameters
token_id |
integer required | The id of the token to revoke, from list_mcp_tokens |
Events & webhooks
The account event feed with a cursor, plus outbound webhook subscriptions — create, list, test and delete them.
create_webhook_subscription
write
Register an HTTPS webhook endpoint that receives account events as they happen (signed POSTs) — for automation systems the customer runs (Agent SDK apps, n8n, Zapier, custom backends). The signing secret is returned ONCE in this response — store it securely. Note: this does NOT push into this MCP session; agents that can only poll should use list_account_events instead.
Parameters
url |
string required | The HTTPS endpoint to POST events to |
event_types |
string optional | Comma-separated event types to deliver (optional; default = all). Same values as list_account_events. |
description |
string optional | A short label for this subscription (e.g. 'my n8n flow') |
delete_webhook_subscription
destructive
Delete a webhook subscription — deliveries to its endpoint stop immediately. Irreversible (create a new subscription to resume; it will get a new secret).
Parameters
subscription_id |
integer required | Subscription ID (from list_webhook_subscriptions) |
list_account_events
read
Poll the account's event feed — new lead replies (email/WhatsApp), leads flagged for review, leads becoming interested/confirmed, meetings booked/cancelled, voice calls finished, imports finished, support answered. Cursor-paged: pass the next_cursor from the previous call to get only what happened since. This is about ACCOUNT ACTIVITY — not calendar events (list_calendar_events / list_calendly_upcoming_events) and not one lead's history (list_lead_lifecycle_events).
Parameters
since_cursor |
integer
optional
default 0
|
Return only events with id greater than this (0 = from the beginning of the feed). Use the next_cursor from the previous call. |
event_types |
string optional | Comma-separated event types to include (optional; default = all). Valid: lead_replied_email, lead_replied_whatsapp, lead_sent_for_human_review, lead_became_interested, lead_confirmed, meeting_booked, meeting_cancelled, voice_call_finished, import_finished, support_request_answered |
limit |
integer
optional
default 50
|
Max events to return (default 50, max 200) |
list_webhook_subscriptions
read
List the account's webhook subscriptions with delivery health (last success/failure, consecutive failures, disabled state). Secrets are never shown again.
Parameters
This tool takes no parameters.
test_webhook_subscription
write
Send a signed test 'ping' event to a webhook subscription's endpoint so the customer can verify their receiver and signature check. The delivery result appears in list_webhook_subscriptions (date_last_success / last_failure_reason) within ~1 minute.
Parameters
subscription_id |
integer required | Subscription ID (from list_webhook_subscriptions) |
CRM integrations
Connect and disconnect a CRM, check sync status, force a resync, map custom fields, and manage the Apollo, Lusha and RD Station links.
connect_crm
write
Connect a CRM integration. Each CRM needs different credentials: Pipedrive (api_key), RdStation (marketing_api_key and/or crm_token), HubSpot (access_token), Odoo (url + database + username + api_key), Omie (app_key + app_secret), Agendor/ExactSales/Piperun/Venttra (api_token), SystemeIo (api_key). Requires an active paid plan. The credential is LIVE-VERIFIED against the provider before being stored (a bad key returns an error and stores nothing); the response's 'verified' field says whether verification was possible — ExactSales, Piperun, Venttra, and the RdStation marketing key are write-only APIs and are stored unverified.
Parameters
crm_name |
string required | CRM name: Pipedrive, RdStation, HubSpot, Odoo, Omie, Agendor, ExactSales, Piperun, SystemeIo, Venttra |
api_key |
string optional | API key (Pipedrive, Odoo, SystemeIo) |
api_token |
string optional | API token (Agendor, ExactSales, Piperun, Venttra) |
access_token |
string optional | Access token (HubSpot) |
url |
string optional | URL (Odoo) |
database |
string optional | Database name (Odoo) |
username |
string optional | Username (Odoo) |
app_key |
string optional | App key (Omie) |
app_secret |
string optional | App secret (Omie) |
marketing_api_key |
string optional | Marketing API key (RdStation) |
crm_token |
string optional | CRM token (RdStation) |
pipeline_id |
integer optional | Pipeline id deals are created in (Pipedrive) |
funnel_id |
integer optional | Funnel id deals are created in (Agendor) |
disconnect_crm
destructive
Disconnect a CRM integration by clearing its credentials.
Parameters
crm_name |
string required | CRM name: Pipedrive, RdStation, HubSpot, Odoo, Omie, Agendor, ExactSales, Piperun, SystemeIo, Venttra |
get_crm_sync_status
read
Show how many leads have been synced to each connected CRM: synced, pending, and stuck counts, the last sync time, and a few recently-synced lead names.
Parameters
This tool takes no parameters.
list_crm_integrations
read
List all CRM integrations with their connection status, the minimum lead status filter for CRM sync, and the configured custom fields.
Parameters
This tool takes no parameters.
manage_apollo_integration
write
Connect or disconnect the Apollo lead-source integration. Requires an active paid plan. action: 'connect' (needs api_key) or 'disconnect'. The api_key is live-verified against Apollo before being stored — a bad key returns an error and stores nothing.
Parameters
action |
string required | Action: connect or disconnect |
api_key |
string optional | Apollo API key (required for connect) |
list_id |
string optional | Apollo list id to sync leads from (optional) |
manage_crm_custom_fields
write
Manage custom fields sent with every lead to CRM integrations. action: 'list', 'add' (needs field_name + field_value), or 'remove' (needs field_id).
Parameters
action |
string required | Action: list, add, or remove |
field_name |
string optional | Field name (required for 'add') |
field_value |
string optional | Field value (required for 'add') |
field_id |
integer optional | Field id (required for 'remove') |
manage_lusha_integration
write
Connect or disconnect the Lusha lead-source integration. Requires an active paid plan. action: 'connect' (needs api_key) or 'disconnect'. The api_key is live-verified against Lusha before being stored — a bad key returns an error and stores nothing.
Parameters
action |
string required | Action: connect or disconnect |
api_key |
string optional | Lusha API key (required for connect) |
list_id |
string optional | Lusha list id to sync leads from (optional) |
manage_rd_station_crm_lead_source
write
Enable or disable importing RD Station CRM contacts as prospecting leads. Requires an active paid plan and the RD Station CRM token to already be connected (use connect_crm). action: 'enable' (optionally scoped by pipeline_id and deal_stage_id so only contacts attached to deals there are imported) or 'disable'. Enabling live-verifies the stored token against RD Station CRM first. Does not affect the outbound lead-to-CRM sync.
Parameters
action |
string required | Action: enable or disable |
pipeline_id |
string optional | RD Station CRM deal pipeline id to limit the import to (optional; omit to import all contacts) |
deal_stage_id |
string optional | RD Station CRM deal stage id inside the pipeline to limit the import to (optional; requires pipeline_id) |
resync_crm_leads
write
Manually re-queue eligible leads that have not yet been sent to the CRM so the background sync retries them. Already-synced leads are never re-sent (no duplicates). The send happens in the background within a few minutes.
Parameters
This tool takes no parameters.
update_crm_minimum_status
write
Set the minimum lead status required before a lead is synced to the CRM (Pending, Cold, Confirmed, Aware, NotInterested, Interested). Omit 'status' to clear the filter and sync all leads.
Parameters
status |
string optional | Minimum lead status for CRM sync. Omit to sync all leads. |
Calendly
Connect Calendly, pick the event type leads get booked into, and read upcoming bookings.
disconnect_calendly
destructive
Disconnects the customer's Calendly account: deletes the webhook subscription on Calendly's side, revokes the access token, and clears all stored Calendly fields. Pass user_has_confirmed=true only when the user has explicitly confirmed they want to disconnect.
Parameters
user_has_confirmed |
boolean required | Must be true — the agent must have explicit user confirmation before disconnecting. |
get_calendly_connection_url
read
Returns the URL the user must click to connect their Calendly account to Eesier. Share this URL with the user — they open it, sign into Calendly, click Authorize, and the connection is established server-side. After the user completes the flow, call get_calendly_status again to confirm. Idempotent: returns the same URL whether or not Calendly is already connected (so the user can reconnect a different account).
Parameters
This tool takes no parameters.
get_calendly_event
read
Returns full details for a specific scheduled Calendly event, including the list of invitees with their names, emails, status, and any answers they gave to scheduling questions. Use this for follow-up questions about a specific meeting after list_calendly_upcoming_events.
Parameters
event_uri |
string required | Full Calendly scheduled event URI (e.g. 'https://api.calendly.com/scheduled_events/<uuid>'). Get it from list_calendly_upcoming_events. |
get_calendly_status
read
Returns the current Calendly connection status for the customer: whether OAuth is connected, the connected Calendly account email, and which event type (if any) is selected as the default for prospecting links.
Parameters
This tool takes no parameters.
list_calendly_event_types
read
Lists all active event types in the customer's Calendly account (e.g. '15-min intro call', '30-min consultation'). Each entry includes uri (use this when calling set_calendly_default_event_type), name, slug, duration_minutes, scheduling_url, and is_default. Required: Calendly must be connected first.
Parameters
This tool takes no parameters.
list_calendly_upcoming_events
read
Lists scheduled Calendly events on the customer's calendar within a date range. Use this for 'what's on my agenda' / 'do I have any meetings tomorrow' style requests. Returned `start_utc`/`end_utc` come back in UTC — pull `timezone_offset_utc_hours` from `whoami` and convert before showing them to the user. Calendly imposes a 100-day max range.
Parameters
start_date |
string optional | Start of the window in YYYY-MM-DD format (UTC, inclusive). Defaults to today's UTC date if omitted. |
end_date |
string optional | End of the window in YYYY-MM-DD format (UTC, INCLUSIVE — events at any time on this day are returned). Defaults to 7 days after start_date. |
status |
string
optional
default active
|
Status filter: 'active' (default — confirmed bookings) or 'canceled'. |
set_calendly_default_event_type
write
Sets the default Calendly event type. The default is the event type Blue Button uses when generating scheduling links inside lead conversations. Pass either event_type_uri (preferred — get it from list_calendly_event_types) or event_type_name (fuzzy-matched against active event types). Pass empty event_type_uri to clear the default.
Parameters
event_type_uri |
string optional | Full Calendly event type URI (preferred). Pass empty string to clear the current default. |
event_type_name |
string optional | Or the event type's display name — fuzzy-matched against the customer's active event types. Used only when event_type_uri is not provided. |
Google Calendar
Connect Google Calendar and work the calendar itself: list, create, update, delete and respond to events.
create_calendar_event
write
Create a Google Calendar event. Times are UTC — convert the customer's local time using timezone_offset_utc_hours from whoami BEFORE calling. Returns the event id and a Meet link when one was generated.
Parameters
summary |
string required | Event title |
start_utc |
string required | Event start in UTC, ISO format (e.g. 2026-07-10T14:00:00Z) |
end_utc |
string required | Event end in UTC, ISO format |
attendees |
string optional | Comma-separated attendee emails |
calendar_id |
string
optional
default primary
|
Calendar ID (default 'primary') |
delete_calendar_event
destructive
Delete a Google Calendar event. This cancels the event for all attendees and cannot be undone.
Parameters
event_id |
string required | ID of the calendar event |
calendar_id |
string
optional
default primary
|
Calendar ID (default 'primary') |
get_google_connection_url
read
Get the OAuth URL for the customer to connect their Google account (required for the Google Calendar tools). Share the URL with the user; the connection completes server-side after they authorize. Idempotent — also works for reconnecting.
Parameters
This tool takes no parameters.
list_calendar_events
read
List the customer's Google Calendar events for one calendar day (UTC). Returns start/end in UTC ISO format.
Parameters
date |
string required | The day to list, yyyy-MM-dd (interpreted in UTC) |
calendar_id |
string
optional
default primary
|
Calendar ID (default 'primary') |
respond_calendar_event
write
Accept or decline a Google Calendar event invitation on the customer's behalf.
Parameters
event_id |
string required | ID of the calendar event |
accept |
boolean required | true to accept the invitation, false to decline |
calendar_id |
string
optional
default primary
|
Calendar ID (default 'primary') |
update_calendar_event
write
Update a Google Calendar event (title, times, attendees). Pass only the fields to change. Times are UTC.
Parameters
event_id |
string required | ID of the calendar event |
summary |
string optional | New event title |
start_utc |
string optional | New start in UTC, ISO format |
end_utc |
string optional | New end in UTC, ISO format |
attendees |
string optional | New comma-separated attendee emails (replaces the current list) |
calendar_id |
string
optional
default primary
|
Calendar ID (default 'primary') |
Google Ads
The paid side: campaigns, budgets, billing, performance reports, diagnostics, ad groups, keywords, negatives, search ads and audiences.
add_google_ads_keywords
write
Add keywords to an ad group in a Google Ads campaign. One keyword per line in the keywords parameter (keywords may contain commas). match_type: Broad, Phrase, or Exact (default Broad).
Parameters
campaign |
string required | The campaign name or id |
ad_group_id |
integer required | The ad group id (from list_google_ads_ad_groups) |
keywords |
string required | The keywords to add, ONE PER LINE |
match_type |
string optional | Match type: Broad (default), Phrase, or Exact |
add_google_ads_negative_keywords
write
Add CAMPAIGN-LEVEL negative keywords to a Google Ads campaign (searches these terms will never trigger ads). One keyword per line. match_type: Broad (default), Phrase, or Exact.
Parameters
campaign |
string required | The campaign name or id |
keywords |
string required | The negative keywords to add, ONE PER LINE |
match_type |
string optional | Match type: Broad (default), Phrase, or Exact |
create_google_ads_campaign_draft
write
Create a NEW Google Ads campaign as a DRAFT. It does NOT serve until the customer recharges its balance via the returned console recharge_url — share that link and never claim the campaign is live. channel_type: Search (default) or PerformanceMax (only recommend PMax after a Search campaign has real conversion data).
Parameters
name |
string required | The campaign name as it will appear in Google Ads |
daily_budget_brl |
number required | Daily budget in BRL (positive, e.g. 20) |
channel_type |
string optional | Channel type: Search (default) or PerformanceMax |
create_google_ads_search_ad
write
Create a Responsive Search Ad in an ad group of a Google Ads campaign. Headlines max 30 chars each, descriptions max 90 chars each — ONE PER LINE. Provide at least 3 headlines and 2 descriptions.
Parameters
campaign |
string required | The campaign name or id |
ad_group_id |
integer required | The ad group id (from list_google_ads_ad_groups) |
final_url |
string required | The landing page URL the ad clicks through to |
headlines |
string required | The ad headlines, ONE PER LINE, max 30 characters each |
descriptions |
string required | The ad descriptions, ONE PER LINE, max 90 characters each |
diagnose_google_ads_campaign
read
Diagnose why a Google Ads campaign is (or isn't) serving: live serving status, primary status with reasons, and per-ad approval/review status.
Parameters
campaign |
string required | The campaign name or id |
get_google_ads_audience_status
read
Get a Google Ads campaign's Customer Match audience status: how many emails were on the last upload, when, and whether the list is attached.
Parameters
campaign |
string required | The campaign name or id |
get_google_ads_billing
read
Read Google Ads billing/funding data for a campaign's account. section: AccountInfo, AccountBudgets, BillingSetups, Proposals, Invoices (needs year+month), or CampaignBudgets.
Parameters
campaign |
string required | The campaign name or id |
section |
string required | Section: AccountInfo, AccountBudgets, BillingSetups, Proposals, Invoices, CampaignBudgets |
year |
integer optional | Invoice issue year (Invoices only) |
month |
integer optional | Invoice issue month 1-12 (Invoices only) |
get_google_ads_campaign
read
Get one Google Ads campaign's full detail: lifecycle status, hold reason, funding balance, the stored performance snapshot (spend, impressions, clicks, conversions, CTR, CPC), and the console management/recharge link. Pass the campaign name or id.
Parameters
campaign |
string required | The campaign name or id (from list_google_ads_campaigns) |
get_google_ads_keyword_ideas
read
Get keyword ideas with search volume from Google's Keyword Planner for a campaign. Provide seed keywords (one per line) and/or a page URL to extract ideas from.
Parameters
campaign |
string required | The campaign name or id |
seed_keywords |
string optional | Seed keywords, ONE PER LINE |
page_url |
string optional | A page URL to extract keyword ideas from |
max_results |
integer
optional
default 50
|
Max results (default 50) |
get_google_ads_performance_report
read
Pull a LIVE Google Ads performance report for a campaign. report_type: Campaign (totals), AdGroup, Keyword (with quality score), Ad, SearchTerms (what users actually searched), Daily, Device, Conversion, ImpressionShare (share of impressions + % lost to budget vs rank), AdAssets (per-headline/description LOW/GOOD/BEST labels), Hourly, Geographic, Demographics. Costs in BRL.
Parameters
campaign |
string required | The campaign name or id |
report_type |
string required | Report type: Campaign, AdGroup, Keyword, Ad, SearchTerms, Daily, Device, Conversion, ImpressionShare, AdAssets, Hourly, Geographic, Demographics |
date_range |
string optional | Date range: a preset (LAST_7_DAYS, LAST_30_DAYS, LAST_90_DAYS, THIS_MONTH, LAST_MONTH) or a custom 'yyyy-MM-dd AND yyyy-MM-dd' window. Default LAST_30_DAYS. |
list_google_ads_ad_groups
read
List a Google Ads campaign's ad groups (id, name, status, CPC bid). Ad-group ids are needed for the keyword and ad tools.
Parameters
campaign |
string required | The campaign name or id |
list_google_ads_campaigns
read
List the customer's Google Ads campaigns with status, channel type, daily budget, hold reason, and balance (recharged, spent, remaining) — all in BRL. The entry point: call this first, then pass a returned name or id to the other google_ads tools.
Parameters
This tool takes no parameters.
list_google_ads_keywords
read
List the keywords of one ad group in a Google Ads campaign (text, match type, status, CPC bid, quality score).
Parameters
campaign |
string required | The campaign name or id |
ad_group_id |
integer required | The ad group id (from list_google_ads_ad_groups) |
nudge_google_ads_provisioning
write
Re-run the go-live provisioning gate for a Google Ads campaign that seems stuck after being funded (nudges the provisioning state machine forward).
Parameters
campaign |
string required | The campaign name or id |
refresh_google_ads_audience
write
Re-upload the Google Ads campaign's Customer Match audience from the customer's current lead emails (keeps the remarketing list fresh). Returns the number of emails uploaded.
Parameters
campaign |
string required | The campaign name or id |
set_google_ads_campaign_status
destructive
Pause, resume, or END a Google Ads campaign. Resume is gated on remaining balance + at least one enabled ad (and keyword for Search). END IS IRREVERSIBLE — it removes the campaign in Google Ads; get the customer's explicit confirmation before ending.
Parameters
campaign |
string required | The campaign name or id |
action |
string required | Action: Pause, Resume, or End (End is irreversible) |
sync_google_ads_spend
write
Refresh a Google Ads campaign's spend from the live Google API (updates the stored snapshot and funding math). Call this before quoting spend or balance numbers to the customer.
Parameters
campaign |
string required | The campaign name or id |
update_google_ads_campaign_budget
write
Update a Google Ads campaign's daily budget (BRL). Returns the effective value after platform clamping.
Parameters
campaign |
string required | The campaign name or id |
new_daily_budget_brl |
number required | The new daily budget in BRL |
Websites
Register a site and change it by conversation: settings, subdomain, source code, snapshots and restores, screenshots, and crawling.
archive_website
destructive
Archive (remove) a website.
Parameters
website_id |
integer required | Id of the website to archive |
cancel_website_change
destructive
Cancel the ongoing (unfinished) change request for a website.
Parameters
website_id |
integer required | Id of the website |
change_website
write
Request a change to a website. The change is queued and rendered in the background — this returns immediately with a code id; poll get_website for completion.
Parameters
website_id |
integer required | Id of the website to change |
prompt |
string required | Prompt describing the desired change |
data_storage_required |
boolean
optional
default false
|
True if the change requires data storage (a database) |
ignore_existing_code |
boolean
optional
default false
|
True to ignore the existing code and rebuild from scratch (full overhaul) |
reasoning_mode |
string optional | Coding agent reasoning: Fast (simple changes, default) or Thinking (complex changes) |
generation_type |
string optional | Generation type: Fast (default) or Quality |
change_website_subdomain
write
Change a website's subdomain (the part before .eesier.website).
Parameters
website_id |
integer required | Id of the website |
new_subdomain |
string required | New subdomain part without the .eesier.website suffix (letters, numbers, hyphens only) |
crawl_website
read
Fetch the raw HTML of a webpage, split into 1000-character chunks navigable by index.
Parameters
url |
string required | URL of the webpage to fetch |
chunk_index |
integer
optional
default 0
|
Index of the chunk to return (starting at 0) |
create_website_snapshot
write
Create a snapshot of a website's current code, tagged with a description, so it can be restored later.
Parameters
website_id |
integer required | Id of the website |
snapshot_description |
string required | Description for the snapshot |
export_website_code
write
Export a website's current code to an HTML file and email it to the given address.
Parameters
website_id |
integer required | Id of the website |
email_address |
string required | Destination email address |
get_website
read
Get full information about one website: title, URL, type, language, generation status, and code-editor link.
Parameters
website_id |
integer required | Id of the website |
get_website_code
read
Get the HTML code of a specific website code entry.
Parameters
website_code_id |
integer required | Id of the website code entry |
get_website_settings
read
Get a website's configurable settings (title, language, restriction, agent guidelines).
Parameters
website_id |
integer required | Id of the website |
list_website_code
read
List the successful code generations for a website (without the HTML itself), newest first.
Parameters
website_id |
integer required | Id of the website |
list_website_snapshots
read
List a website's snapshots (saved code versions), newest first.
Parameters
website_id |
integer required | Id of the website |
list_websites
read
List all of the customer's websites with their generation status, URL, and code-editor link.
Parameters
This tool takes no parameters.
register_website
write
Register a new AI-generated website. Generation runs in the background — this returns immediately with an id; poll get_website / list_websites for the finished URL and status.
Parameters
description |
string required | Concise but complete description of the website: purpose, main features, target audience, style, and what it sells/promotes |
language |
string required | Language code in xx-xx form, e.g. pt-br, en-us |
application_type |
string optional | Application type: Website (default) or LeadCapturePage. For an interactive site with logins/dashboards, keep Website and set data_storage_required=true. |
generation_type |
string optional | Generation type: Fast (default, simpler sites) or Quality (slower, better for complex sites) |
data_storage_required |
boolean
optional
default false
|
True if the site needs persistent data storage (accounts, orders, dashboards); false for static sites. Default false. |
restricted |
boolean
optional
default false
|
True to restrict the site behind a login page; false for public. Default false. |
copy_from_website_id |
integer optional | Optional id of another of this customer's websites to copy code from |
business_or_brand_name |
string optional | Optional name of the existing business/brand the site is for (triggers online research for content and branding) |
restore_website_snapshot
destructive
Restore a snapshot (or any past code entry) as the website's current code.
Parameters
website_code_id |
integer required | Id of the website code entry to restore |
screenshot_website
write
Take a screenshot of any public URL and analyze it with AI. Saves the screenshot as a customer file and returns the analysis + public image URL. Optionally emails the screenshot.
Parameters
url |
string required | Public URL to capture |
prompt |
string required | Prompt/instructions for the AI analysis |
viewport_width |
integer
optional
default 1366
|
Viewport width in px (default 1366) |
viewport_height |
integer
optional
default 768
|
Viewport height in px (default 768) |
send_to_email |
string optional | Optional email address to send the screenshot to |
screenshot_file_name |
string optional | Optional one-word file name for the screenshot |
set_website_settings
write
Update a website's settings. Pass only the fields you want to change.
Parameters
website_id |
integer required | Id of the website |
title |
string optional | Website title (max 60 characters) |
language_key |
string optional | Language key, e.g. pt-BR, en-US |
restricted |
boolean optional | Whether the website is restricted behind a login |
guidelines |
string optional | Persistent guidelines for how the agent should work on this website |
Lead capture pages
The inbound side: create capture pages, change them, list them and archive them.
archive_lead_capture_page
destructive
Archive (remove) a lead-capture page.
Parameters
lead_capture_page_id |
integer required | Id of the lead-capture page |
change_lead_capture_page
write
Request a change to a lead-capture page. The change is queued and rendered in the background — this returns immediately with a code id.
Parameters
lead_capture_page_id |
integer required | Id of the lead-capture page |
prompt |
string required | Prompt describing the desired change |
create_lead_capture_page
write
Create a lead-capture page. Generation runs in the background — this returns immediately with an id; poll list_lead_capture_pages for the finished URL.
Parameters
description |
string required | Concise but complete description: what info to capture, target audience, the offer/value proposition, and any design preferences |
language |
string required | Language code in xx-xx form, e.g. pt-br, en-us |
list_lead_capture_pages
read
List all of the customer's lead-capture pages with their generation status and URL.
Parameters
This tool takes no parameters.
Media
Generate images, drawings and videos, edit a video, and read back everything already generated.
create_video
write
Generate a short AI video from a text prompt and an optional first-frame reference image. Renders in the background — this returns immediately with an id; poll list_videos for the finished video_url.
Parameters
prompt |
string required | The video prompt |
model |
string optional | Engine: SeedancePro, SeedanceProFast (default), Grok |
reference_image_url |
string optional | Optional first-frame image URL (absolute https). The video animates from this image. |
duration |
integer optional | Duration in seconds (clamped per engine) |
aspect_ratio |
string optional | Aspect ratio, e.g. 16:9, 9:16, 1:1, 4:3 |
resolution |
string optional | Resolution: 480p, 720p, or 1080p |
edit_video
write
Generate a new video that iterates on a previously generated one. When no reference_image_url is given, the first-frame strategy decides how the starting frame is produced.
Parameters
video_id |
integer required | Id of the previously generated video to iterate on |
prompt |
string required | The new video prompt |
model |
string optional | Engine: SeedancePro, SeedanceProFast (default), Grok |
reference_image_url |
string optional | Optional new first-frame image URL (absolute https). Overrides the strategy. |
first_frame_strategy |
string optional | How to handle the first frame: KeepPreviousFirstFrame (default), EditPreviousFirstFrame, GenerateBrandNewFirstFrame |
duration |
integer optional | Duration in seconds (clamped per engine) |
aspect_ratio |
string optional | Aspect ratio, e.g. 16:9, 9:16, 1:1, 4:3 |
resolution |
string optional | Resolution: 480p, 720p, or 1080p |
generate_drawing
write
Generate a drawing (shapes, wireframes, page layouts, diagrams, tables, charts, grids, vector shapes, maps). Runs in the background — this returns immediately with an id; poll list_drawings for the finished image_url.
Parameters
prompt |
string required | Description of the drawing to generate |
caption |
string optional | Optional caption to accompany the delivered image |
reference_image_url |
string optional | Optional absolute https URL of a reference image to send with the prompt |
drawing_id |
integer optional | Optional id of an existing drawing to edit/iterate on |
generate_image
write
Generate an image from a text prompt (or edit existing images by passing reference URLs). Generation runs in the background — this returns immediately with an id; poll list_images for the finished image_url.
Parameters
prompt |
string required | Prompt describing the image to generate |
aspect_ratio |
string optional | Image format: Square (1:1), Landscape (wider), or Portrait (taller). Default Square. |
transparent |
boolean
optional
default false
|
Transparent background (default false) |
reference_image_urls |
string optional | Comma-separated absolute https URLs of reference images to send with the prompt |
profile |
string optional | Optimization profile: None, SocialMediaInstagramPostFeed, SocialMediaInstagramPostStories. Default None. |
model |
string optional | Generation model: OpenAI (default), BytePlus. Don't change unless the user asks. |
get_drawing
read
Get one generated drawing by id — the poll target for generate_drawing. Shows the generation status and, once finished, the image_url.
Parameters
drawing_id |
integer required | The drawing_id returned by generate_drawing |
get_image
read
Get one generated image by id — the poll target for generate_image. Shows the generation status and, once finished, the image_url.
Parameters
image_id |
integer required | The image_generation_id returned by generate_image |
get_video
read
Get one generated video by id — the poll target for create_video/edit_video (list_videos only shows FINISHED videos, so poll this for in-progress ones). is_finished=true with a video_url means done; is_finished=true without a URL means the render failed.
Parameters
video_id |
integer required | The video_id returned by create_video or edit_video |
list_drawings
read
List generated drawings (newest first, paginated). Includes each drawing's generation status and, once finished, its image_url.
Parameters
page |
integer
optional
default 1
|
Page number (1 = first page) |
page_size |
integer
optional
default 10
|
Page size (default 10, max 50) |
list_images
read
List generated images (newest first, paginated). Includes each image's generation status and, once finished, its image_url.
Parameters
page |
integer
optional
default 1
|
Page number (1 = first page) |
page_size |
integer
optional
default 10
|
Page size (default 10, max 50) |
list_videos
read
List previously generated videos (newest first, paginated). Only successfully finished videos with a URL are returned.
Parameters
page |
integer
optional
default 1
|
Page number (1 = first page) |
page_size |
integer
optional
default 10
|
Page size (default 10, max 50) |
Online research
Queue a research task on the open web and read the result when it is done.
get_online_search
read
Get one online search's status and result.
Parameters
online_search_id |
integer required | Id of the online search |
list_online_searches
read
List the customer's most recent online searches (up to 10, newest first) with their status.
Parameters
This tool takes no parameters.
register_online_search
write
Register an online research job. It runs in the background — this returns immediately with an id; poll get_online_search for the result. Optionally emails the result when finished.
Parameters
query |
string required | The query to research online |
send_to_email |
string optional | Optional email address(es), comma-separated, to send the result to when finished |
type |
string optional | Search depth: Fast, Standard (default), or Deep |
Support
The private line to the eesier team — open a request and read the ones already open.
create_support_request
write
Open a direct line to the Blue Button support team. This is YOU, the connected agent, talking to the support and engineering team directly — use it to ask a question or report an issue on your own initiative in the background (the end user is NOT notified), or when the user explicitly asks you to contact support. Specify the type (technical, sales, human, or question) and severity (low/medium/high/critical). The team's reply comes back to you — read it later with list_support_requests.
Parameters
message |
string required | What you want to ask or report to the Blue Button team |
type |
string required | Request type: 'technical' (product/technical issue), 'sales' (commercial, billing, plan — the customer wants a sales rep to reach out), 'human' (the customer asks for a human contact, no specific reason), or 'question' (a simple information request you cannot answer yourself) |
severity |
string required | How urgent it is: 'low', 'medium', 'high', or 'critical' |
list_support_requests
read
List the customer's support requests — your thread with the Blue Button team — with each request's status, type, severity, and the team's answer (null until they reply). Filter by status: pending, answered, closed, or all (default all).
Parameters
status |
string
optional
default all
|
Status filter: pending, answered, closed, or all (default all) |
Incidents
Read the platform incidents that affect this account.
list_incidents
read
Lists platform incidents (outages / degradations / instabilities) reported by the Blue Button team, each with its public update timeline. Returns ongoing (active) incidents and recently resolved past ones. Call this when the user asks whether the platform is having problems, or when tool calls are failing unexpectedly — an active incident usually explains the failures.
Parameters
scope |
string optional | Which incidents to return: 'active' (ongoing only), 'past' (resolved only) or 'all' (default) |
limit |
integer optional | Max past incidents to return (default 10, max 50) |
Frequently asked questions
Is this list always up to date?
Do I need to read this to use eesier?
Can my agent do anything I cannot do myself?
What happens if I revoke a token?
Are the descriptions here the same ones my agent sees?
connect in 2 minutes
Talk to eesier on WhatsApp and ask for MCP.
Talk to eesierno signup required :)