一键导入
epiphan-ai-mcp-guide
Reference for Epiphan AI MCP tools — CRM, sales intel, device analytics, lead qualification, marketing (Semrush/GA4/GAds).
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Reference for Epiphan AI MCP tools — CRM, sales intel, device analytics, lead qualification, marketing (Semrush/GA4/GAds).
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
Relationship intelligence graph for GTM work. Reads and writes Contact/Account/Deal/Outcome nodes in Neo4j Aura. Syncs contacts/accounts from HubSpot MCP and imports call outcomes from Nooks MCP automatically. Surfaces what messaging, sequences, and personas worked across verticals. Use when: relationship graph, gtm brain, log outcome, what worked with, account map, sync from hubspot, import nooks calls, contact history, sequence performance.
Live firm-wide sales pulse from the Epiphan CRM — revenue vs pace, pipeline by stage, won/lost, BDR activity, with coaching takeaways. Use when: business pulse, how are we doing, pipeline health, revenue pace, weekly numbers, standup brief, are we on track, sales snapshot.
Identify stalled and dying deals, run structured disqualification or recovery workflows, and clean pipeline of dead weight. Finds deals stuck 60+ days, with no champion, no activity, or overdue close dates and prescribes either a final re-engagement campaign or formal disqualification. Keeps pipeline honest and frees mental bandwidth. Use when: 'dead deals', 'stalled deals', 'clean pipeline', 'pipeline cleanup', 'disqualify deals', 'deal graveyard', 'zombie deals', 'which deals should I kill', 'pipeline hygiene', 'deal recovery', 'win back', 'lost deal review', 'close out stale deals'.
Chris Orlob's 5-step discovery framework applied to Epiphan — business problem → cause analysis → negative impact → future state → close. Per-vertical root causes, calibrated question bank, MEDDIC integration, and the 0-3 discovery scoring rubric used by sdr-call-coaching. Use when: discovery framework, orlob discovery, discovery questions, cause analysis, business problem discovery, how to run discovery.
Epiphan Video B2B sales - video capture/streaming lead qualification, pipeline metrics, MEDDIC discovery, and demo execution for Pearl devices, EC20 PTZ, and Epiphan Connect. Use for lead scoring, cold outreach to Higher Ed/Government/Corporate AV, and pipeline reviews.
5-touch email/SMS cadence for Epiphan BDR outreach. Full templates for Higher Ed, Courts, Gov, Healthcare by touch. Companion to epiphan-call-playbook (phone). Writing rules, subject line patterns, and SMS guidelines. Use when: email playbook, email template, outreach email, sdr email, cold email template, sms outreach, follow up email, 5 touch cadence.
基于 SOC 职业分类
| name | epiphan-ai-mcp-guide |
| description | Reference for Epiphan AI MCP tools — CRM, sales intel, device analytics, lead qualification, marketing (Semrush/GA4/GAds). |
<quick_start>
ask_agent — natural language handles most questions (revenue, calls, products, pricing).sales_brief for a customer, weekly_brief for the tracker, qualify_lead for inbound, query_dataset for repeatable numbers).Epiphan Ai, not the Epiphan CRM subset (see Namespaces section).resources/ — per-domain tool guides: crm-tools.md, sales-tools.md, enrichment-tools.md, product-tools.md, marketing-tools.mdreference/ — tool-examples.md (worked examples) and verticals.md (5-vertical persona pack)epiphan-brand-assets skill (separate Epiphan Brand MCP).
</quick_start>Epiphan AI gives you access to CRM sales data, device analytics, HubSpot CRM, call recordings, contact enrichment, lead qualification, and marketing analytics — all through natural language.
Ask anything about sales data. Revenue, customers, products, trends — from 2010 to today. All currencies auto-converted to USD.
"Top 10 customers by revenue in 2025" "Monthly sales trend for Pearl Mini last 2 years" "Compare Q1 vs Q2 by region" "Which products have declining sales?" "Pearl Nano vs Pearl Mini revenue comparison" "New customers acquired in 2025" "Customers who haven't ordered in 6 months" "Average order value by customer segment" "80/20 analysis — who are the customers driving 80% of revenue?"
Get a complete picture of any customer in one shot. Just say the name — fuzzy matching handles misspellings.
"Sales brief for B&H Photo" "Tell me everything about Stanford University" "Customer brief for University of Toronto"
Returns: company info, 12-month revenue, top products, open deals, key contacts, recent notes.
Look up specific orders or history:
"Show B&H Photo order history" "Find order PO-2024-1234" "All orders for customer ID 5678 in 2024"
Before a call — get fully prepared:
"Sales brief for MIT" "Search Clari for calls with mit.edu in the last 90 days" "Show engagement timeline for MIT — last 6 months" "What's the deal pipeline for MIT?"
After a call — hand off to AE:
"Create AE handoff for MIT, contact: john.smith@mit.edu"
Generates: bottom line summary, pre-call tasks for AE, aggregated intel from CRM + devices + Clari calls + HubSpot engagement. Optionally creates a HubSpot note.
Optional ebStrategy block — when provided, it's appended to the handoff note as an "Economic Buyer Strategy" section AND written to the deal's eb_intel custom properties:
ebTitleHypothesis — hypothesized EB title (e.g. "VP Academic Affairs")ebPriorityHypothesis — which EB priority the pain maps tochampionActivationStatus — exploring | activated | pursuingdoubleUpfrontSeeded — booleanknownEvalSteps — string array (e.g. IT security review, faculty pilot)Omit ebStrategy and the handoff is unchanged (backward-compatible). HubSpot writes are admin-scoped.
"How many calls did Tim make today?" "Dials to connect ratio for the BDR team this week" "Total talk time by rep this month" "Who did rhaynes call yesterday?" "Any booked demos from calls this week?" "Rep leaderboard for the last 30 days"
Clari call intelligence:
"Summarize Clari calls about Nexus products" "Get summary for call ID 12345" "Search Clari for calls with competitor mentions"
See overdue + upcoming HubSpot tasks per rep. Highlights "follow up on sales related support ticket" tasks (auto-created from CS_Tickets pipeline) — most commonly missed.
"Task brief for Tim" "Show overdue tasks for Lex Evans" "Team task brief"
Returns: overdue / due-today / upcoming with deal context.
Find contacts and deals that drifted away from a rep. Useful for handoff tracking and pipeline hygiene — surfaces records currently owned by other AEs where the target rep had recent engagement.
"What drifted away from Phillip in the last 7 days?" "AE drift check for Lex"
days lookback: min 1, max 30, default 7.
Qualify inbound leads automatically. Detects junk, classifies against ICP, routes to region, drafts outreach email.
"Qualify lead 12345" "Is contact 67890 a good lead?" "Classify and write email for HubSpot contact 11111"
Returns: category (ideal_mql / warm_lead / nurture / junk), confidence score, region (NA/EMEA/APAC), power_level (atl / btl / unknown — above/below the line buyer authority), suggested email draft.
writeToHubSpot defaults to false — qualify_lead is a dry run unless you pass writeToHubSpot: true, which then updates the lifecycle stage + creates a qualification note. Writing is admin-scoped (Tim / Victor).
powerLevelOverride (atl | btl | unknown) — override the title-based ATL/BTL classifier when you know the contact's real authority. Sticky on the contact: later classifier runs won't downgrade it.
Find phone numbers and emails for prospects.
"Find contact info for John Smith at Stanford" "Enrich contact: Sarah Johnson at Microsoft" "Look up email for this person"
3-tier lookup: cached data (instant) → HubSpot DB (instant) → Clay API (30-90s for new contacts). Provide LinkedIn URL for best accuracy.
Match spoken or misspelled company names. Great after sales calls when you're not sure about the spelling.
"Who is be an age photo?" → finds B&H Photo "Identify company: samsun" → finds Samsung "Match this company: standford univeristy"
Returns best matches from CRM + HubSpot with confidence scores.
Pearl device registrations, usage, and fleet analysis. Data synced daily from production.
"How many Pearl devices does MIT have?" "Find all devices registered by john@mit.edu" "Devices registered in Germany with high idle rate" "Show idle devices over 90 days for education vertical" "Universities with most device registrations" "Registration trends by country last 12 months" "Devices active per day — last 30 days" "Most active Pearl devices by usage"
Cross-data (devices + revenue):
"Customers with registered devices but no orders in 2024" "Correlation between device count and order value" "Which accounts have devices but no open deal?"
Contacts, companies, deals — search and lookup.
"Search HubSpot for contacts at stanford.edu" "Find deals with 'Nexus' in the name" "Show open deals for company ID 12345" "HubSpot company details for domain mit.edu" "What's the pipeline summary?" "Stalled deals over 30 days"
Semrush SEO:
"Semrush domain overview for vaddio.com" "Compare organic keywords: epiphan.com vs crestron.com" "What questions do people ask about lecture capture?" "Who are epiphan.com's organic search competitors?" "Backlinks to epiphan.com — top referring domains" "Keyword difficulty for 'lecture capture software'"
Google Analytics:
"Top landing pages this month by sessions" "Conversion rate by traffic source last 30 days" "Compare organic vs paid traffic trends"
Google Ads:
"Campaign performance last 30 days" "Ad creatives for the Pearl campaign" "Which ads have the best conversion rate?"
Ask about Epiphan products — pricing, specs, features, comparisons, troubleshooting.
"What's the price of Pearl Mini?" "How much does Epiphan Edge cost for 10 devices?" "Does Pearl-2 support 4K? Is there an extra cost?" "How do I set up Pearl Mini with Panopto?" "What's the difference between Pearl Nexus and Pearl Mini?" "Which encoder is best for NDI workflows?"
Uses structured product catalog (instant) + RAG from tech support docs for deep technical questions. Live CRM prices for pricing queries.
Find calls by company name, contact name, or topic — not just by email.
"How did the Tufts University call go with Jesse Anderson?" "Find calls about Old Dominion" "What was discussed on the Stanford call last week?" "Summarize Lex Evans' calls this month"
Searches the clari_calls table in PostgreSQL (7K+ calls with AI summaries, action items, competitor mentions).
Epiphan Cloud (Connect/Unify) usage tracking and renewal alerts.
"Which customers are approaching their usage contract limits?" "Show Stripe usage for PLI" "Cloud usage growth signals — who's increasing?" "Churn risk: customers with declining usage"
Parameterized analytics with deterministic SQL — built for recurring reports (Cowork weekly sales tracker, BDR digests). Bypass ask_agent when you need consistent numbers.
5 datasets, common filters + group_by:
| Dataset | What | Example |
|---|---|---|
revenue | CRM orders, USD-converted, order_type_id < 30 | "Booked revenue MTD/QTD/YTD" |
deals_closed | HubSpot won/lost in date range | "Won deals last week, by outcome" |
pipeline_open | HubSpot active pipeline (excludes closed) | "Open pipeline by AE × stage" |
contacts_created | New HubSpot contacts with lifecycle/source | "New leads by lifecycle this week" |
rep_activity | BDR/AE engagements (emails, calls, tasks, meetings, notes) | "Tim + Ron activity last 7 days" |
"Use query_dataset: revenue from 2025-11-01 to 2026-04-29 by month" "Open pipeline matrix — AE × stage for default sales pipeline" "Won/lost deals last week, split by outcome" "New contacts last week broken down by lifecycle and source" "BDR activity for owner_ids 87486452, 423155215 last 7 days"
group_by supports cross-product matrix (e.g. ["owner","stage"]), period grain (period_day / period_week / period_month / period_quarter / period_year), and dimensional breakdown (owner / stage / outcome / country / lifecycle / source / pipeline). format=csv returns an embedded CSV file (Claude Desktop attaches it). Custom HubSpot lifecycle stage IDs are normalized to MQL/SAL/SQL/Customer/Junk/Declined/Nurture labels.
Escape hatch when curated datasets aren't enough. export_query_csv runs a read-only SQL SELECT and returns the result as a CSV file (embedded resource).
"Export this query as CSV: SELECT ... FROM crm_orders WHERE ..."
Same SQL safety as execute_sql (SELECT/WITH only, no writes). Hard cap 50 000 rows.
Generate Economist-style charts from any data.
"Create a bar chart of top 10 customers by revenue" "Line chart: monthly revenue trend 2023-2025" "Pie chart of revenue by region"
Always provide the data (JSON/table) alongside the request.
| Tool | What it does |
|---|---|
ask_agent | Ask any CRM/analytics question in natural language |
sales_brief | Complete customer briefing in one call |
ae_handoff | BDR→AE handoff package with HubSpot note |
qualify_lead | Lead qualification: junk detection, ICP scoring, email draft |
identify_company | Fuzzy match company names across CRM + HubSpot |
enrich_contact | Find phone + email via Clay |
activity_get_timeline | Engagement history (calls, emails, notes, meetings) |
clari_search_calls | Search recorded sales calls |
clari_get_call | Full call details + optional transcript |
clari_get_call_summary | Quick call summary + action items |
hubspot_search_companies | Find HubSpot companies |
hubspot_get_company | Company details by ID |
hubspot_search_contacts | Find HubSpot contacts |
hubspot_get_contact | Contact details by ID |
hubspot_find_contacts_by_role | Role discovery — "who is the AV/IT Director at northeastern.edu". Keyed on email domain (ignores dirty company names). Params: domain, titles[] (optional; defaults to higher-ed AV/IT preset), limit. Unions HubSpot + Clay-enriched contacts, decision-makers first. Read-only. Use this for list-building instead of enrich_contact (which needs a known name) |
hubspot_search_deals | Find HubSpot deals |
hubspot_get_deal | Deal details by ID |
crm_get_customer | Legacy CRM customer by ID |
crm_search_customers | Search legacy CRM customers |
crm_get_order | Order details (fuzzy search) |
crm_get_customer_orders | Customer order history |
analytics_get_device | Pearl device lookup by serial |
analytics_search_by_email | All devices by registrant email |
search_product_catalog | Product pricing, specs, features, competitors (catalog + CRM prices + RAG) |
search_product_knowledge | Deep tech support RAG (troubleshooting, setup, firmware) |
task_brief | Overdue + upcoming HubSpot tasks per rep (or team) |
ae_drift_detect | Contacts/deals reassigned away from a rep (last N days) |
query_dataset | Curated parameterized analytics: revenue, deals_closed, pipeline_open, contacts_created, rep_activity |
weekly_brief | One-shot weekly sales tracker — bundles 9 query_dataset calls. Params: week_ending, ae_names, bdr_owner_ids, fiscal_year_start, target_annual_revenue, pipelines. Defaults: FY2026, Tim+Ron, $19.5M target |
export_query_csv | Raw read-only SQL → CSV file (escape hatch when curated datasets aren't enough) |
generate_image | Data charts and infographics |
get_upcoming_meetings | Calendar check |
These mutate HubSpot. Restricted to an allowlist — others get a 403. Rate-limited: 1,000 writes / 5 min per user (bulk-friendly), 4 / 5 min per record.
| Tool | What it does |
|---|---|
hubspot_create_contact | Create contact. Idempotent — dedupes by email (returns existing on match). Entry stages only (lead/MQL/SQL/Cold Lead/SAL); accepts associateCompanyId |
hubspot_create_company | Create company. Dedup is domain-first: any existing company on the same registrable domain (eTLD+1 — www.carleton.ca, cunet.carleton.ca and carleton.ca all match) is flagged as the same institution (needsReview:true, matchType:"domain"), since that's the reliable key for dirty higher-ed names. Falls back to fuzzy company-name match on other domains. Reuse a candidate's companyId, or pass confirmDespiteSimilar:true to force-create a genuinely distinct org |
hubspot_create_deal | Create deal. No dedup — pass pipelineId + dealstage (from hubspot_deal_stages) |
hubspot_update_contact | Update fields on an existing contact (e.g. add a missing phone). Identify by contactId or email. Patches only the fields you pass: phone, mobilephone, jobtitle, firstName, lastName, company, website. Owner → use hubspot_update_contact_owner; lifecycle → hubspot_set_lifecycle_stage |
hubspot_update_company | Update fields on an existing company. Identify by companyId or domain (ambiguous domain → returns candidates, pass companyId). Patches only passed fields: name, city, country, state, industry, phone, website |
hubspot_update_contact_owner | Set contact owner. Validates ownerId against hubspot_owners |
hubspot_set_lifecycle_stage | Set lifecycle stage. Accepts ID, label, or alias (SAL/MQL/Cold Lead) — resolved + validated |
hubspot_create_contact_note | Create note on a contact (optionally on deal/company). HTML body, script tags stripped |
hubspot_create_contact_task | Create task on a contact. ISO 8601 due date, validated ownerId. taskType: CALL / EMAIL / TODO (default TODO) — pass CALL for dial/follow-up-call tasks (Nooks call lists) so they land as real Call tasks. No HubSpot connector needed |
hubspot_update_contact_note | Edit an existing note's body by noteId. HTML, script tags stripped + spacing normalized. Guardrail: only notes our integration created, or ones newer than ~7 days, can be edited — older human-authored notes are protected (Forbidden). HubSpot keeps per-property history as a backstop |
hubspot_update_contact_task | Edit an existing task by taskId. Any subset of subject / body / dueDate / status / ownerId / taskType / priority; omitted fields unchanged. status: COMPLETED marks it done. Same age/ownership guardrail as note updates |
Push a BDR segment to a HubSpot static (MANUAL) list instead of CSV/Sheets import. Created list names are stamped with an [AI] prefix so humans can spot agent-managed lists in the UI.
| Tool | What it does |
|---|---|
hubspot_search_lists | Read. Find lists by query (substring) or exact name (case-insensitive). Returns listId (ILS), name, processingType, size. objectType: contacts/companies/deals |
hubspot_list_members | Read. List a list's members + their contact fields (name/email/company/jobtitle/phone) with per-member gap flags (blank jobtitle/phone) + summary. gapsOnly: true returns just the members needing enrichment. Use with enrich_contact to fill only the gaps (e.g. what the HubSpot/Breeze agent left partially filled) — saves Clay credits, doesn't re-enrich complete contacts. Works on any list |
hubspot_create_list | Create a MANUAL list. Idempotent — dedupes by name (forced [AI] prefix). Optional recordIds seed (max 5,000, auto-chunked ≤500/request). Reuses an existing agent-owned list; on a name clash with a human-made list it returns the ID but refuses to seed (LIST_NOT_AGENT_OWNED) |
hubspot_update_list_membership | Add/remove records (add/remove, combined max 5,000, auto-chunked into ≤500/request). Only on lists the agent created itself — refuses any other list (LIST_NOT_AGENT_OWNED) and non-MANUAL lists (LIST_NOT_MANUAL). Natively idempotent (already-member / non-member IDs reported as missing); a mid-batch failure returns PARTIAL_FAILURE with what landed — just re-run |
Why the ownership lock: a static-list membership can be a HubSpot workflow enrollment trigger. The agent can only mutate lists it created — so it can never inject members into a human-curated list that might fire a campaign. Lists created here are immediately queryable by the official HubSpot connector via hs_crm_search.ilsListIds.
Note: Stripe Cloud usage queries (renewals/growth/churn) go through ask_agent — there's no dedicated MCP tool. Just ask in natural language.
Epiphan AiTwo MCP connections may show up:
Epiphan Ai — the full toolset above. Default to this.Epiphan CRM — a subset. Missing, among others: hubspot_get_contact, crm_get_customer_orders, get_upcoming_meetings, weekly_brief, hubspot_search_contacts, and the collaborator_owner_id filter on hubspot_search_deals.If a tool seems "missing," you're probably on Epiphan CRM — switch to Epiphan Ai. (hubspot_search_contacts exists — it just isn't exposed on the CRM subset.)
epiphan-brand-assets skillBrand lives on a separate Epiphan Brand MCP server (voice, tokens, personas, product positioning, logos, fonts) and has its own dedicated skill. Before drafting any customer-facing asset (email, one-pager, deck, proposal) — and before any external send — defer to the epiphan-brand-assets skill, which drives the brand tools (get_brand_asset_kit, check_my_copy, …) end-to-end. Don't hand-roll brand calls from this CRM guide.
ask_agent — it handles most questions including calls, products, revenue. Use specific tools only for direct lookups.ask_agent uses product catalog + RAG. For pricing it pulls live CRM prices.qualify_lead is a dry run by default — pass writeToHubSpot: true to update lifecycle + create the note (admin-scoped).ae_handoff with createNote: true — visible to the entire sales team.enrich_contact call for a new person takes 30-90s (Clay API). Subsequent calls are instant.clari_get_call — skip includeTranscript for faster responses.<success_criteria>
ask_agent) on the first try, using the tool table + resources/ guidesEpiphan Ai namespace used (not the Epiphan CRM subset) when a tool seemed "missing"qualify_lead dry-run unless writeToHubSpot:true, ae_drift_detect max 30 days, HubSpot IDs as strings, write tools admin-scoped (Tim/Victor), [AI] list ownership lockquery_dataset / weekly_brief (deterministic SQL), not ad-hoc ask_agentepiphan-brand-assets skill, not hand-rolled from this guide
</success_criteria>