{"data":{"name":"ai.funkel/funkel","title":"Funkel AI","description":"Run LinkedIn and email outreach: find leads, manage campaigns, and reply to prospects.","version":"1.0.0","websiteUrl":"https://funkel.ai","repositoryUrl":null,"remotes":[{"url":"https://api.funkel.ai/mcp","type":"streamable-http"}],"packages":[],"status":"active","isLatest":true,"publishedAt":"2026-10-16T15:27:29.231Z","updatedAt":"2026-10-16T15:27:29.231Z","source":"official-registry","verification":"official","confidence":100,"stars":null,"sources":[{"stars":null,"title":"Funkel AI","source":"official-registry","sourceId":"ai.funkel/funkel","updatedAt":"2026-10-16T15:27:29.231Z","confidence":100,"websiteUrl":"https://funkel.ai","description":"Run LinkedIn and email outreach: find leads, manage campaigns, and reply to prospects.","verification":"official","repositoryUrl":null}],"toolIndex":{"tools":[{"serverName":"ai.funkel/funkel","endpointFingerprint":"e63451003611130a0b72aae8812cbdb8a0e2b9def801dcda91af3f4ac3205fce","name":"approve_leads","title":null,"description":"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. Over MCP: call this tool once, without confirmation_token. It runs right away and returns the result.","inputSchema":{"type":"object","properties":{"action":{"description":"Decision applied to every lead in lead_ids","enum":["approve","reject"],"type":"string"},"campaign_id":{"description":"Required for action=approve; omitted for action=reject (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)","type":"string"},"campaign_name":{"description":"Campaign name (used in the confirm preview)","type":"string"},"confirmation_token":{"description":"Phase-2 token (omit on phase-1)","type":"string"},"count":{"description":"Number of leads in the batch (used in the confirm preview; mirrors len(lead_ids))","type":"integer"},"lead_ids":{"description":"Discovered lead ids (from a prior find_leads result)","items":{"description":"Lead id (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)","type":"string"},"type":"array"}},"required":["action","lead_ids"]},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true},"definitionHash":"f1cdee8a73689766daf23fdb2790e265ce3d33fb02f2453b910c1d0e6d6567a6","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T01:46:12.398Z","metadataTrust":"untrusted"},{"serverName":"ai.funkel/funkel","endpointFingerprint":"e63451003611130a0b72aae8812cbdb8a0e2b9def801dcda91af3f4ac3205fce","name":"configure_agent_source","title":null,"description":"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. Over MCP: call this tool once, without confirmation_token. It runs right away and returns the result.","inputSchema":{"type":"object","properties":{"agent_id":{"description":"Owned agent ID (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)","type":"string"},"app_id":{"description":"Product ID; required for MCP accounts with multiple products (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)","type":"string"},"auto_resolve_linkedin":{"description":"Hacker News only; automatically resolve high-confidence leads through LinkedIn, which may use credits","type":"boolean"},"confirmation_token":{"description":"One-use approval token; omit before approval","type":"string"},"enabled":{"description":"Whether source listening should be enabled after approval","type":"boolean"},"expected_updated_at":{"description":"Version from get_agent_sources; optional on first call","type":"string"},"queries":{"description":"Exact search phrases to save, 1-10","items":{"type":"string"},"type":"array"},"source":{"description":"Source to configure","enum":["x","hackernews"],"type":"string"}},"required":["agent_id","source","queries","enabled"]},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true},"definitionHash":"fa5b9f8a8f93d87c9278e41d48122d99b9941e49ddb46c64c8b6a0cb8558affd","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T01:46:12.398Z","metadataTrust":"untrusted"},{"serverName":"ai.funkel/funkel","endpointFingerprint":"e63451003611130a0b72aae8812cbdb8a0e2b9def801dcda91af3f4ac3205fce","name":"control_operator_task","title":null,"description":"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. Over MCP: call this tool once, without confirmation_token. It runs right away and returns the result.","inputSchema":{"type":"object","properties":{"confirmation_token":{"description":"One-use approval token; omit on first call","type":"string"},"expected_version":{"description":"Current task version","maximum":2147483647,"minimum":1,"type":"integer"},"operation":{"description":"Task transition","enum":["pause","resume","cancel","retry"],"type":"string"},"step_id":{"description":"Required failed step id for retry (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)","type":"string"},"task_id":{"description":"Task id (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)","type":"string"}},"required":["task_id","operation","expected_version"]},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true},"definitionHash":"9127070bf5fd70c1198b29102f5ec2259e84adb73d70959d16d9ce49b8d104b4","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T01:46:12.398Z","metadataTrust":"untrusted"},{"serverName":"ai.funkel/funkel","endpointFingerprint":"e63451003611130a0b72aae8812cbdb8a0e2b9def801dcda91af3f4ac3205fce","name":"create_campaign_draft","title":null,"description":"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}. Over MCP: call this tool once, without confirmation_token. It runs right away and returns the result.","inputSchema":{"type":"object","properties":{"agent_id":{"description":"Optional agent id (from a prior list_agents) that supplies leads to this campaign (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)","type":"string"},"app_name":{"description":"App name (used in the confirm preview)","type":"string"},"cold_outreach_mode":{"description":"Cold outreach mode (default 'invite')","enum":["invite","inmail","email"],"type":"string"},"confirmation_token":{"description":"Phase-2 token (omit on phase-1)","type":"string"},"list_id":{"description":"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)","type":"string"},"name":{"description":"Campaign name (1-100 chars)","type":"string"},"workflow_steps":{"description":"Optional custom workflow steps","items":{"properties":{"delay_unit":{"description":"Delay unit","enum":["hours","days"],"type":"string"},"delay_value":{"description":"Delay before this step","maximum":365,"type":"integer"},"is_final":{"description":"Whether this is the final workflow step","type":"boolean"},"message_mode":{"description":"Message mode","enum":["manual","ai_personalized"],"type":"string"},"message_template":{"description":"Optional message template. Supported personalization variables: {FirstName}, {LastName}, {Company}.","type":"string"},"step_type":{"description":"Step type","enum":["invite","message","follow_up","inmail","email"],"type":"string"}},"required":["step_type"],"type":"object"},"type":"array"}},"required":["name"]},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":false},"definitionHash":"a642ca8cfa20af3094a557894d0f9b7078aeda23d632501502cdc1cdbc96bf98","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T01:46:12.398Z","metadataTrust":"untrusted"},{"serverName":"ai.funkel/funkel","endpointFingerprint":"e63451003611130a0b72aae8812cbdb8a0e2b9def801dcda91af3f4ac3205fce","name":"create_list","title":null,"description":"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. Over MCP: call this tool once, without confirmation_token. It runs right away and returns the result.","inputSchema":{"type":"object","properties":{"description":{"description":"Optional one-sentence description of what the list is for","type":"string"},"name":{"description":"Display name for the list (1-100 chars)","type":"string"}},"required":["name"]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"definitionHash":"95e75e574037eb79bfe62d850d3567b84dcdb3237c04e801f8f512db0921ad82","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T01:46:12.398Z","metadataTrust":"untrusted"},{"serverName":"ai.funkel/funkel","endpointFingerprint":"e63451003611130a0b72aae8812cbdb8a0e2b9def801dcda91af3f4ac3205fce","name":"create_note","title":null,"description":"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. Over MCP: call this tool once, without confirmation_token. It runs right away and returns the result.","inputSchema":{"type":"object","properties":{"body":{"description":"Note or reminder text (max 5000 chars)","type":"string"},"confirmation_token":{"description":"One-use approval token; omit on first call","type":"string"},"lead_id":{"description":"Lead id (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)","type":"string"},"reminder_at":{"description":"Optional RFC3339 reminder due date","type":"string"},"reminder_body":{"description":"Required when reminder_at is set","type":"string"},"request_key":{"description":"Stable unique request identity (8-128 chars)","type":"string"}},"required":["lead_id","request_key","body"]},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":false},"definitionHash":"1c64f31c2e5266d6d25422408b3dd23f0c92a57eced94e48b0f8e1362124fa35","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T01:46:12.398Z","metadataTrust":"untrusted"},{"serverName":"ai.funkel/funkel","endpointFingerprint":"e63451003611130a0b72aae8812cbdb8a0e2b9def801dcda91af3f4ac3205fce","name":"create_reminder","title":null,"description":"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. Over MCP: call this tool once, without confirmation_token. It runs right away and returns the result.","inputSchema":{"type":"object","properties":{"body":{"description":"Note or reminder text (max 5000 chars)","type":"string"},"confirmation_token":{"description":"One-use approval token; omit on first call","type":"string"},"lead_id":{"description":"Lead id (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)","type":"string"},"reminder_at":{"description":"Required RFC3339 reminder due date","type":"string"},"request_key":{"description":"Stable unique request identity (8-128 chars)","type":"string"}},"required":["lead_id","request_key","body","reminder_at"]},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":false},"definitionHash":"f8a4ca9854d1288e36aab1513c5119b891d2ebdff6de98af181221d48e8a8d26","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T01:46:12.398Z","metadataTrust":"untrusted"},{"serverName":"ai.funkel/funkel","endpointFingerprint":"e63451003611130a0b72aae8812cbdb8a0e2b9def801dcda91af3f4ac3205fce","name":"draft_icp_edit","title":null,"description":"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.","inputSchema":{"type":"object","properties":{"agent_id":{"description":"Agent id (from a prior list_agents) (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)","type":"string"},"proposed_icp_description":{"description":"Free-text description of the new ICP","type":"string"},"proposed_icp_filters":{"description":"Optional structured filters JSON (job_titles, industries, regions, etc.)","type":"string"}},"required":["agent_id"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"8fd1d1a2a5e833298a74a80f33766eb6d268c9db29481a2bda10a5b6b8ee2ca7","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T01:46:12.398Z","metadataTrust":"untrusted"},{"serverName":"ai.funkel/funkel","endpointFingerprint":"e63451003611130a0b72aae8812cbdb8a0e2b9def801dcda91af3f4ac3205fce","name":"draft_message","title":null,"description":"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. Over MCP: call this tool once, without confirmation_token. It runs right away and returns the result.","inputSchema":{"type":"object","properties":{"lead_id":{"description":"Lead id (from a prior find_leads / get_lead) (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)","type":"string"},"reference":{"description":"Optional specific hook (recent post, role transition, milestone) the user wants referenced","type":"string"},"tone":{"description":"Voice register","enum":["warm","professional","direct"],"type":"string"}},"required":["lead_id"]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true},"definitionHash":"24936566140c0f0a0579a487ac0c18ef22ab33a6164d06478f0a48798a3622bc","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T01:46:12.398Z","metadataTrust":"untrusted"},{"serverName":"ai.funkel/funkel","endpointFingerprint":"e63451003611130a0b72aae8812cbdb8a0e2b9def801dcda91af3f4ac3205fce","name":"enable_agent","title":null,"description":"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. Over MCP: call this tool once, without confirmation_token. It runs right away and returns the result.","inputSchema":{"type":"object","properties":{"agent_id":{"description":"Agent id (from a prior list_agents) (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)","type":"string"},"agent_name":{"description":"Agent name (used in the confirm preview)","type":"string"},"app_name":{"description":"App name (used in the confirm preview)","type":"string"},"confirmation_token":{"description":"Phase-2 token (omit on phase-1)","type":"string"}},"required":["agent_id","agent_name","app_name"]},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true},"definitionHash":"815b7e30c5434ea64f5fdcddafab2cc8cb6535f27cb8c1586c6c34a0af80fa2c","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T01:46:12.398Z","metadataTrust":"untrusted"},{"serverName":"ai.funkel/funkel","endpointFingerprint":"e63451003611130a0b72aae8812cbdb8a0e2b9def801dcda91af3f4ac3205fce","name":"enable_campaign","title":null,"description":"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. Over MCP: call this tool once, without confirmation_token. It runs right away and returns the result.","inputSchema":{"type":"object","properties":{"app_name":{"description":"App name (used in the confirm preview)","type":"string"},"campaign_id":{"description":"Campaign id (from a prior list_campaigns) (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)","type":"string"},"campaign_name":{"description":"Campaign name (used in the confirm preview)","type":"string"},"confirmation_token":{"description":"Phase-2 token (omit on phase-1)","type":"string"}},"required":["campaign_id","campaign_name","app_name"]},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true},"definitionHash":"1859efcd41d1b970674d4ae27950081194edbd4b66c21c5a0c8cd294ccd09f66","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T01:46:12.398Z","metadataTrust":"untrusted"},{"serverName":"ai.funkel/funkel","endpointFingerprint":"e63451003611130a0b72aae8812cbdb8a0e2b9def801dcda91af3f4ac3205fce","name":"find_leads","title":null,"description":"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.","inputSchema":{"type":"object","properties":{"limit":{"description":"Max number of leads to return (1..50)","maximum":50,"minimum":1,"type":"integer"},"search":{"description":"Optional keyword (matches name, company, or headline)","type":"string"},"source":{"description":"Lead source. Default 'discovered'.","enum":["discovered","approved"],"type":"string"},"status":{"description":"Optional status filter (e.g. 'pending', 'approved', 'rejected')","type":"string"}},"required":["limit"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"30a3956425cf0388d299f55f4ab4fbb0ab1d0b6e35f5be424873c64a94e57895","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T01:46:12.398Z","metadataTrust":"untrusted"},{"serverName":"ai.funkel/funkel","endpointFingerprint":"e63451003611130a0b72aae8812cbdb8a0e2b9def801dcda91af3f4ac3205fce","name":"get_access","title":null,"description":"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.","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"a43f97d68454160007195f5db7b00745c642968a6b3b3221366aa70928ab1b44","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T01:46:12.398Z","metadataTrust":"untrusted"},{"serverName":"ai.funkel/funkel","endpointFingerprint":"e63451003611130a0b72aae8812cbdb8a0e2b9def801dcda91af3f4ac3205fce","name":"get_agent_sources","title":null,"description":"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.","inputSchema":{"type":"object","properties":{"agent_id":{"description":"Owned agent ID (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)","type":"string"},"app_id":{"description":"Product ID; required for MCP accounts with multiple products (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)","type":"string"}},"required":["agent_id"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"23c9794fc3d80fd09be77f8676a08be9a49f9dc91ade9ff4f17b29cf2294ba88","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T01:46:12.398Z","metadataTrust":"untrusted"},{"serverName":"ai.funkel/funkel","endpointFingerprint":"e63451003611130a0b72aae8812cbdb8a0e2b9def801dcda91af3f4ac3205fce","name":"get_analytics","title":null,"description":"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.","inputSchema":{"type":"object","properties":{"campaign_id":{"description":"Campaign id (required when scope='campaign') (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)","type":"string"},"days_back":{"description":"Lookback window in days (default 7)","maximum":90,"minimum":1,"type":"integer"},"scope":{"description":"Aggregation level. Default 'app'.","enum":["campaign","app"],"type":"string"}}},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"0ce772f0aaf77a236b0913ff88fdc236ef200cd34c7658fbd5cbf3210ee2b365","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T01:46:12.398Z","metadataTrust":"untrusted"},{"serverName":"ai.funkel/funkel","endpointFingerprint":"e63451003611130a0b72aae8812cbdb8a0e2b9def801dcda91af3f4ac3205fce","name":"get_campaign","title":null,"description":"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.","inputSchema":{"type":"object","properties":{"campaign_id":{"description":"Campaign id (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)","type":"string"}},"required":["campaign_id"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"96979546b2bf5fb5c79b79dbc16b86a34c6918090a5c0d456c3f8a254b7d8d09","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T01:46:12.398Z","metadataTrust":"untrusted"},{"serverName":"ai.funkel/funkel","endpointFingerprint":"e63451003611130a0b72aae8812cbdb8a0e2b9def801dcda91af3f4ac3205fce","name":"get_conversation_context","title":null,"description":"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.","inputSchema":{"type":"object","properties":{"conversation_id":{"description":"Conversation id from inbox/follow-up context (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)","type":"string"},"lead_id":{"description":"Lead id from find_leads/get_lead or a follow-up result (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)","type":"string"},"limit":{"description":"Number of recent messages to return (default 12, max 20)","maximum":20,"minimum":1,"type":"integer"}}},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"1643d62c98014e7d9c074ad2ac0f9fdd725728240ddd08eb7ac20400794286ac","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T01:46:12.398Z","metadataTrust":"untrusted"},{"serverName":"ai.funkel/funkel","endpointFingerprint":"e63451003611130a0b72aae8812cbdb8a0e2b9def801dcda91af3f4ac3205fce","name":"get_daily_priorities","title":null,"description":"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.","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"5de46d299f5822286ff7df13014e0939728e876d10113ddf3e07937e7c6dd646","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T01:46:12.398Z","metadataTrust":"untrusted"},{"serverName":"ai.funkel/funkel","endpointFingerprint":"e63451003611130a0b72aae8812cbdb8a0e2b9def801dcda91af3f4ac3205fce","name":"get_inbox_queue","title":null,"description":"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.","inputSchema":{"type":"object","properties":{"limit":{"description":"Maximum rows (default 20, max 50)","maximum":50,"minimum":1,"type":"integer"},"mode":{"description":"Queue type","enum":["reply_needed","due_follow_up"],"type":"string"},"offset":{"description":"Pagination offset (default 0)","maximum":10000,"type":"integer"}},"required":["mode"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"47d08e14c9a5131e54c12b9d8c54023396eef71685a3d8bccd2b5a8048917ffe","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T01:46:12.398Z","metadataTrust":"untrusted"},{"serverName":"ai.funkel/funkel","endpointFingerprint":"e63451003611130a0b72aae8812cbdb8a0e2b9def801dcda91af3f4ac3205fce","name":"get_insight","title":null,"description":"Read one insight and its evidence for the selected product, or an explicitly account-scoped insight. Read-only; proposed changes never run here.","inputSchema":{"type":"object","properties":{"insight_id":{"description":"Insight id (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)","type":"string"}},"required":["insight_id"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"25ba16bb6abe3b433eb9983851a75db1d110f0ad53cdcda3e4c1b7effff2bf0d","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T01:46:12.398Z","metadataTrust":"untrusted"},{"serverName":"ai.funkel/funkel","endpointFingerprint":"e63451003611130a0b72aae8812cbdb8a0e2b9def801dcda91af3f4ac3205fce","name":"get_lead","title":null,"description":"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.","inputSchema":{"type":"object","properties":{"lead_id":{"description":"Lead id (from a prior find_leads result) (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)","type":"string"},"source":{"description":"Lead source. Default 'discovered'.","enum":["discovered","approved"],"type":"string"}},"required":["lead_id"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"b36a2a63c76fea2f4f17437670fe522d6d957f62b9a7efedadd5c73149bf6431","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T01:46:12.398Z","metadataTrust":"untrusted"},{"serverName":"ai.funkel/funkel","endpointFingerprint":"e63451003611130a0b72aae8812cbdb8a0e2b9def801dcda91af3f4ac3205fce","name":"get_list","title":null,"description":"Read one unarchived list in the selected product and its exact member count. Does not return contacts; use list_list_contacts.","inputSchema":{"type":"object","properties":{"list_id":{"description":"List id (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)","type":"string"}},"required":["list_id"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"9e42e3b9ce7ce9b2a11d8d5be6dbe68267bc6a592c02fb2e708422bfbe851218","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T01:46:12.398Z","metadataTrust":"untrusted"},{"serverName":"ai.funkel/funkel","endpointFingerprint":"e63451003611130a0b72aae8812cbdb8a0e2b9def801dcda91af3f4ac3205fce","name":"get_operator_task","title":null,"description":"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.","inputSchema":{"type":"object","properties":{"task_id":{"description":"Task id (UUID format, e.g. 550e8400-e29b-41d4-a716-446655440000)","type":"string"}},"required":["task_id"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"5d6ec0d62269fb63394ced5cb6a9631555bfae701b64ee952d4559d47f45a174","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T01:46:12.398Z","metadataTrust":"untrusted"},{"serverName":"ai.funkel/funkel","endpointFingerprint":"e63451003611130a0b72aae8812cbdb8a0e2b9def801dcda91af3f4ac3205fce","name":"get_product_context","title":null,"description":"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.","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"e9c399db3b9ae364f4b61be35f1db0774f8a6f276a0f915788f94c20e7eeefac","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T01:46:12.398Z","metadataTrust":"untrusted"},{"serverName":"ai.funkel/funkel","endpointFingerprint":"e63451003611130a0b72aae8812cbdb8a0e2b9def801dcda91af3f4ac3205fce","name":"get_reply_attempt","title":null,"description":"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.","inputSchema":{"type":"object","properties":{"request_key":{"description":"Stable request identity from send_conversation_reply, 8-128 characters","type":"string"}},"required":["request_key"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"081520ee1134e84581a419faf2d553091a182592fa7a94f53bd0dc6b823a8565","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T01:46:12.398Z","metadataTrust":"untrusted"}],"endpoints":[{"endpointFingerprint":"e63451003611130a0b72aae8812cbdb8a0e2b9def801dcda91af3f4ac3205fce","protocol":"streamable-http","status":"indexed","toolCount":50,"observedAt":"2026-11-02T01:46:12.398Z"}],"authentication":"unknown"},"connectionConfigurations":{"status":"ready","authentication":"not embedded","clients":{"Claude Desktop":{"mcpServers":{"ai.funkel/funkel":{"url":"https://api.funkel.ai/mcp"}}},"Cursor":{"mcpServers":{"ai.funkel/funkel":{"url":"https://api.funkel.ai/mcp"}}},"VS Code":{"servers":{"ai.funkel/funkel":{"type":"http","url":"https://api.funkel.ai/mcp"}}}}},"resourceType":"mcp-server","callable":true,"runtime":{"callable":true,"protocols":["mcp"]},"interfaces":[{"protocol":"mcp","transport":"streamable-http","url":"https://api.funkel.ai/mcp"}],"profile":{"apiVersion":"1","schemaVersion":"1","id":"mcp-server:ai.funkel%2Ffunkel","resourceType":"mcp-server","canonicalUrl":"https://www.agentsjunction.com/api/v1/servers/ai.funkel%2Ffunkel","name":"ai.funkel/funkel","description":"Run LinkedIn and email outreach: find leads, manage campaigns, and reply to prospects.","interfaces":[{"protocol":"mcp","transport":"streamable-http","url":"https://api.funkel.ai/mcp"}],"capabilities":[],"identity":{"source":"official-registry","websiteUrl":"https://funkel.ai","repositoryUrl":null,"version":"1.0.0"},"verification":{"state":"official","confidence":100},"operations":{"resourceType":"mcp-server","name":"ai.funkel/funkel","status":"online","lastCheckedAt":"2026-11-03T19:16:47.327Z","lastSuccessfulCheck":"2026-11-03T19:16:47.327Z","latencyMs":693,"consecutiveFailures":0,"isStale":false,"checks":{"endpointReachable":true,"protocolValid":true,"agentCardValid":null,"mcpHandshakeValid":true},"lastSeen":null,"lastSuccessfulInteraction":null,"lastHealthCheck":"2026-11-03T19:16:47.327Z","source":{"type":"health-check","url":null},"observedAt":"2026-11-03T19:16:47.327Z"},"security":null,"timestamps":{"createdAt":"2026-10-16T15:27:29.231Z","updatedAt":"2026-10-16T15:27:29.231Z","observedAt":"2026-11-03T19:16:47.327Z"},"compatibility":{"serverVersion":"1.0.0","protocolVersions":[{"protocol":"mcp","version":null}]}}}}