Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Funkel AI

REMOTE · API.FUNKEL.AI

Run LinkedIn and email outreach: find leads, manage campaigns, and reply to prospects.

Available components

77 Trust /100

Last scanned (4 hours ago)

Scores higher than 74% of remote servers

Reachable. Last reached 17 Oct 2026.

Category CRM and Sales

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security94
Transport & Reachability100
Schema Quality & AI Usability70
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 7503 tokens (~147/item across 51 items; 51 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management3
  • Stability observed for 1 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 99% of tool parameters carry a description.Partial
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 51 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities60
  • Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 17 Oct 26 0
    • Stability: unverified → 0.03 ▲ functional
  • 16 Oct 26 77

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 17 Oct 2026 · Probed https://api.funkel.ai/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=funkel.ai CN=YE2,O=Let's Encrypt,C=US 25 Aug 2026 23 Nov 2026 ECDSA 256 ECDSA-SHA384 66ca6f4f8732b102f674379728789f8109b
SANs: *.funkel.ai, funkel.ai
CN=YE2,O=Let's Encrypt,C=US (CA) CN=Root YE,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 ECDSA 384 ECDSA-SHA384 4df3b15dd6c0784c507cd37b58e6f115
CN=Root YE,O=ISRG,C=US (CA) CN=ISRG Root X2,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 ECDSA-SHA384 872165fc34b6e5fba8add5b3705fb53a
CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 SHA256-RSA 6c8f1dc727c7117f7baf853ac980f9cd

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of api.funkel.ai. — Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
ai. present 3799 8 Verified
funkel.ai. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication Enforced and verified

The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.

Result Enforced and verified
Enforced On tool calls
HTTP status 200

WWW-Authenticate challenge Bearer resource_metadata="https://api.funkel.ai/.well-known/oauth-protected-resource"

Bearer resource_metadata="https://api.funkel.ai/.well-known/oauth-protected-resource"
Header Value
strict-transport-security max-age=31536000; includeSubDomains
content-security-policy default-src 'self'; script-src 'none'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; form-action 'self'; frame-ancestors 'none'; base-uri 'none'; object-src 'none'
x-content-type-options nosniff
x-frame-options DENY
referrer-policy strict-origin-when-cross-origin
permissions-policy camera=(), microphone=(), geolocation=()

Protected resource metadata

Document https://api.funkel.ai/.well-known/oauth-protected-resource
Retrieved Yes
Resource https://api.funkel.ai/mcp
Authorisation server https://api.funkel.ai

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://api.funkel.ai/mcp Verified 200
http (plaintext) http://api.funkel.ai/mcp HTTPS enforced 302 https://api.funkel.ai/mcp
MCP tools · 51 exposed · ~7,503 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
approve_leads ~241

Approve or reject one or more discovered leads. Two-phase: first call returns a confirmation token + preview; the user reviews an inline card and confirms; second call (with confirmation_token) commits the status flip. action='approve' requires campaign_id (the campaign the leads will be associated with); action='reject' does not. The tool stamps each lead's status + reviewed_at + campaign_id; downstream campaign-engine pipelines ingest approved leads through their normal path.

NameTypeReqDescription
actionstringyesDecision applied to every lead in lead_ids
campaign_idstring–Required for action=approve; omitted for action=reject (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)
campaign_namestring–Campaign name (used in the confirm preview)
confirmation_tokenstring–Phase-2 token (omit on phase-1)
countinteger–Number of leads in the batch (used in the confirm preview; mirrors len(lead_ids))
lead_idsarrayyesDiscovered lead ids (from a prior find_leads result)

No output schema declared.

No examples provided.

configure_agent_source ~334

Configure X or Hacker News searches for one owned agent and set source listening. First call get_agent_sources. If no source exists, propose 1-10 precise searches from the user's request and saved ICP; do not invent a broad search without showing it. If a source exists, show its current searches and only replace them when the user asks to change them. This tool previews the exact searches, enabled state, and LinkedIn resolution choice, then requires explicit approval. It does not activate a draft or paused agent. For an already configured source whose searches need no change, use set_agent_source_listening instead. X needs a connected X account for collection. Hacker News uses its public search provider.

NameTypeReqDescription
agent_idstringyesOwned agent ID (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)
app_idstring–Product ID; required for MCP accounts with multiple products (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)
auto_resolve_linkedinboolean–Hacker News only; automatically resolve high-confidence leads through LinkedIn, which may use credits
confirmation_tokenstring–One-use approval token; omit before approval
enabledbooleanyesWhether source listening should be enabled after approval
expected_updated_atstring–Version from get_agent_sources; optional on first call
queriesarrayyesExact search phrases to save, 1-10
sourcestringyesSource to configure

No output schema declared.

No examples provided.

control_operator_task ~171

Pause, resume, cancel, or retry a durable Operator task after exact approval. Supply its current version. Retry also requires one failed idempotent local-read step; completed effects cannot replay. A pause may not stop an already executing provider call.

NameTypeReqDescription
confirmation_tokenstring–One-use approval token; omit on first call
expected_versionintegeryesCurrent task version
operationstringyesTask transition
step_idstring–Required failed step id for retry (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)
task_idstringyesTask id (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)

No output schema declared.

No examples provided.

create_agent ~503

Create a new draft agent under the request's scoped app. Two-phase: first call previews every setting; second call after user confirmation creates it. The agent's ICP starts from the app's saved ICP; icp_filters keys you supply override only those keys, every other saved field (job_titles, mandatory_keywords, excluded_companies, company_sizes, ...) is kept as-is. Do not restate the full ICP from memory for a vague request like "set it up" — omit icp_filters entirely to inherit the saved ICP untouched, and only pass the specific keys the user actually asked to change. To deliberately clear a list field, pass it as an empty array. excluded_companies stores exact current employer names. If supplied a LinkedIn company URL, Operator saves its slug name there and retains the URL separately for competitor signals; ask the user to verify the name in the approval. Supply signals only when the user selects exact agent discovery signals; each signal must include its supported platform, category, key, label, enabled state, and config. An explicit empty signals array creates no signals. Without signals, defaults seed from the merged ICP filters. A requested keyword such as product launch can be a keyword_tracking_product_launch signal with config.keyword='product launch'. Ask for missing signal details; never claim a requested setting was saved if this schema cannot represent it.

NameTypeReqDescription
app_namestring–App name (used in the confirm preview)
confirmation_tokenstring–Phase-2 token (omit on phase-1)
icp_descriptionstring–Free-text ICP description for the new agent
icp_filtersobject–Optional structured ICP filters. Use job_titles, industries, regions, company_sizes, excluded_keywords, and exclude_service_providers. excluded_companies accepts exact employer names or LinkedIn comp…
linkedin_account_idsarray–Local UUIDs of the workspace LinkedIn accounts selected for searches. Use [] for none.
max_signalsinteger–Cap on enabled signals (default 15)
namestringyesDisplay name for the new agent (1-100 chars)
signalsarray–Exact agent discovery signals. Omit to seed from ICP; use [] for none.
typestring–Agent type (default 'signal')

No output schema declared.

No examples provided.

create_campaign_draft ~325

Create a draft campaign in the selected product. First show the exact campaign, agent, destination list, and any agent retargeting for approval. With agent_id and no list_id, use the agent's destination list; if absent, assign the product default list to both. An explicit different list retargets a draft agent only after approval. Never activate, discover, enroll, or send. If workflow_steps are omitted, create the standard 4-step flow. For custom steps ask about type, delay, message mode, template, and final step. In message_template use only {FirstName}, {LastName}, and {Company}.

NameTypeReqDescription
agent_idstring–Optional agent id (from a prior list_agents) that supplies leads to this campaign (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)
app_namestring–App name (used in the confirm preview)
cold_outreach_modestring–Cold outreach mode (default 'invite')
confirmation_tokenstring–Phase-2 token (omit on phase-1)
list_idstring–Optional owned lead list id. With an agent, omitted means its destination list. Otherwise the product default list is used or created. (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)
namestringyesCampaign name (1-100 chars)
workflow_stepsarray–Optional custom workflow steps

No output schema declared.

No examples provided.

create_list ~113

Create a new lead list scoped to the request's app. Use this when the user wants to organise leads into a named bucket (e.g. 'Q4 Targets', 'Hot Founders'). The new list starts empty; populate it later via approve_leads with action='approve' and the new list_id, or by editing the list manually.

NameTypeReqDescription
descriptionstring–Optional one-sentence description of what the list is for
namestringyesDisplay name for the list (1-100 chars)

No output schema declared.

No examples provided.

create_note ~163

Create a scoped note or reminder after an explicit confirmation of the exact lead, body, and due date. One request_key can be applied only once; a changed intent with the same key fails.

NameTypeReqDescription
bodystringyesNote or reminder text (max 5000 chars)
confirmation_tokenstring–One-use approval token; omit on first call
lead_idstringyesLead id (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)
reminder_atstring–Optional RFC3339 reminder due date
reminder_bodystring–Required when reminder_at is set
request_keystringyesStable unique request identity (8-128 chars)

No output schema declared.

No examples provided.

create_reminder ~150

Create a scoped note or reminder after an explicit confirmation of the exact lead, body, and due date. One request_key can be applied only once; a changed intent with the same key fails.

NameTypeReqDescription
bodystringyesNote or reminder text (max 5000 chars)
confirmation_tokenstring–One-use approval token; omit on first call
lead_idstringyesLead id (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)
reminder_atstringyesRequired RFC3339 reminder due date
request_keystringyesStable unique request identity (8-128 chars)

No output schema declared.

No examples provided.

draft_icp_edit ~194

Stage a proposed ICP edit for one agent. Returns a diff envelope (current vs proposed, fields_changed) so the user can review the change inline before applying it. Does NOT write — to actually apply the edit, call update_icp (confirm-tier) with the same agent_id and proposed fields. Use this when the user describes a change in plain language ('target Series A founders in EU' etc.); never call update_icp directly without first staging here so the user sees the before/after.

NameTypeReqDescription
agent_idstringyesAgent id (from a prior list_agents) (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)
proposed_icp_descriptionstring–Free-text description of the new ICP
proposed_icp_filtersstring–Optional structured filters JSON (job_titles, industries, regions, etc.)

No output schema declared.

No examples provided.

draft_message ~160

Generate a personalised draft for one lead. Reads the lead's profile (industry, role, headline, optional reference hook) and returns a single message body. Does NOT send. After the user reviews and approves, call send_message to actually deliver. ALWAYS call get_lead first to inspect reply_state — refuse to draft for opted-out / replied / rejected leads.

NameTypeReqDescription
lead_idstringyesLead id (from a prior find_leads / get_lead) (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)
referencestring–Optional specific hook (recent post, role transition, milestone) the user wants referenced
tonestring–Voice register

No output schema declared.

No examples provided.

enable_agent ~146

Enable (activate) a paused or draft agent so it begins discovering leads on its schedule. Two-phase: first call returns a confirmation token + preview; the user reviews and confirms; second call (with confirmation_token) commits.

NameTypeReqDescription
agent_idstringyesAgent id (from a prior list_agents) (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)
agent_namestringyesAgent name (used in the confirm preview)
app_namestringyesApp name (used in the confirm preview)
confirmation_tokenstring–Phase-2 token (omit on phase-1)

No output schema declared.

No examples provided.

enable_campaign ~180

Enable (resume) a paused or draft campaign. The campaign engine starts scheduling actions per the campaign's workflow. Two-phase: first call returns a confirmation token + preview; the user reviews and confirms; second call (with confirmation_token) commits. Activation pre-conditions (workflow steps, connected accounts) are validated by the underlying campaign service — the tool surfaces any failure as a structured error.

NameTypeReqDescription
app_namestringyesApp name (used in the confirm preview)
campaign_idstringyesCampaign id (from a prior list_campaigns) (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)
campaign_namestringyesCampaign name (used in the confirm preview)
confirmation_tokenstring–Phase-2 token (omit on phase-1)

No output schema declared.

No examples provided.

find_leads ~190

Search leads in the app the request is scoped to. Returns bounded named summaries and IDs, never full rows. Use get_lead to load full detail for a specific id. Default source is 'discovered' (agent-found, awaiting approval); pass source='approved' to search leads already in campaigns. Optional 'search' keyword runs an ILIKE across name/company/headline; optional 'status' narrows by lead status. If results are thin, surface the count and ASK the user before broadening the filters — do not silently relax constraints.

NameTypeReqDescription
limitintegeryesMax number of leads to return (1..50)
searchstring–Optional keyword (matches name, company, or headline)
sourcestring–Lead source. Default 'discovered'.
statusstring–Optional status filter (e.g. 'pending', 'approved', 'rejected')

No output schema declared.

No examples provided.

get_access ~54

Read current account access for Operator and campaign actions in the selected product. Operator requires active paid or lifetime entitlement; campaign actions also accept active beta. Feature flags are account-wide. This snapshot is not an action authorization or credit quote.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_agent_sources ~173

Read X and Hacker News listening settings for one owned agent, including sources not configured yet. Use list_agents to identify the agent. If configured is false, use configure_agent_source to propose exact searches and enable listening after approval. If configured is true and searches exist, use set_agent_source_listening to toggle without changing searches. A draft or paused agent does not collect until activated. LinkedIn signal groups are separate.

NameTypeReqDescription
agent_idstringyesOwned agent ID (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)
app_idstring–Product ID; required for MCP accounts with multiple products (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)

No output schema declared.

No examples provided.

get_analytics ~135

Return product- or campaign-scoped activity in a UTC lookback interval. Completed actions and invitations use executed_at; connections and recorded replies use lead event timestamps. These are separate event counts, not one conversion cohort. Default 7 days, max 90.

NameTypeReqDescription
campaign_idstring–Campaign id (required when scope='campaign') (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)
days_backinteger–Lookback window in days (default 7)
scopestring–Aggregation level. Default 'app'.

No output schema declared.

No examples provided.

get_campaign ~95

Read one campaign in the selected product. Returns updated_at for exact approved settings changes, plus workflow, sender assignments, schedule, review mode, observed action state, and readiness blockers. Empty templates are not claimed as generated messages. No sending or activation occurs.

NameTypeReqDescription
campaign_idstringyesCampaign id (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)

No output schema declared.

No examples provided.

get_conversation_context ~188

Return bounded conversation context for one lead or conversation in the request scope: lead profile, product/campaign context, last real messages, recent notes, open reminders, and Reply Assistant follow-up suggestions. Use this before meeting prep, reply planning, or questions about what happened with a lead. Read-only; does not draft or send messages.

NameTypeReqDescription
conversation_idstring–Conversation id from inbox/follow-up context (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)
lead_idstring–Lead id from find_leads/get_lead or a follow-up result (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)
limitinteger–Number of recent messages to return (default 12, max 20)

No output schema declared.

No examples provided.

get_daily_priorities ~52

Rank up to four live operational starting points with source IDs and links. Connected senders and insights count across the account; leads, actions, campaigns, and unread messages count within the selected product. Read only.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_inbox_queue ~90

List reply-needed conversations or due follow-ups in the selected product. One predicate determines both the total and page. AI drafts are not counted as sent replies. Limit 50; use offset for later pages.

NameTypeReqDescription
limitinteger–Maximum rows (default 20, max 50)
modestringyesQueue type
offsetinteger–Pagination offset (default 0)

No output schema declared.

No examples provided.

get_insight ~73

Read one insight and its evidence for the selected product, or an explicitly account-scoped insight. Read-only; proposed changes never run here.

NameTypeReqDescription
insight_idstringyesInsight id (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)

No output schema declared.

No examples provided.

get_lead ~158

Return full detail for a single lead by id, INCLUDING the derived reply_state and opt_out flags. Always call this before drafting or sending a message — a lead whose reply_state is 'replied', 'rejected', or 'opted_out', or whose opt_out is true, must NEVER be drafted to or messaged. Use source='approved' for leads in active campaigns; default 'discovered' is for agent-found leads awaiting approval.

NameTypeReqDescription
lead_idstringyesLead id (from a prior find_leads result) (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)
sourcestring–Lead source. Default 'discovered'.

No output schema declared.

No examples provided.

get_list ~70

Read one unarchived list in the selected product and its exact member count. Does not return contacts; use list_list_contacts.

NameTypeReqDescription
list_idstringyesList id (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)

No output schema declared.

No examples provided.

get_operator_task ~80

Read one durable Operator task in the selected product with its step states, action states, safe summaries, version, and progress. Does not return executable arguments or raw provider errors.

NameTypeReqDescription
task_idstringyesTask id (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)

No output schema declared.

No examples provided.

get_product_context ~44

Read the selected product's name, site, description, ICP summary, language, Product Brain availability, and dashboard link. No provider credentials or raw unbounded configuration are returned.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_reply_attempt ~74

Read one reply attempt by its stable request_key in the selected product. Returns actual delivery evidence and next_action. Uncertain delivery requires manual provider review unless an exact outgoing provider message is confirmed. Never retries or sends.

NameTypeReqDescription
request_keystringyesStable request identity from send_conversation_reply, 8-128 characters

No output schema declared.

No examples provided.

get_schedule ~109

List pending, approved, or failed scheduled actions in the selected product, optionally for one campaign. Returns one bounded page and its exact total. Completed actions are not included.

NameTypeReqDescription
campaign_idstring–Optional campaign id (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)
limitinteger–Page size (default 20; max 50)
offsetinteger–Page offset (default 0)

No output schema declared.

No examples provided.

get_scheduled_action ~78

Read one action in the selected product: campaign, lead, type, state, scheduled and executed timestamps. Does not return provider metadata or a message body.

NameTypeReqDescription
action_idstringyesScheduled action id (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)

No output schema declared.

No examples provided.

get_sender_health ~40

Show account-wide connected sender health and separate readiness for campaign assignments in the selected product. An account-wide connection does not prove a campaign has a usable sender.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

import_search_leads_to_list ~263

Import lead rows from a prior search_external_leads session into a lead list. Two-phase: first call returns a confirmation token + preview; the user reviews an inline card and confirms; second call with confirmation_token commits. provider_ids omitted means import every lead in the search session. Supply list_id for an existing list, or list_name to create a new list during the confirmed commit. After a committed result returns list_id, use that exact list_id when creating a campaign from the imported search leads.

NameTypeReqDescription
confirmation_tokenstring–Phase-2 token (omit on phase-1)
list_idstring–Existing lead list id to import into (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)
list_namestring–Name for a new list to create during the confirmed import when list_id is omitted
provider_idsarray–Optional selected provider ids from the search result. Omit to import all search results.
session_idstringyesLead search session id returned by search_external_leads (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)

No output schema declared.

No examples provided.

list_agents ~118

List the specialist agents in the product/app the request is scoped to. Returns a summary (count, brief one-liner, and a list of {id, name, status, type, role, one-line icp_summary}). Internal agent types are mapped to product-facing roles such as lead_finder. Full ICP filters / config are collapsed to a one-liner — call get_agent (later) to load full detail. Use this to ground questions like 'how many specialist agents do I have?' or 'which Lead Finder agents are active?'.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_apps ~95

List the products/apps owned by the request scope's user. Returns a summary (count, brief one-liner, and a list of {id, name, description, url}) with no timestamps or internal flags. Use this for product inventory or explicit product-switch/disambiguation questions. A normal product-scoped request already carries an app_id in Scope; do not call this just to discover which product to use for product-aware actions.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_campaigns ~84

List the campaigns in the app the request is scoped to (excludes archived). Returns a summary (count, brief one-liner, and a list of {id, name, status, agent_id, list_id}). Settings JSON is intentionally omitted; call get_campaign for current workflow, sender, and action detail. Status values: 'draft', 'active', 'paused'.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_insights ~71

List account-scoped and selected-product-scoped open insights. Each item labels its actual scope; account insights are not product-only. Exact total and bounded pages.

NameTypeReqDescription
limitinteger–Page size (default 20; max 50)
offsetinteger–Page offset (default 0)

No output schema declared.

No examples provided.

list_list_contacts ~103

List contacts in one unarchived list in the selected product. Returns exact total and bounded pages. Does not expose email or provider identifiers.

NameTypeReqDescription
limitinteger–Page size (default 20; max 50)
list_idstringyesList id (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)
offsetinteger–Page offset (default 0)

No output schema declared.

No examples provided.

list_lists ~69

List unarchived lead lists in the selected product. Returns exact total and bounded pages. A list's cached lead count is not used for the total.

NameTypeReqDescription
limitinteger–Page size (default 20; max 50)
offsetinteger–Page offset (default 0)

No output schema declared.

No examples provided.

list_operator_files ~60

List up to 20 files uploaded to any of your Operator threads in the selected product. Returns file IDs and metadata only, never bytes or extracted text. A file can be used for a same-product LinkedIn reply, not another product or email reply.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_operator_tasks ~66

List durable Operator tasks in the selected product. Returns bounded pages, exact total, task status, version, and links. Read-only.

NameTypeReqDescription
limitinteger–Page size (default 20; max 50)
offsetinteger–Page offset (default 0)

No output schema declared.

No examples provided.

list_preferences ~60

List up to 20 saved Operator preferences for the user and product in the request scope. Values are bounded, labeled customer data, and never override user instructions or system rules. Returns key, value, and source only. No provider credentials or tokens are returned.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_reminders ~77

List open or done lead reminders in the selected product with exact total and bounded pages. Default is open. This read does not complete a reminder.

NameTypeReqDescription
limitinteger–Page size (default 20; max 50)
offsetinteger–Page offset (default 0)
statusstring–Reminder state

No output schema declared.

No examples provided.

pause_agent ~171

Pause an active agent so it stops discovering new leads. The agent's existing leads remain in the list. Two-phase: first call returns a confirmation token + preview; the user reviews an inline card and confirms or cancels; second call (with confirmation_token) commits the pause. Always include agent_name + app_name so the preview is human-readable.

NameTypeReqDescription
agent_idstringyesAgent id (from a prior list_agents) (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)
agent_namestringyesAgent name (used in the confirm preview)
app_namestringyesApp name (used in the confirm preview)
confirmation_tokenstring–Phase-2 token (omit on phase-1)

No output schema declared.

No examples provided.

pause_campaign ~163

Pause an active campaign. The campaign engine stops scheduling actions. Two-phase: first call returns a confirmation token + preview; the user reviews an inline card and confirms or cancels; second call (with confirmation_token) commits the pause. Always include campaign_name + app_name so the preview is human-readable.

NameTypeReqDescription
app_namestringyesApp name (used in the confirm preview)
campaign_idstringyesCampaign id (from a prior list_campaigns) (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)
campaign_namestringyesCampaign name (used in the confirm preview)
confirmation_tokenstring–Phase-2 token (omit on phase-1)

No output schema declared.

No examples provided.

prepare_conversation_reply ~159

Prepare one exact local inbound reply. Returns recipient, sender, channel, inbound revision, final signed body, and optional owned file identity. Never sends. Files are available only for supported connected LinkedIn conversations in the selected product.

NameTypeReqDescription
attachment_idstring–Optional file ID from list_operator_files. LinkedIn replies only (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)
bodystringyesFull proposed body. A configured booking link is tracked in the final preview
conversation_idstringyesLocal conversation id (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)

No output schema declared.

No examples provided.

rename_list ~123

Rename one unarchived list in the selected product after explicit approval. Supply its current name to reject stale changes; include the full new description.

NameTypeReqDescription
confirmation_tokenstring–Approval token; omit on first call
descriptionstringyesNew full description
expected_namestringyesCurrent list name
list_idstringyesList id (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)
namestringyesNew name (1-100 chars)

No output schema declared.

No examples provided.

save_preference ~103

Save one selected-product Operator preference after explicit approval. The value is bounded JSON data, not a system instruction. Existing keys update. No provider credentials or tokens are accepted.

NameTypeReqDescription
confirmation_tokenstring–Approval token; omit on first call
keystringyesPreference key (1-100 chars; no secret names)
reasonstring–Why this preference should be saved
valuestringyesJSON value (max 600 bytes)

No output schema declared.

No examples provided.

search_external_leads ~154

Search LinkedIn for fresh people leads from the request user's connected account. Use this when the user describes leads to find by words, roles, companies, or market terms, rather than asking to search existing saved leads. Returns a server-owned session_id and up to 10 lead previews. To import the results, call import_search_leads_to_list with that session_id after the user asks to import all or selected leads.

NameTypeReqDescription
limitinteger–Max results to return (1..10). Default 10.
querystringyesFree-text people search, e.g. 'YC founders building AI devtools'
rolestring–Optional job-title filter, e.g. 'Founder OR CEO'

No output schema declared.

No examples provided.

send_conversation_reply ~181

Send one exact prepared reply to the latest inbound message after explicit human approval. Provide the complete prepare_conversation_reply result, its attachment_id when present, and a stable request_key. A timeout is uncertain and cannot be retried automatically. LinkedIn files are supported; email files are unavailable.

NameTypeReqDescription
attachment_idstring–Exact prepared file ID when present (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)
confirmation_tokenstring–One-use approval token; omit on first call
preparedobjectyesExact prepare_conversation_reply result; all fields required by server validation
reply_as_confirmedboolean–Explicitly confirm using another rep's sender
request_keystringyesStable unique request identity, 8-128 chars

No output schema declared.

No examples provided.

set_agent_source_listening ~218

Pause or resume only an existing X or Hacker News source on an agent. First read get_agent_sources. If configured is false or searches are empty, use configure_agent_source instead. The first call shows exact approval; a second user-approved call commits. Saved searches, budgets, LinkedIn resolution and other sources stay unchanged. A draft or paused agent does not collect until activated.

NameTypeReqDescription
agent_idstringyesOwned agent ID (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)
app_idstring–Product ID; required for MCP accounts with multiple products (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)
confirmation_tokenstring–One-use approval token, omit before approval
enabledbooleanyes–
expected_updated_atstring–Version from get_agent_sources; optional on first call
sourcestringyesOne source

No output schema declared.

No examples provided.

update_campaign_settings ~204

Change a campaign's manual review, send window, or sender assignments in the selected product. Read get_campaign first and copy its updated_at as expected_updated_at. Omitted settings remain unchanged. Explicit null sender clears one platform. First call returns an exact approval preview; approved execution saves all changes atomically. It never activates, enrolls, or sends.

NameTypeReqDescription
account_assignmentsobject–Only supplied platforms change
campaign_idstringyesOwned campaign id from get_campaign (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)
confirmation_tokenstring–One-use approval token; omit on first call
expected_updated_atstring–Exact updated_at from get_campaign; may be omitted for a server-filled first preview
review_modeboolean–Require manual review before outreach
scheduleobject–Full send window; all fields required when supplied

No output schema declared.

No examples provided.

update_campaign_workflow ~287

Update message content on existing steps in a draft or paused campaign. Prefer one-based message_order, which counts only message-bearing steps and automatically skips invite/follow steps: message_order 1, 2, 3 targets the first, second, and third messages even when raw workflow step 1 is an invite. step_order remains available only when an exact raw workflow order is already known. Provide exactly one selector plus the exact message_template for every item. In message_template use only {FirstName}, {LastName}, and {Company} personalization variables. This is a two-phase confirmed action: first call without confirmation_token returns a confirmation card; approved execution applies the exact stored workflow_messages through the campaign service. It never launches or sends. Always include campaign_name and app_name for a human-readable preview.

NameTypeReqDescription
app_namestringyesApp name used in the confirmation preview
campaign_idstringyesCampaign id from a prior list_campaigns result (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)
campaign_namestringyesCampaign name used in the confirmation preview
confirmation_tokenstring–Phase-2 token (omit on phase-1)
workflow_messagesarrayyesExact message content to persist; prefer message_order 1..N for ordinary campaign copy

No output schema declared.

No examples provided.

Install

How do I install the Funkel AI MCP server?

Funkel AI is a hosted endpoint at https://api.funkel.ai/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · api.funkel.ai

# add to Claude Code
claude mcp add --transport http ai-funkel-funkel 'https://api.funkel.ai/mcp'
Common questions

What is the Funkel AI MCP server?

Funkel AI is an MCP server listed in the public MCP registry as ai.funkel/funkel. Run LinkedIn and email outreach: find leads, manage campaigns, and reply to prospects. This page covers its hosted endpoint (https://api.funkel.ai/mcp).

Is the Funkel AI MCP server safe to use?

Funkel AI scores 77 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Funkel AI MCP server expose?

Funkel AI exposes 51 tools: list_apps, get_product_context, list_lists, get_list, list_list_contacts, and 46 more. Their descriptions and schemas cost roughly 7,503 tokens of context every time the server is loaded.

Does the Funkel AI MCP server require authentication?

Yes. Funkel AI asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

Is the Funkel AI MCP server still maintained?

Funkel AI is still listed as active in the MCP registry. We last reached this channel on 17 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.