Vendo AI

com.vendo-aiPublished by vendo-ai.comOfficial publisherv1.0.0Updated Oct 26, 2026

Autonomous AI sales: agents, signal-based prospecting, outreach, CRM — 149 tools.

VerifiedStreamable HTTPWeb executableBusiness & CommerceMedia & DesignAI & ML

Overview

AI-generated overview

Vendo AI's remote MCP server lets an assistant build, script, voice and publish AI sales, support and info agents, plus their website widgets and slide…

What you can do
  • Create and configure agents: create, update, set avatar, company facts, contact channels and integrations
  • Write and test agent content: generate or replace scripts, upload and remove learning documents, test replies, generate knowledge from a URL
  • Scan websites: list pages, write page descriptions, run deep scans of a company site and LinkedIn, poll job status
  • Manage channels: create, update, preview and delete website widgets, buttons, presentations, Google Meet, phone and Telegram channels, and get embed code
  • Presentations: read and save slides, generate slide scripts, set presenter voice and look, generate transition phrases
  • Analytics and conversations: channel stats, widget analytics…
When to use it
Use it when you want an assistant to set up or maintain Vendo AI sales, support or info agents end to end — writing scripts, uploading materials, scanning a company website, publishing widgets and reviewing conversations — instead of clicking through the Vendo AI app.
Requirements
A remote endpoint at api.vendo-ai.com over streamable HTTP. Requires a Vendo AI account and an API key sent as a bearer token in the Authorization header, created in the app under Settings, API & MCP. Credit balance is needed for several operations.
Before you install
Many tools spend credits from your Vendo AI balance (for example deep scans at 15 credits, script generation at 1, presentation voice at 17 credits per minute); check costs and preview before running. Several tools overwrite or delete data with no undo: scripts, slides, company description, and channel deletion. Deep scans read your company website and LinkedIn and save extracted company, team and contact data. Conversations and voice-call recordings of visitors are exposed. The API key grants…

Installation

In SourceWeft

  1. Open Vendo AI in the dashboard and add it to a workspace.
  2. Connect Authorization token credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/com.vendo-ai%2Fvendo-ai/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "vendo-ai": {
      "type": "http",
      "url": "https://api.vendo-ai.com/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}

Tools

200

create_agent

Create a new agent

Create an AI agent like step 1 of the app's builder. Choose its direction: purpose "sales" (default), "support" or "info". The agent starts in DRAFT and contacts nobody. Needs at least 1 credit on the balance (checked, not charged). Fails with a plan-limit error when all agent slots are used (see get_agent_plan_limits). Next: set_agent_company → generate_agent_script → channels.

Parametersnamerequiredgenderpurposedescriptionavatar_preset

update_agent

Update agent basics

Change an agent's name, description, direction (purpose), voice gender or preset face. Only the fields you pass change. Company name/website/description → set_agent_company; contacts → set_agent_contact_channels. Free.

Parametersidrequirednamegenderpurposedescriptionavatar_preset

set_agent_avatar_from_url

Set the agent's own photo

Upload a custom avatar photo (JPG, PNG or GIF, ≤5 MB) from a public image URL or base64. Replaces the preset face. Free.

Parametersidrequiredimage_urlimage_base64

set_agent_contact_channels

Set the contacts the agent hands out

Set the meeting link, presentation link, email, phone, WhatsApp, Telegram and up to 10 custom links that the agent gives to visitors (also shown as screen cards). MERGE: only the channels you pass change; pass "" (or null for custom_links) to clear one. Write, free.

Parametersidrequiredemailphonetelegramwhatsappmeeting_urlcustom_linkspresentation_url

list_voice_catalog

List voices (Voice v2 catalogue)

All voices for the website widget, Slide Presenter and Telegram voice: engine, gender, accent, expressive support, Ukrainian support, recommended flag, preview audio. Read-only. Use a voice_id from here in set_agent_voice / set_presentation_voice / set_telegram_voice_settings.

Takes no parameters.

set_agent_voice

Turn on / configure the website-widget voice

Configure the voice of the agent's website widget exactly like the app's widget settings page and create/update the voice agent at the voice provider, so voice calls in the widget really work. Only the settings you pass change (the rest keep their saved values or the app defaults). voice_id is required the first time (list_voice_catalog). Takes up to ~1 min. Free to configure; widget voice calls cost 14 credits/min.

Parametersidrequiredllmrulesspeedvolumeambientemotionhandbookvoice_idlanguagesend_call_sbackchannel+10 more

test_agent_reply

Ask the agent a test question (text)

Send a message to the agent and get its reply using its current script — a text test, nobody is contacted. Needs a generated script. Use history for a multi-turn test.

Parametersidrequiredhistorymessagerequired

update_agent_script

Edit the agent's script stages

Replace the script stages (rename, reorder, edit, add or remove stages) and optionally the tone, like the builder's script editor. Send the FULL list of stages you want; the full text is rebuilt from them. Get the current stages from get_agent (script_sections). Free.

Parametersidrequiredsectionsrequiredemail_scriptscript_style

add_agent_document

Attach a knowledge file to the agent

Upload a material the agent learns from (PDF, DOC, DOCX, TXT, XLS, XLSX, CSV, PPT, PPTX, KEY; ≤10 MB) from a public URL or base64. Used the next time the script is generated (generate_agent_script). Free.

Parametersidrequiredfile_urlfilenamerequiredfile_base64

remove_agent_document

Remove a knowledge file from the agent

Remove an uploaded material from the agent (see get_agent → documents[].url). Free.

Parametersidrequiredurlfilename

generate_knowledge_from_url

Turn a web page into a knowledge block

Read a public web page and return a knowledge text block about it. Costs 1 credit. NOT saved — append the result to company_description with set_agent_company if you want the agent to know it.

Parametersidrequiredurlrequired

scan_agent_website

Scan the agent's website structure

List the pages of a website (path, title, description, keywords) for this agent — used by the page-navigation feature. Costs 2 credits. Read-only for the agent (nothing saved).

Parametersidrequiredwebsite_urlrequired

generate_agent_page_descriptions

Describe website pages with AI

Write AI descriptions + keywords for website pages (output of scan_agent_website). Costs 1 credit per 5 pages. Not saved.

Parametersidrequiredpagesrequired

generate_support_script

Generate a support knowledge script (legacy)

Legacy support-script generator of the old text-widget creators. Prefer generate_agent_script with purpose "support". Needs company name + description. Costs 1 credit.

Parametersidrequired

generate_transition_phrases

Generate slide transition phrases

Generate the phrases the Slide Presenter uses to move between slides, in the presentation's language, and save them on the agent. Needs saved slides (set_presentation_slides).

Parametersidrequired

set_agent_integrations

Set legacy integration flags

Legacy flags on the agent (zoom_enabled, google_meet_enabled, website_embed_enabled). Channels are managed with the connection tools; this does not connect anything. Free.

Parametersidrequiredzoom_enabledgoogle_meet_enabledwebsite_embed_enabled

preview_deep_scan

Preview a deep website scan

Show what deep_scan_agent would do: cost (15 credits), duration (60-180 s) and what gets saved. Nothing runs. ALWAYS call first and get the user's approval.

Parametersidrequiredpersistcompany_namecompany_website

deep_scan_agent

Deep-scan the company website (15 credits)

Read the company website + LinkedIn and extract description, team, employee count, contacts, social links and pricing. Costs 15 credits, takes 60-180 s. With persist=true (default) the result is SAVED like in the app: company_description replaced, team/contacts/social/pricing stored (creates company + people records, fills blank contact channels). Waits up to ~200 s; if still running it returns a job_id — then call get_agent_job. Only call after preview_deep_scan and the user's approval.

Parametersidrequiredpersistauto_updatecompany_namecompany_website

get_agent_job

Get a long job (deep scan / script) result

Status and result of a deep scan or script generation job started by deep_scan_agent / generate_agent_script (kept 1 hour). Poll every 10-20 s while status is "running". Read-only.

Parametersidrequiredjob_idrequired

list_agent_jobs

List recent long jobs of an agent

Deep scans and script generations of this agent in the last hour (status only) — use when a job_id was lost. Read-only.

Parametersidrequired

save_scan_data

Save scan facts onto the agent

Save company facts (team, contacts, social links, pricing, employee count, auto re-scan) onto the agent — what the app does after a scan. Side effects: stores them in the agent, creates/updates the company and people records, fills BLANK contact channels (never overwrites manual ones). Not needed after deep_scan_agent with persist=true. Free.

Parametersidrequiredpricingcontactsdirectorsauto_updatecompany_namerequiredsocial_linksemployee_countcompany_websiterequired

generate_agent_description

Draft the company description from the website

AI-write "what the agent knows" about the company from its website (no full scan). Costs 1 credit. NOT saved — pass the text to set_agent_company (company_description).

Parametersidrequiredcompany_namecompany_websitetarget_language

generate_agent_script

Generate the agent's script

Generate the agent's script (stages + full text + email/LinkedIn script) in the chosen tone for its direction (sales / support / info), using the company description and uploaded files. Saves it on the agent (overwrites). Costs 1 credit, takes 60-90 s. Needs company_name and company_description (set_agent_company). If it is still running after ~200 s you get a job_id → get_agent_job.

Parametersidrequiredpurposescript_stylerequired

get_agents_dashboard

Legacy agents dashboard numbers

Older overview numbers of all agents (superseded by get_analytics_agents). Read-only.

Takes no parameters.

get_agent_connection

Get one channel of an agent

Full settings of one channel (website widget, button, presentation, Google Meet, phone, Telegram). Read-only.

Parametersidrequiredconnection_idrequired

create_agent_connection

Add a channel to an agent

Add a channel. WEBSITE_WIDGET needs website_url; new widgets get the app defaults (Modern design) plus your widget_config — then get_widget_embed_code. WEBSITE_BUTTON: just creates the channel (style it in get_widget_embed_code). PRESENTATION_WIDGET = publish the Slide Presenter (optional website_url). GOOGLE_MEET: prefer connect_google_meet. PHONE_CALL: prefer setup_phone_agent. Telegram → connect_telegram_bot; WhatsApp → connect_whatsapp_account. A second widget for the same URL updates the existing one. Free. Interactive cards in chat need design "modern"; in voice they need set_agent_voice screen_cards=true.

Parametersidrequirednametyperequiredwebsite_urlwidget_configphone_call_configgoogle_meet_config

update_agent_connection

Change a channel's settings

Change a channel: website widget look and behaviour (design, colours, button picture, invitation/auto-open, sounds, contact form and its wording, greetings, page navigation, voice view), name, website_url, Google Meet settings or phone texts. Only what you pass changes; widget texts and theme are merged. Free.

Parametersidrequirednamewebsite_urlconnection_idrequiredwidget_configphone_call_configgoogle_meet_config

preview_delete_agent_connection

Preview removing a channel

Show what removing a channel would do. Nothing is removed. ALWAYS call first and show the user before delete_agent_connection.

Parametersidrequiredconnection_idrequired

delete_agent_connection

Remove a channel (irreversible)

Remove a channel from the agent (the embed code stops working). No undo. Only after preview_delete_agent_connection and explicit user approval.

Parametersidrequiredconnection_idrequired

get_agent_connection_stats

Channel counters

Conversations, messages, unique visitors, last activity of one channel. For widgets prefer get_connection_analytics (fresher). Read-only.

Parametersidrequiredconnection_idrequired

get_connection_analytics

Widget/button channel analytics

For a website widget/button/presentation channel: widget loaded, activated, chats started, voice calls started, plus estimated credits (text messages, voice minutes) for a date range. Read-only.

Parametersidrequireddate_todate_fromconnection_idrequired

get_widget_embed_code

Get the embed code of a channel

HTML to paste on a site for a channel: website widget (settings load from the server), website button (style it here: text, colours, radius, size — not stored server-side) or Slide Presenter (also the direct link). Read-only.

Parametersidrequiredsizetexttext_colorborder_radiusconnection_idrequiredbackground_colormodal_primary_color

create_widget_test_page

Create a test page for a widget

Create (or return the existing) private, unlisted test page with this website widget installed, to try it before adding it to a real site. Only the agent's creator can do this. Free.

Parametersidrequiredconnection_idrequired

list_connection_conversations

List conversations of a channel

Conversations of a widget/presentation channel with messages, mode (chat/voice), visitor name/email/phone and page. Paged (limit ≤500). Read-only.

Parametersidrequiredpagelimitconnection_idrequired

get_conversation_recordings

Get voice recordings of a conversation

Recording URLs (WAV), duration and start time of the voice calls in one widget conversation (up to 10 calls). Read-only.

Parametersidrequiredconnection_idrequiredconversation_idrequired

get_presentation

Get the agent's Slide Presenter

The agent's presentation: PDF name, slides (text + presenter script; images with include_images), look, call-to-action, presenter voice, published channels and direct link. Read-only. (list_agent_presentations shows only the legacy creator.)

Parametersidrequiredinclude_images

set_presentation_slides

Save the presentation slides

Save the slide deck — REPLACES all slides (add, remove, reorder, edit). Each slide: image (public URL or base64; JPG/PNG/WebP/GIF ≤5 MB; omit to keep the stored image of an existing slide id), extracted text and presenter script. PDF upload is not supported by the API: render the PDF pages to images first. Then write scripts with generate_slide_script and set_presentation_voice. Free.

Parametersidrequiredslidesrequiredpdf_name

generate_slide_script

Write the presenter script for a slide

AI-write what the presenter says on one slide, in the presentation's language. 1 credit (2 with image_url — the AI looks at the slide). NOT saved — put it into narrator_script with set_presentation_slides.

Parametersidrequiredimage_urlslide_numberrequiredtotal_slidesrequiredextracted_textnext_slide_textprevious_script

set_presentation_voice

Set the presenter's voice

The Slide Presenter's own voice and model (the website widget voice is not touched). Same settings as the app; only what you pass changes. Needs saved slides. Takes up to ~1 min. Free to configure; presentation voice costs 17 credits/min.

Parametersidrequiredllmrulesspeedvolumeambientemotionhandbookvoice_idlanguagesend_call_sbackchannel+10 more

set_presentation_look

Set the presentation look & behaviour

Theme, colours, corner radius, controls, autoplay, voice on/off, chat on/off, Modern look (background, glass, font, panel side, presenter bubble, voice visual), slide transition and button texts. Only what you pass changes. Free.

ParametersidrequiredtextsthemedesignmodernautoplaytextColortransitionbuttonColorchatEnabledborderRadiusshowControls+4 more

set_presentation_cta

Set the presentation call-to-action

The button viewers see: a lead form (fields) or a link. Only what you pass changes (fields replaces the whole field list). Leads land in list_narrator_leads. Free.

ParametersidrequiredtypefieldsenabledlinkUrlbuttonTextsuccessMessagelinkOpenInNewTab

get_presentation_embed_code

Get the presentation embed code & link

Direct link (narrator page) and the HTML snippet with the saved look. Publish it as a channel first (create_agent_connection type PRESENTATION_WIDGET). Read-only.

Parametersidrequired

list_agent_presentations

List legacy presentations

Presentations made with the OLD presentation creator (deprecated). The current Slide Presenter is in get_presentation. Read-only.

Parametersidrequired

get_narrator_analytics

Presentation analytics

Slide Presenter analytics. view "summary" (default): views, presentations started, watch time, unique viewers, average duration, completion rate, recent sessions, per channel. view "period" with date_from/date_to: widget loads, starts, watch minutes, unique viewers, credits used. Read-only. (No per-slide drop-off.)

Parametersidrequiredviewdate_todate_from

list_narrator_leads

List presentation leads

Leads from the presentation call-to-action form (form data, page, status, notes). Filter by status, page with limit/offset. Read-only.

Parametersidrequiredlimitoffsetstatus

update_narrator_lead

Update a presentation lead

Set a presentation lead's status (new / contacted / converted / spam) and notes. Free.

Parametersidrequirednotesstatuslead_idrequired

preview_delete_narrator_lead

Preview deleting a presentation lead

Show the lead that would be deleted. Nothing is deleted. Call first and show the user before delete_narrator_lead.

Parametersidrequiredlead_idrequired

delete_narrator_lead

Delete a presentation lead (irreversible)

Permanently delete a presentation lead. Only after preview_delete_narrator_lead and explicit user approval.

Parametersidrequiredlead_idrequired

connect_google_meet

Connect Google Meet (invite address)

Turn on the Google Meet channel the way the app does: returns the agent's own invite address ([email protected]). Invite that address to any Google Calendar event with a Meet link and the agent joins automatically. No Google login needed. Also saves the meeting settings. Free to connect; meeting minutes are billed.

Parametersidrequiredlanguageauto_joinmeeting_modegreeting_messagejoin_before_minutes

get_google_meet_settings

Get Google Meet status & settings

Whether Google Meet is connected for this agent, its invite address, settings and totals. Read-only.

Parametersidrequired

update_google_meet_settings

Change Google Meet settings

Auto-join, minutes before start, greeting, language, meeting mode (voice only / presentation — needs slides). Only what you pass changes. Free.

Parametersidrequiredlanguageauto_joinmeeting_modegreeting_messagejoin_before_minutes

preview_disconnect_google_meet

Preview disconnecting Google Meet

Show what disconnecting Google Meet would do. Nothing changes. Call first and show the user.

Parametersidrequired

disconnect_google_meet

Disconnect Google Meet

Remove the Google Meet channel from the agent and turn auto-join off. Already scheduled meetings are not cancelled (use cancel_meeting). Only after preview_disconnect_google_meet and user approval.

Parametersidrequired

list_google_meet_history

Meeting history of an agent

All meetings of this agent (newest first) with status, times, duration, whether a transcript exists. Paged. Read-only.

Parametersidrequiredpagelimit

get_google_meet_analytics

Google Meet analytics of an agent

Meetings, minutes, completed, missed and credits used for a date range. Read-only.

Parametersidrequireddate_todate_from

list_meetings

Meetings calendar (all agents)

Google Meet meetings of all your agents in a date range (default: next 7 days, max 62 days) — title, time, link, organizer, attendees, status, agent, has transcript. Read-only.

Parametersendstartagent_id

list_meeting_agents

Agents with Google Meet

Agents that have Google Meet connected (the calendar's agent filter). Read-only.

Takes no parameters.

get_meeting

Get a meeting

One meeting with transcript, summary, action items, join/leave time and duration. Read-only.

Parametersmeeting_idrequired

get_meeting_transcript

Get a meeting transcript

Transcript messages, summary and action items of a meeting (from the database or the recording service). Read-only.

Parametersmeeting_idrequired

preview_cancel_meeting

Preview cancelling a meeting for the agent

Show which meeting the agent would skip. Nothing changes. Call first and show the user.

Parametersmeeting_idrequired

cancel_meeting

Cancel a meeting for the agent

The agent will NOT join this scheduled meeting (the calendar event itself stays). Only scheduled, not yet started meetings. No undo. Only after preview_cancel_meeting and user approval.

Parametersmeeting_idrequired

preview_remove_agent_from_meeting

Preview removing the agent from a live call

Show whether the agent is in this live meeting and what removing it does. Nothing changes.

Parametersmeeting_idrequired

remove_agent_from_meeting

Remove the agent from a live call

The agent leaves the live Google Meet call right now. Only works while the meeting is in progress. Only after preview_remove_agent_from_meeting and user approval.

Parametersmeeting_idrequired

set_telegram_voice_calls

Turn Telegram voice calls on/off

Show or hide the VOICE button of the agent's Telegram bot (voice calls in the mini app). Needs a connected bot. Free.

Parametersidrequiredenabledrequired

set_telegram_voice_settings

Set the Telegram voice

Voice and behaviour of the Telegram bot's voice calls (separate from the website widget): the same settings as set_agent_voice plus the mini app look (visual). Only what you pass changes. Needs a connected bot. Takes up to ~1 min. Free to configure; calls are billed per minute.

Parametersidrequiredllmrulesspeedvisualvolumeambientemotionhandbookvoice_idlanguagesend_call_s+11 more

reconfigure_telegram_bot

Re-apply Telegram bot commands

Re-apply the bot's commands and menu button (for private and group chats) — use when the bot menu looks wrong. Free.

Parametersidrequired

list_telegram_chats

List Telegram chats

People/groups talking to the agent's Telegram bot: name, username, type, message count, last message time. Paged. Read-only.

Parametersidrequiredpagelimit

get_telegram_chat

Read a Telegram chat

All messages of one Telegram chat, incl. voice-call turns with recording URL and duration. Read-only.

Parametersidrequiredchat_idrequired

preview_send_telegram_message

Preview an operator Telegram message

Show the recipient and exact text of an operator message. Nothing is sent. ALWAYS call first and show the user the text.

Parametersidrequiredchat_idrequiredmessagerequired

send_telegram_message

Send a Telegram message as the operator

Sends a REAL Telegram message from the bot to this person (human takeover). Only after preview_send_telegram_message and the user approved the exact text.

Parametersidrequiredchat_idrequiredmessagerequired

get_telegram_analytics

Telegram analytics

Chats, messages, voice calls, text messages, unique users and credits (text/voice) of the agent's Telegram bot for a date range. Read-only.

Parametersidrequireddate_todate_from

list_phone_numbers

List my phone numbers

Phone numbers already on your account (number, country, type, monthly cost, per-minute rate). Buying numbers is done in the app. Read-only.

Takes no parameters.

generate_phone_script

Draft a phone call script

Draft a call script and greeting from the agent's sales script for a call objective, in the agent's language. Free. Not saved — pass it to setup_phone_agent (or let setup_phone_agent generate it).

Parametersidrequiredvoice_gendercall_objective

setup_phone_agent

Set up the Voice Call channel

Create/update the agent's Voice Call channel like the app: attach one of YOUR numbers (list_phone_numbers), objective, script (generated if omitted), greeting, voice, pace, emotion, language, rules, inbound calls on/off, background sound, silence/reminder timings. Creates the phone voice agent at the provider and links the number. Takes up to ~1 min. Free to set up; calls cost 25 credits/min.

Parametersidrequiredspeedemotionlanguagevoice_idcall_scriptvoice_genderambient_soundconnection_idcall_objectiveaccept_incomingphone_number_id+6 more

preview_phone_test_call

Preview a test call

Show which number would be called from which, and the cost (25 credits/min, max 2 min). Nothing is dialled. ALWAYS call first.

Parametersidrequiredto_numberrequiredconnection_id

phone_test_call

Make a test call (real phone)

DIALS A REAL PHONE: the agent calls to_number from the channel's number (max 2 min, 25 credits/min). Only call the user's own number, only after preview_phone_test_call and explicit approval.

Parametersidrequiredto_numberrequiredconnection_id

list_phone_calls

List the agent's phone calls

Phone calls of this agent (incl. test and inbound) with transcript, recording URL, summary, outcome, sentiment, duration and credits, plus totals by outcome/sentiment. Read-only.

Parametersidrequiredlimit

get_phone_channel_stats

Voice Call channel counters

Calls attempted/completed/successful, minutes and credits of one Voice Call channel. Read-only.

Parametersidrequiredconnection_idrequired

list_whatsapp_accounts

List WhatsApp accounts

WhatsApp accounts connected to your user (phone, name, status: connecting / ok / error / credentials / stopped). Account-level: auto-replies use your latest campaign's agent. Read-only.

Takes no parameters.

connect_whatsapp_account

Get a WhatsApp connect link

Returns a hosted link; the user opens it and scans the QR code with WhatsApp (Linked devices). Poll list_whatsapp_accounts until status is "ok". Free.

Takes no parameters.

preview_disconnect_whatsapp_account

Preview disconnecting WhatsApp

Show the WhatsApp account that would be disconnected. Nothing changes. Call first.

Parametersaccount_idrequired

disconnect_whatsapp_account

Disconnect WhatsApp (irreversible)

Disconnect and delete the WhatsApp account; auto-replies stop and reconnecting needs a new QR scan. Only after preview_disconnect_whatsapp_account and user approval.

Parametersaccount_idrequired

list_campaigns

List campaigns

List classic Sales Process campaigns with status and live stats. Archived campaigns are hidden unless include_archived=true. Read-only.

Parametersinclude_archived

get_campaign

Get a campaign

Full campaign: status, settings (all wizard fields), sequence, channel paused flags, channelStatuses, today's sends, stats.totalContacts. Read-only.

Parametersidrequired

create_campaign

Create a campaign (DRAFT, not launched)

Create a classic campaign in DRAFT — nobody is contacted until launch_campaign. Needs an audience (audienceId from save_audience/list_audiences, OR customAudienceId of a READY uploaded/CRM list) and should get an agentId (a campaign cannot be launched without an agent: AGENT_REQUIRED). branchId = CRM branch for replies (crm_list_branches; null = General). Settings (all optional): channels, dailyLimit, dailyEmailLimit, dailyLinkedinLimit, timezone, workingHours, excludeWeekends, campaignDurationDays, customInstructions (Communication Rules incl. form of address), emailSignature, notifyEmails, ccEmail, autoResponseEnabled, autoResponseDelayMinutes, followUpInterval, maxFollowUps, trackOpens, emailSenderMode (managed needs a paid plan), senderEmailIds, emailContent {mode, prompt, tone, variants, htmlSteps, followUps[{delayDays, prompt|subject+body}]}, linkedinContent {mode, invite_prompt, invite_tone, invite_exact_text, followup_delay_minutes, followup_exact_text}, selectedLinkedinAccountIds, linkedinAutoReplyDisabled. Ids are checked against the workspace. Free, no sending.

ParametersnamerequiredagentIdbranchIdsettingsaudienceIddescriptioncustomAudienceId

update_campaign

Update campaign (wizard settings)

Change a campaign's name, description or any wizard setting (partial: send only what changes; settings are merged). agentId and branchId can be changed only while the campaign is a draft. Settings (all optional): channels, dailyLimit, dailyEmailLimit, dailyLinkedinLimit, timezone, workingHours, excludeWeekends, campaignDurationDays, customInstructions (Communication Rules incl. form of address), emailSignature, notifyEmails, ccEmail, autoResponseEnabled, autoResponseDelayMinutes, followUpInterval, maxFollowUps, trackOpens, emailSenderMode (managed needs a paid plan), senderEmailIds, emailContent {mode, prompt, tone, variants, htmlSteps, followUps[{delayDays, prompt|subject+body}]}, linkedinContent {mode, invite_prompt, invite_tone, invite_exact_text, followup_delay_minutes, followup_exact_text}, selectedLinkedinAccountIds, linkedinAutoReplyDisabled. On a running campaign, changed email steps/delays are not applied once anything was sent (settings.smartleadSequencePending). No sending, no credits.

ParametersidrequirednameagentIdbranchIdsettingsdescription

preview_launch_campaign

Preview launching a campaign

Readiness report for launch/resume — NOTHING IS SENT: ready flag, blockers (AGENT_REQUIRED, AUDIENCE_REQUIRED, CLIENT_MAILBOX_NOT_CONNECTED, PAID_PLAN_REQUIRED for Vendo managed senders, INVALID_STATUS), warnings, real recipient count, channels, daily email/LinkedIn limits, sender mode, email steps, schedule and the LinkedIn accounts that will be activated. ALWAYS call this first and show the result to the user before launch_campaign.

Parametersidrequiredlinkedin_account_ids

launch_campaign

Launch / resume a campaign (sends real outreach)

Start (or resume a paused) campaign exactly like the app: starts email sending and queues LinkedIn on the selected (or all connected) accounts. Contacts receive REAL outreach in the working hours; credits are spent as messages go out. Only call AFTER the user reviewed preview_launch_campaign and approved it. Returns the campaign plus linkedin_activation.

Parametersidrequiredlinkedin_account_ids

duplicate_campaign

Duplicate a campaign

Copy a campaign (settings + audience) into a new DRAFT named '<name> (Copy)'. Nothing is sent. Note: the copy re-uses company-based audiences only and has no CRM branch; check get_campaign of the copy before launching.

Parametersidrequired

sync_campaign_stats

Refresh campaign email counters

Pull the latest sent/opened/clicked/replied/bounced counters from the sending provider and store them. Max once per minute per campaign. No credits.

Parametersidrequired

get_campaign_pulse

Campaign pulse (live status)

What the campaign is doing now (sending / idle / outside_hours / paused / queue_empty / done), today vs daily limits, 7–28-day email + LinkedIn series and the latest events. Read-only.

Parametersidrequireddayslimit

get_campaign_live_status

Campaign email progress

Email channel progress: audience size, processed, % complete, event counts, queue depth and provider status / sent today. Read-only.

Parametersidrequired

get_campaign_analytics

Campaign analytics (all campaigns)

Sales Process KPIs for the workspace: totals (campaigns, emails sent, opens, clicks, replies, contacts, rates) and per-campaign performance, optionally for a date range. Read-only. For SDR + campaigns combined use the SDR analytics tool.

Parameterstofrom

preview_campaign_email

Preview a campaign email (first or follow-up #k)

Render the exact email a campaign would send — first email or follow-up #k — with the writing rules, tone, Communication Rules or fixed text. Pass campaign_id to use its saved settings (any field you pass overrides them), or agent_id + rules for an unsaved draft. No sending, no credits.

Parametersmodetonepromptsamplevariantagent_idfollow_upcampaign_idcustom_instructions

preview_campaign_linkedin_invite

Preview a campaign LinkedIn invite

Render the LinkedIn connection note a campaign would send (AI from rules/tone, or fixed text with placeholders), with its length vs the 200-char limit. Pass campaign_id to use saved settings. No sending, no credits.

Parametersmodetonepromptsampleagent_idexact_textcampaign_id

preview_campaign_linkedin_followup

Preview the LinkedIn message after connect

Render the first LinkedIn message sent after an invite is accepted (AI from the agent, or the fixed text with placeholders filled). Pass campaign_id to use saved settings. No sending, no credits.

Parametersmodesampleagent_idexact_textcampaign_id

preview_agent_email

Preview an email the agent would write

Render a sample outreach email from an agent — no sending, no credits. Optional mode/prompt/tone/customInstructions/variant/followUp{index,delayDays,previous}/sample make it render exactly like a campaign would (same as preview_campaign_email).

Parametersidrequired

get_campaign_email_stats

Campaign email funnel incl. delivery

Email funnel: sent, delivered, opened, clicked, replied (real / auto-reply / bounce), bounced; delivery block (delivered vs not delivered: bounced, rejected as spam, unsubscribed; sender inbox-placement test — real inbox vs spam folder is not reported by providers) and unique opened/clicked/replied. Read-only.

Parametersidrequired

list_campaign_emails

List sent / queued / prepared emails

state=sent: emails already sent (filter by status, search by address); state=queued: scheduled/queued emails waiting to go out; state=prepared: pre-generated emails pipeline with status counts and preparation progress. Read-only.

Parametersidrequiredlimitstaterequiredoffsetsearchstatus

prepare_campaign_emails

Pre-generate campaign emails (legacy)

Generate emails for every contact ahead of sending (legacy company-based audiences only; people/custom-audience campaigns prepare automatically after launch). Can take minutes. Nothing is sent. No credits.

Parametersidrequired

retry_campaign_email_preparation

Retry failed email preparation

Put prepared emails that failed validation/generation back in the queue (max 3 attempts each). Nothing is sent.

Parametersidrequired

preview_schedule_campaign_delivery

Preview scheduling prepared emails

Dry-run: how many ready prepared emails would be scheduled into the campaign working hours. Nothing changes. Call before schedule_campaign_delivery.

Parametersidrequired

schedule_campaign_delivery

Schedule prepared emails for delivery

Spread all ready prepared emails over the campaign's working-hour slots; they are then SENT for real automatically. Only after the user approved preview_schedule_campaign_delivery.

Parametersidrequired

preview_send_campaign_emails_now

Preview sending prepared emails now

Dry-run: how many prepared emails would be sent immediately (outside the schedule). Nothing is sent.

Parametersidrequiredlimit

send_campaign_emails_now

Send prepared emails now (REAL emails)

Send up to `limit` prepared emails immediately, ignoring the schedule. REAL emails to real people. Only after the user approved preview_send_campaign_emails_now.

Parametersidrequiredlimit

list_campaign_replies

Campaign replies inbox

Email replies received by a campaign with body and classification: real (a person answered), auto_reply (out of office), bounce. Read-only.

Parametersidrequiredtype

list_campaign_email_leads

Engaged email leads

Recipients with their open/click/reply counts, read live from the sending provider (throttled: once per 15 s per campaign). Read-only.

Parametersidrequiredfilter

get_campaign_email

Open one campaign email

One sent email by email id (from list_campaign_emails / list_campaign_replies): content, recipient, related open/click/reply events, the reply and the conversation. Read-only.

Parametersemail_idrequired

refresh_campaign_email_reply

Reload a reply from the provider

Fetch the latest reply text for an email from the sending provider (when a reply shows as empty). No credits, nothing sent.

Parametersemail_idrequired

preview_reply_to_campaign_email

Preview a manual reply to a lead

Dry-run of replying to a lead's email reply: shows recipient, subject and the exact text. Nothing is sent. Call before reply_to_campaign_email and show the text to the user.

Parametersbodyrequiredemail_idrequired

reply_to_campaign_email

Send a manual reply to a lead (REAL email)

Send the reply immediately in the lead's thread (bypasses daily limits). REAL email. Only after the user approved the exact text from preview_reply_to_campaign_email.

Parametersbodyrequiredemail_idrequired

list_campaign_threads

AI email conversations of a campaign

Conversations the AI is handling for a campaign (filter by status ai_handling|human_takeover|closed and sentiment positive|objection|referral|unsubscribe|neutral), plus counters by status and sentiment. Only threads of the API key's user. Read-only.

Parametersidrequiredlimitoffsetstatussentiment

get_campaign_thread

Open an AI email conversation

One conversation with all messages (AI, human and contact). Read-only.

Parametersthread_idrequired

takeover_campaign_thread

Take over an AI email conversation

Stop the AI from replying in this conversation; a human continues (reply_in_campaign_thread). Nothing is sent.

Parametersthread_idrequired

close_campaign_thread

Close an AI email conversation

Mark the conversation closed (no more AI replies). Nothing is sent.

Parametersthread_idrequired

preview_reply_in_campaign_thread

Preview a human reply in a conversation

Dry-run: recipient, subject (defaults to Re: last subject) and the exact text. Nothing is sent. Call before reply_in_campaign_thread and show the text to the user.

Parametersbodyrequiredsubjectbody_htmlthread_idrequired

reply_in_campaign_thread

Send a human reply in a conversation (REAL email)

Send the email to the contact now. REAL email. Only after the user approved preview_reply_in_campaign_thread. Consider takeover_campaign_thread first so the AI stops answering.

Parametersbodyrequiredsubjectbody_htmlthread_idrequired

get_campaign_monitor

Campaign monitor

Monitor page data: AI lead discovery config + stats, audience growth by day, the last 100 activity events, event counts and credits (balance, spent today/total, daily budget). Read-only.

Parametersidrequired

get_campaign_discovery

Get AI lead discovery config

AI lead discovery settings of a campaign (null when never configured). Read-only.

Parametersidrequired

preview_update_campaign_discovery

Preview AI lead discovery settings

Dry-run of enabling/changing automatic lead discovery: source, daily credit budget, leads/day. Nothing changes. Call before update_campaign_discovery whenever discovery is (or stays) enabled.

Parametersidrequiredenabledrequire_emailsearch_sourcemax_leads_per_dayapollo_search_configmax_total_discoveredsignal_search_configsearch_interval_minutesdaily_discovery_budget_credits

update_campaign_discovery

Enable / change AI lead discovery (SPENDS CREDITS)

Turn on or adjust automatic lead discovery: it runs daily, SPENDS CREDITS up to daily_discovery_budget_credits and adds new leads to the campaign audience. Same args as preview_update_campaign_discovery; only after the user approved that preview. Disabling (enabled=false) needs no preview.

Parametersidrequiredenabledrequire_emailsearch_sourcemax_leads_per_dayapollo_search_configmax_total_discoveredsignal_search_configsearch_interval_minutesdaily_discovery_budget_credits

list_campaign_discovered_leads

Leads found by AI discovery

Leads found by AI lead discovery for a campaign, filterable by status (discovered, enriching, enriched, added_to_audience, rejected, duplicate, enrichment_failed). Read-only.

Parametersidrequiredlimitoffsetstatus

get_campaign_activity

Campaign activity feed

Paged activity events of a campaign (discovery, outreach, engagement, system, billing). Poll it instead of a live stream. Read-only.

Parametersidrequiredlimitoffsetcategory

list_sender_emails

Email senders + capacity

Sending addresses available to this workspace (Vendo managed pool + own mailboxes) with warm-up level, daily limit and status; summary.emails_per_day_ready = capacity in managed mode. Managed senders require a paid plan to launch (summary.paid_plan). Use ids in settings.senderEmailIds. Read-only.

Takes no parameters.

list_client_mailboxes

Own sending mailboxes

The workspace's own connected mailboxes (status connecting|warming|ready|error|disconnected, warm-up reputation, last error). Capacity ≈ 50 emails/day per READY box. Used when settings.emailSenderMode=client_owned (classic campaigns and SDR). Read-only.

Takes no parameters.

connect_client_mailbox

Connect an own mailbox (SMTP/IMAP app password)

Connect the user's OWN mailbox for sending. Requires SMTP/IMAP hosts+ports and an APP PASSWORD, which passes through this conversation: prefer asking the user to connect it in the app (Settings → Email Sending) unless they explicitly give you the password. WARM-UP STARTS IMMEDIATELY: the real mailbox sends and receives warm-up mail. The password is never returned. Gmail: smtp.gmail.com:465 / imap.gmail.com:993; Outlook: smtp.office365.com:587 / outlook.office365.com:993.

Parametersemailrequiredpasswordrequiredproviderfrom_nameimap_hostrequiredimap_portrequiredsmtp_hostrequiredsmtp_portrequired

reconnect_client_mailbox

Reconnect an own mailbox

Retry the SMTP/IMAP connection of a mailbox in status error and refresh its status. No credits.

Parametersmailbox_idrequired

preview_disconnect_client_mailbox

Preview disconnecting an own mailbox

Dry-run: which client_owned campaigns are affected and how many usable mailboxes remain. Nothing changes.

Parametersmailbox_idrequired

disconnect_client_mailbox

Disconnect an own mailbox

Stop using the mailbox as a sender. If none remain, client_owned campaigns cannot send or launch. Only after the user approved preview_disconnect_client_mailbox.

Parametersmailbox_idrequired

list_linkedin_accounts

List connected LinkedIn accounts

LinkedIn accounts of the workspace and their status (ok = can send; ~70–80 invites/day each). detailed=true adds owner/role, campaigns and SDR searches using each account, 7-day activity, prospecting caps, warm-up stage, premium tier and proxy country. Read-only.

Parametersdetailed

get_linkedin_account_settings

LinkedIn account settings

Per-account LinkedIn settings shared by every campaign and SDR process using the account: AI auto-replies (on/off, tone, instructions, pitch, booking link, reply delays, daily limit, working hours, agent, contact info), invites (on/off, tone, pitch, instructions, CTA), follow-ups (on/off, pitch, instructions, CTA) and signature (text, first_message|every_message). The first read creates defaults (pre-filled from campaign_id's agent).

Parametersaccount_idrequiredcampaign_id

update_linkedin_account_settings

Update LinkedIn account settings

Change AI auto-replies, invite / follow-up pitch, CTA, signature, reply delays/limits for ONE LinkedIn account (applies to all campaigns and SDR processes using it). Send only changed fields. To switch AI replies off for a single campaign use update_campaign settings.linkedinAutoReplyDisabled. No credits.

Parameterstoneenabledagent_idtimezoneaccount_idrequiredinvite_ctainvite_tonecalendly_urlcontact_infofollowup_ctainvite_pitchproduct_pitch+13 more

preview_linkedin_account_messages

Sample LinkedIn messages for an account

Sample invite, follow-up and auto-reply plus suggested pitch/signature for an account in a campaign (built from the campaign's agent). No sending, no credits.

Parametersaccount_idrequiredcampaign_idrequired

list_campaign_linkedin_accounts

LinkedIn accounts working a campaign

Accounts working this campaign with per-account counters (pending, invites sent, connected, messaged, replied). Read-only.

Parametersidrequired

add_campaign_linkedin_account

Add a LinkedIn account to a campaign

Add a connected account to a running campaign; pending contacts are rebalanced across accounts and backfilled. It starts sending invites in the next cycles. No credits.

Parametersidrequiredaccount_idrequired

remove_campaign_linkedin_account

Remove a LinkedIn account from a campaign

Stop using an account for this campaign; its pending contacts move to the remaining accounts. Already-sent invites stay.

Parametersidrequiredaccount_idrequired

preview_activate_campaign_linkedin

Preview activating LinkedIn on a campaign

Dry-run: which accounts would get the campaign audience queued, how many contacts and what is already queued. Nothing changes. Call before activate_campaign_linkedin.

Parametersidrequiredaccount_ids

activate_campaign_linkedin

Activate LinkedIn on a campaign

Queue the campaign audience for LinkedIn on the given (or selected/all connected) accounts and add linkedin to the channels. On an active campaign REAL connection invites start within the next cycles. Only after the user approved preview_activate_campaign_linkedin.

Parametersidrequiredaccount_ids

list_campaign_linkedin_outreach

LinkedIn outreach of a campaign

Contacts in the campaign's LinkedIn queue with their status (pending, invite_sent, connected, message_sent, replied, failed, skipped), optionally for one account. Read-only.

Parametersidrequiredlimitoffsetstatusaccount_id

get_campaign_linkedin_stats

LinkedIn stats of a campaign

LinkedIn counters (total, pending, invites sent, connected, messaged, replied, failed), invites sent today, effective daily limit and active accounts; optionally for one account. Read-only.

Parametersidrequiredaccount_id

takeover_linkedin_contact

Take over a LinkedIn contact

Stop the AI from messaging this LinkedIn contact (outreach id from list_campaign_linkedin_outreach or list_linkedin_conversations); pending auto-replies are cancelled. Nothing is sent.

Parametersoutreach_idrequired

list_linkedin_conversations

LinkedIn conversations

LinkedIn chats of the workspace (optionally of one campaign and/or account): contact, last message, pending AI reply, human takeover flag, outreach status. Read-only.

Parameterslimitoffsetaccount_idcampaign_id

get_linkedin_conversation

Open a LinkedIn conversation

All messages of one LinkedIn chat (chat_id from list_linkedin_conversations). Read-only.

Parameterschat_idrequired

preview_send_linkedin_message

Preview a manual LinkedIn message

Dry-run: recipient, exact text, cost (5 credits) and whether the balance suffices. Nothing is sent. Call before send_linkedin_message and show the text to the user.

Parameterstextrequiredchat_idrequired

send_linkedin_message

Send a LinkedIn message (REAL, 5 credits)

Send a REAL LinkedIn message in the chat; costs 5 credits, the AI stops messaging this contact (human takeover) and the CRM lead moves to Manager Dialog. Only after the user approved preview_send_linkedin_message.

Parameterstextrequiredchat_idrequired

preview_activate_campaign_phone

Preview AI phone calls for a campaign

Dry-run of activating the phone channel with numbers the account already owns: numbers, objective, calls/day, window and estimated credits per call/day. Nothing is scheduled. Numbers cannot be bought through the API.

Parametersidrequiredtimezonecall_objectivetalking_pointsexclude_weekendsphone_number_idsrequiredmax_calls_per_dayworking_hours_endworking_hours_startmax_call_duration_seconds

activate_campaign_phone

Activate AI phone calls (REAL calls, credits per minute)

Schedule REAL outbound AI calls to every audience contact with a phone number; credits are charged per call minute. Same args as preview_activate_campaign_phone; only after the user approved that preview. Pause with pause_channel channel=phone_call.

Parametersidrequiredtimezonecall_objectivetalking_pointsexclude_weekendsphone_number_idsrequiredmax_calls_per_dayworking_hours_endworking_hours_startmax_call_duration_seconds

get_campaign_phone_stats

Phone stats of a campaign

Call counters: total, completed, active, pending, no answer, voicemail, failed, interested, meetings booked, not interested, average/total duration. Read-only.

Parametersidrequired

list_campaign_phone_calls

Calls of a campaign

Calls with contact, status, outcome, duration, sentiment, summary and recording URL. Read-only.

Parametersidrequiredlimitoffsetstatus

list_content_accounts

Social publishing accounts

LinkedIn / Instagram accounts connected for publishing posts (Settings → Social), with status. Read-only.

Takes no parameters.

connect_content_account

Get a link to connect a social publishing account

Returns a hosted URL a HUMAN must open in a browser to authorise a LinkedIn or Instagram publishing account. Give the link to the user; nothing is connected until they finish.

Parametersproviderrequiredredirect_path

preview_disconnect_content_account

Preview disconnecting a social publishing account

Dry-run of removing a publishing account. Nothing changes.

Parametersaccount_idrequired

disconnect_content_account

Disconnect a social publishing account

Remove the publishing account; it can no longer publish posts. Only after the user approved preview_disconnect_content_account.

Parametersaccount_idrequired

list_custom_audiences

List My Audiences (custom lists)

List the workspace's custom audiences — uploaded CSV/XLSX lists, purchased audience sets, CRM selections — with status (processing|ready|enriching|error), contact counts and enrichment progress. These are different from campaign audiences (`list_audiences`). Read-only, free.

Parameterspagelimit

get_custom_audience

Get one custom audience

One custom audience: status, counts (with email/phone/LinkedIn), enrichment progress, column mapping and the first 20 contacts. Page through all contacts with `get_custom_audience_contacts`. Read-only, free.

Parametersidrequired

get_custom_audience_contacts

Page through custom audience contacts

Paged contacts of a custom audience (max 100 per page). Contacts added by Vendo SDR carry signal_context (why they were picked: reasoning, relevance score, ICP group). Read-only, free.

Parametersidrequiredpagelimit

create_custom_audience

Create an empty custom audience

Create an empty, named custom audience (status ready) — then fill it with `add_custom_audience_contacts`. To create one from a file use `upload_custom_audience`. No credits.

Parametersnamerequired

rename_custom_audience

Rename a custom audience

Rename a custom audience. Reversible, no credits.

Parametersidrequirednamerequired

add_custom_audience_contacts

Add contacts to a custom audience

Append up to 5000 contacts to a custom audience. Deduplicated inside the audience by email, LinkedIn URL or phone (duplicates and contacts with no email/LinkedIn/phone are skipped). Returns added / skipped / total_contacts. No credits.

Parametersidrequiredcontactsrequired

update_custom_audience_contact

Edit a contact in a custom audience

Edit one contact of a custom audience (only the fields you pass change). No credits.

Parametersidrequiredcityemailphonecountrywebsitepositiontelegramwhatsappfull_namelast_namecontact_idrequired+5 more

preview_delete_custom_audience_contact

Preview removing a contact (dry-run)

Dry-run of removing one contact from a custom audience. Changes nothing. Show the result to the human before `delete_custom_audience_contact`.

Parametersidrequiredreasoncontact_idrequired

delete_custom_audience_contact

Remove a contact from a custom audience

Permanently remove one contact from a custom audience (not reversible). Optional reason (UI choices: Not relevant, Wrong contact, Already a customer, Bad data, Other) is logged to improve automatic selection. Only call after the user approved `preview_delete_custom_audience_contact`.

Parametersidrequiredreasoncontact_idrequired

preview_delete_custom_audience

Preview deleting a custom audience (dry-run)

Dry-run: shows the audience name and how many contacts would be deleted. Changes nothing. ALWAYS call before `delete_custom_audience` and show the result.

Parametersidrequired

delete_custom_audience

Delete a custom audience

Permanently delete a custom audience with all its contacts and source file. NOT reversible. Only call after the user approved `preview_delete_custom_audience`.

Parametersidrequired

preview_custom_audience_file

Detect columns of a contacts file

Step 1 of an upload: send a CSV/XLSX/XLS/TSV/TXT file (base64 or https URL) and get the detected headers, a suggested column mapping, sample rows, total rows and the list of target fields. Creates nothing, no credits. Then call `upload_custom_audience` (optionally with a corrected column_mapping).

Parametersfile_urlfilenamecontent_base64

upload_custom_audience

Create a custom audience from a file

Create a custom audience from a CSV/XLSX/XLS/TSV/TXT file given as base64 or an https URL. Parsing runs in the background: poll `get_custom_audience` until status is "ready". No credits (enrichment is a separate, paid step).

Parametersnamefile_urlfilenamecolumn_mappingcontent_base64

export_custom_audience_csv

Export a custom audience as CSV

Download every contact of a custom audience as CSV text (filename, total_rows, csv). Can be large. Read-only, free.

Parametersidrequired

preview_enrich_custom_audience

Preview enriching a custom audience (cost)

Dry-run of enrichment: how many contacts still need enrichment, the maximum credits (1 per contact), estimated minutes, the current balance and whether it can start. Spends nothing. ALWAYS call first and show the cost to the human.

Parametersidrequired

enrich_custom_audience

Enrich a custom audience (SPENDS CREDITS)

SPENDS CREDITS: starts background enrichment (email, phone, LinkedIn, WhatsApp lookups) of the not-yet-enriched contacts — 1 credit per contact actually enriched, charged as it runs. Only call after the user approved `preview_enrich_custom_audience`. Then poll `get_custom_audience_enrichment`; stop with `stop_custom_audience_enrichment`.

Parametersidrequired

get_custom_audience_enrichment

Enrichment progress of a custom audience

Status and progress of a running (or finished) enrichment: status, enrichment_total, enrichment_done, enrichment_progress (%), done flag. Poll every 10–30 s. Read-only.

Parametersidrequired

stop_custom_audience_enrichment

Stop a running enrichment

Stop an in-progress enrichment after the current contact (stops further spending). Already-enriched contacts stay enriched and charged.

Parametersidrequired

prepare_campaign_audience_from_custom

Use a custom audience in a campaign

Turn a READY custom audience into a campaign audience and return its id ({ id, name, stats }) — pass it as audienceId to `create_campaign`. Sends nothing, no credits. The "Launch campaign" button of My Audiences.

Parametersidrequiredname

get_audience_set_contact

One contact card of an audience set

Full card of one contact in a marketplace set: person, company, buying signal, channels. Contact details stay masked until the set is bought. Contact ids come from `get_audience_set_contacts`. Read-only, free.

Parametersslugrequiredcontact_idrequired

crm_reorder_stages

Reorder pipeline stages

Set the full left-to-right order of one pipeline's stages (every stage id exactly once — get them from crm_list_stages with the same branch). Applies to the whole workspace. Reversible.

Parametersbranchstage_idsrequired

crm_list_all_branches

List every CRM pipeline (for moves)

Every pipeline of the workspace (id, name, is_default) — wider than crm_list_branches for members; use it to pick a destination for crm_add_lead_to_branch / crm_move_lead_to_branch. Read-only.

Takes no parameters.

crm_get_branch

Get one CRM pipeline

One pipeline by id (id, name, is_default). Read-only.

Parametersidrequired

crm_create_branch

Create a CRM pipeline (branch)

Create an isolated pipeline (team / direction / client) with its own default stages. member_user_ids = who can see it (General stays open to all). Workspace admins/owner only. No credits.

Parametersnamerequiredmember_user_ids

crm_update_branch

Rename a pipeline / change its members

Rename a pipeline and/or replace its member list. The General pipeline cannot be changed. Admins/owner only.

Parametersidrequirednamemember_user_ids

preview_delete_crm_branch

Preview deleting a pipeline (dry-run)

Dry-run: shows the pipeline and how many leads would fall back to General. Changes nothing. ALWAYS call before delete_crm_branch.

Parametersidrequired

delete_crm_branch

Delete a pipeline

Delete a non-default pipeline; its leads are not deleted but return to General. NOT reversible. Admins/owner only. Only call after the user approved preview_delete_crm_branch.

Parametersidrequired

crm_get_lead_branches

Pipelines a lead is in

Every pipeline a lead currently sits in, with its stage and owner per pipeline. Read-only.

Parametersidrequired

crm_add_lead_to_branch

Add a lead to another pipeline

Place the lead in another pipeline too (entry stage); it stays in its current ones. Reversible via crm_move_lead_to_branch.

Parametersidrequiredbranch_idrequiredassignee_user_id

crm_move_lead_to_branch

Move a lead between pipelines

Move the lead out of one pipeline into another (entry stage, or to_stage_id of the destination). Reversible.

Parametersidrequiredto_stage_idto_branch_idrequiredfrom_branch_idrequiredassignee_user_id

crm_preview_email_to_lead

Preview an email to a lead (dry-run)

Dry-run of crm_send_email_to_lead: shows recipient, subject and body exactly as they would be sent. Sends nothing. ALWAYS call first and show the draft to the human.

Parametersidrequiredtobodyrequiredsubjectrequired

crm_send_email_to_lead

Send a REAL email to a lead

Sends a REAL email from the CRM card ("<your name> via Vendo AI", replies go to your own address) and logs it on the card. Members need the crm-contact-details permission. Only call after the user approved the exact draft from crm_preview_email_to_lead.

Parametersidrequiredtobodyrequiredsubjectrequired

crm_import_leads

Import leads into the CRM

Import up to 1000 parsed rows as leads into the chosen pipelines (entry stage). Dedup by email/phone: an existing lead only gets its blank fields filled (never overwritten) and is added to the pipelines. Returns created / updated / skipped (+ reasons). No credits.

Parametersrowsrequiredbranch_ids

crm_promote_contact_to_lead

Promote a contacted person to a CRM lead

Turn a person from the Communications stream (crm_communication_history row) into a CRM lead in the New stage. Deduplicated: returns { lead_id, already_existed }. Needs at least one of email / linkedin_url / phone. No credits.

Parametersemailphonetitleavatar_urlcompany_namecontact_namelinkedin_urlassigned_user_id

crm_list_lead_documents

List documents on a lead

Files attached to a lead card (id, name, type, size, uploader, date). Read-only.

Parametersidrequired

crm_upload_lead_document

Attach a document to a lead

Attach one file to a lead card (base64 or https URL). Allowed: pdf, doc(x), xls(x), csv, txt, rtf, odt, ods, ppt(x), png, jpg, gif, webp, heic, zip. Stored privately; adds an activity entry. No credits.

Parametersidrequiredfile_urlfilenamecontent_base64

crm_get_lead_document

Download a lead document

Returns the file as base64 with its name and mime type (files up to 5 MB; larger ones only via REST). Read-only.

Parametersidrequireddocument_idrequired

preview_delete_crm_lead_document

Preview deleting a lead document (dry-run)

Dry-run: shows which file would be deleted. Changes nothing.

Parametersidrequireddocument_idrequired

delete_crm_lead_document

Delete a lead document

Permanently delete a file from a lead card. NOT reversible. Only call after the user approved preview_delete_crm_lead_document.

Parametersidrequireddocument_idrequired

list_app_notifications

List app notifications (bell)

The caller's in-app notifications, newest first (type, subject, preview, isRead, createdAt), with unreadCount and paging. Types include MEETING_TRANSCRIPT, MEETING_NOTIFICATION, SUBSCRIPTION_*, PAYMENT_RECEIPT, LOW_CREDITS, CREDITS_ADDED, INVITATION, CUSTOM. CRM lead notifications are separate (crm_list_notifications). Read-only.

Parameterspagelimit

get_app_notifications_unread_count

Unread app notifications count

Number of unread in-app notifications (the bell badge). Read-only.

Takes no parameters.

mark_app_notification_read

Mark an app notification read

Mark one in-app notification as read.

Parametersidrequired

mark_all_app_notifications_read

Mark all app notifications read

Mark every in-app notification of the caller as read (clears the badge).

Takes no parameters.

delete_app_notification

Delete an app notification

Remove one in-app notification from the caller's list.

Parametersidrequired

list_crm_integrations

List CRM integrations

External CRM connections of the workspace (Kommo, HubSpot): status, account, sync settings and counters. Tokens are never returned. Read-only.

Takes no parameters.

get_crm_integration

Get one CRM integration

Status and settings of the Kommo or HubSpot connection ({connected:false} if none). Use it to poll after connect_crm_integration. Read-only.

Parametersproviderrequired

get_crm_integration_logs

CRM integration sync log

Recent sync events (contact/lead created, errors) of the caller's own Kommo/HubSpot connection. Read-only.

Parameterslimitproviderrequired

Version history

1
  1. v1.0.0LatestSep 16, 2026

Score

83% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts

    Declare a GitHub repository with a README, or serve resource_documentation in the OAuth protected-resource metadata.

  • LicenseNot applicable

    A hosted service is used under its provider's terms, so no license is expected here. This check is left out of the percentage.