MCP App Store
by KeenEthics
Business & Operations
Vitally MCP icon

Vitally MCP

by Vitally

Overview

Customer Success teams don't lack data — they lack a single place to make sense of it. Signals live in one tool, conversations in another, notes somewhere else entirely, and by the time it's all pulled together, the moment to act has often passed. Vitally brings all this data together under one roof, so CS teams can proactively fight churn, spot expansion opportunities, and grow their customer relationships. The Vitally MCP connector brings that same account intelligence into ChatGPT, wherever you're already working. Ask about any customer and get answers grounded in the full context your team has captured — not just the surface-level number, but the substance behind it: what customers have actually said, done, and asked for. Every answer is scoped to exactly what your own Vitally login can already see, so nothing surfaces that you couldn't already find yourself. Take action on customer data directly from a ChatGPT session, capturing what you've learned, moving work forward, and keeping your workspace current without switching tools or losing the thread. Built for CSMs, CS leaders, and Account Management teams who want to spend less time hunting for context and more time staying a step ahead of churn and unlocking growth — all without leaving ChatGPT.

Tools

create_custom_object

ChatGPT
Create a custom object instance linked to one or more accounts and/or organizations. customObjectTypeId must be one of your workspace's custom-object type ids. Custom-object types in this workspace (pass id as customObjectTypeId): - dd1a0e31-da68-4837-b9c9-bcdbc1237407: Deals (name: Deals) - 9d6e3082-d7fc-471e-b105-aa1a02a6bd0c: Escalations (name: Escalations) - a968d20e-2508-4226-8cba-987c0144d98d: Jira issues (name: Jira issues) - 0bbdc1f9-a354-435c-a407-3beb368583a6: Opportunity (name: Opportunity) Discover trait keys with search_object_properties using objectType: CustomObject and the customObjectTypeId.

create_note

ChatGPT
Create a note for an account or organization. Pass the note body as markdown in body (headers, lists, bold, italics, links, and inline code are supported). Discover custom field keys with search_object_properties for object type Note and category customFields.

create_task

ChatGPT
Create a task for an account or organization. Discover custom field keys with search_object_properties for object type Task and category customFields.

list_objects

ChatGPT
List the workspace's configuration objects of a given objectType and return their IDs. Returns each object's id and name, and a nextCursor when more are available; pass it back as pagination.cursor to load more (null = exhausted). Use this to resolve the ID another tool's input requires, for example the customObjectTypeId that search_custom_objects, create_custom_object, and search_object_properties take. Supported objectType values: - AccountKeyRole — the workspace's key roles for Account team assignments. Use the returned id wherever an Account key role ID is required. - CustomObjectType — the workspace's CustomObject types. Each carries a description. Use the returned id wherever a CustomObject type ID (customObjectTypeId) is required. - NoteCategory — the workspace's Note categories. Use the returned id wherever a Note category ID (noteCategoryId) is required. - NoteTag — the workspace's Note tags. Each carries color. Use the returned ids when a tool input takes Note tag IDs. - OrganizationKeyRole — the workspace's key roles for Organization team assignments. Use the returned id wherever an Organization key role ID is required. - ProjectCategory — the workspace's Project categories. Use the returned id wherever a Project category ID (projectCategoryId) is required. - ProjectStatus — the workspace's Project statuses. Each carries type (active, inactive, or complete), isDefaultStatus, and requiresAllTasksCompleted (a complete status that requires every task to be done first). Use the returned id wherever a Project status ID (projectStatusId) is required. - TaskCategory — the workspace's Task categories. Use the returned id wherever a Task category ID (taskCategoryId) is required. - TaskStatus — the workspace's Task statuses. Each carries type (active, inactive, or complete) and isDefaultStatus. Use the returned id wherever a Task status ID (taskStatusId) is required. - TaskTag — the workspace's Task tags. Each carries color. Use the returned ids when a tool input takes Task tag IDs.

retrieve_content

ChatGPT
Retrieve embedded content (notes, meetings, conversations, and more) for a subject record to answer a question about it. Analytical workflow: (1) use search_* tools to find relevant records, (2) call retrieve_content on each relevant record to pull its actual substance, (3) synthesize from that content — not from metadata alone. Skipping step 2 produces shallow, title-only answers. Scopes: pass one entry per kind of content to search. Document covers documents and their pages. For custom object content add a CustomObject entry with the customObjectTypeId of the type, one entry per type. Custom-object types with retrievable content (pass id as customObjectTypeId): - dd1a0e31-da68-4837-b9c9-bcdbc1237407: Deals (name: Deals) - 9d6e3082-d7fc-471e-b105-aa1a02a6bd0c: Escalations (name: Escalations) - a968d20e-2508-4226-8cba-987c0144d98d: Jira issues (name: Jira issues) - 0bbdc1f9-a354-435c-a407-3beb368583a6: Opportunity (name: Opportunity) Time range rules: - Explicit or Implicit Date Range Present If the question clearly specifies a time range (explicitly like "in Q1 2024" or implicitly like "last year"), extract and return contentStartsAt and contentEndsAt (ISO 8601). - Clearly About Recent Trends or Current Status If the question clearly asks about the current situation or trends (e.g., "what's the sentiment lately?"), return the range from 3 months ago to today. - Default: No Clear Timeframe If there is no explicit or implied date range, or if unsure, return (contentStartsAt: NULL, contentEndsAt: NULL)

search_accounts

ChatGPT
Search Account records by their properties and return resolved values for each match. This workspace calls Accounts "Account". Common uses: - Find an Account by name: query.where.filters.primary with a name clause (e.g. operator contains, value "Acme"). - List or rank Accounts: combine query.where.filters with query.sort (e.g. sort by health score ascending for at-risk Accounts). - Narrow by parent Organization: use query.where.filters.organization. Filter scopes: primary (the Account's own fields) and organization (its parent Organization). Properties: query.properties is required — specify which columns to return. Accounts carry a broad dataset beyond identity/health: revenue (MRR/ARR, renewal & trial dates, status), NPS, activity counts & recency (users, tasks, projects, notes, conversations, messages), assigned CSM/AE/owner, segments, plus owner-configured custom fields, firmographic enrichment, product event counts & last-seen, success metrics, risk/opportunity indicators, playbooks, health categories, key roles, and linked custom objects. Use search_object_properties for Account to discover exact keys before referencing them here (and in filters or sort). Pagination: pass the returned nextCursor back as pagination.cursor to load more (null = exhausted).

search_conversations

ChatGPT
Search Conversation records by their properties and return resolved values for each match. Common uses: - Find recent Conversations: query.where.filters.primary on lastMessageTimestamp or createdAt, sorted descending. - List Conversations for an Account: use query.where.filters.account with an Account filter. - Narrow by related Account: use query.where.filters.account (e.g. filter on Account name or health score). - Narrow by related Organization: use query.where.filters.organization. Filter scopes: primary (the Conversation's own fields), account (its related Account), and organization (its related Organization). Properties: query.properties is required — specify which columns to return. Conversations include subject, status, message counts and timestamps, email engagement (opens, clicks, bounces, replies), linked Accounts and Organizations, assignee and initiator, source, creator, outbound template, playbook/action IDs, and conversation custom fields. Use search_object_properties for Conversation to discover exact keys before referencing them here (and in filters or sort). Pagination: pass the returned nextCursor back as pagination.cursor to load more (null = exhausted).

search_custom_objects

ChatGPT
Search CustomObject instances by their properties and return resolved values for each match. Custom-object types in this workspace (pass id as customObjectTypeId): - dd1a0e31-da68-4837-b9c9-bcdbc1237407: Deals (name: Deals) - 9d6e3082-d7fc-471e-b105-aa1a02a6bd0c: Escalations (name: Escalations) - a968d20e-2508-4226-8cba-987c0144d98d: Jira issues (name: Jira issues) - 0bbdc1f9-a354-435c-a407-3beb368583a6: Opportunity (name: Opportunity) Common uses: - Find custom object instances by name: query.where.filters.primary with a name clause. - List instances for an Account: use query.where.filters.account with an Account filter. - Narrow by related Account: use query.where.filters.account (e.g. filter on Account name or health score). - Narrow by related Organization: use query.where.filters.organization. Filter scopes: primary (the CustomObject's own fields), account (its related Account), and organization (its related Organization). Properties: query.properties is required — specify which columns to return. CustomObject instances expose name, external ID, timestamp, owner, linked Accounts/Organizations, source, creator, and per-object-type custom fields. Use search_object_properties for CustomObject (with the same customObjectTypeId) to discover exact keys before referencing them here (and in filters or sort). Pagination: pass the returned nextCursor back as pagination.cursor to load more (null = exhausted).

search_docs

ChatGPT
Search CollabDoc records by their properties and return resolved values for each match. Common uses: - Find recent docs: query.where.filters.primary on updatedAt or createdAt, sorted descending. - List docs for an Account: use query.where.filters.account with an Account filter. - Narrow by related Account: use query.where.filters.account (e.g. filter on Account name or health score). - Narrow by related Organization: use query.where.filters.organization. Filter scopes: primary (the CollabDoc's own fields), account (its related Account), and organization (its related Organization). Properties: query.properties is required — specify which columns to return. CollabDocs expose name, created/updated timestamps, creator, linked Account/Organization, collab doc template and when it was set, tags, last viewed by external user, and playbook/action IDs. Use search_object_properties for CollabDoc to discover exact keys before referencing them here (and in filters or sort). For doc body content, use retrieve_content instead. Pagination: pass the returned nextCursor back as pagination.cursor to load more (null = exhausted).

search_goals

ChatGPT
Search Goal records by their properties and return resolved values for each match. Common uses: - Find at-risk Goals: query.where.filters.primary on percentComplete or deadline, sorted by deadline ascending. - List Goals for an Account: use query.where.filters.account with an Account filter. - Narrow by related Account: use query.where.filters.account (e.g. filter on Account name or health score). - Narrow by related Organization: use query.where.filters.organization. Filter scopes: primary (the Goal's own fields), account (its related Account), and organization (its related Organization). Properties: query.properties is required — specify which columns to return. Goals include name, status, deadline, overall percent complete, owner and creator, linked Account/Organization, goal template, and playbook/action IDs. Use search_object_properties for Goal to discover exact keys before referencing them here (and in filters or sort). Per-metric progress keys only show up there with a goalTemplateId. They can be returned but not filtered or sorted on, and are null for Goals of other templates, so filter on templateId when asking about one template. Pagination: pass the returned nextCursor back as pagination.cursor to load more (null = exhausted).

search_indicators

ChatGPT
Search Indicator records by their properties and return resolved values for each match. Common uses: - Find long-running Indicators: query.where.filters.primary on startDate with a past-date operator. - List Indicators for an Account: use query.where.filters.account with an Account filter, sorted by startDate. - Narrow by related Account: use query.where.filters.account (e.g. filter on Account name or health score). - Narrow by related Organization: use query.where.filters.organization. Views: query.where.primaryView — Which Indicators to search: active (still open), ended, or all. Omit to search the active view. Filter scopes: primary (the Indicator's own fields), account (its related Account), and organization (its related Organization). Properties: query.properties is required — specify which columns to return. Indicators expose playbook/indicator reference, linked Account/Organization, type, start/end/addressed dates, assigned and addressed-by users, and playbook action ID. Use search_object_properties for Indicator to discover exact keys before referencing them here (and in filters or sort). Pagination: pass the returned nextCursor back as pagination.cursor to load more (null = exhausted).

search_meetings

ChatGPT
Search Meeting records by their properties and return resolved values for each match. Common uses: - Find Meetings by date range: query.where.filters.primary on start or end with a date operator. - List Meetings for an Account: combine query.where.filters.account with query.sort by start, and set query.where.primaryView to upcoming or past to restrict to one side of today. - List for participants: query.where.filters.primary on participants with a team member's UUID, user's UUID, or email address. - Narrow by related Account: use query.where.filters.account (e.g. filter on Account name or health score). - Narrow by related Organization: use query.where.filters.organization. Views: query.where.primaryView — Which Meetings to search: upcoming (ends now or later), past (already ended), or all. Omit to search the all view. Filter scopes: primary (the Meeting's own fields), account (its related Account), and organization (its related Organization). Properties: query.properties is required — specify which columns to return. Meetings expose title, start/end dates and times, recurrence, organizer and participant emails, linked Accounts and Organizations, recording URL, AI summary, and meeting custom fields. Use search_object_properties for Meeting to discover exact keys before referencing them here (and in filters or sort). Pagination: pass the returned nextCursor back as pagination.cursor to load more (null = exhausted).

search_notes

ChatGPT
Search Note records by their properties and return resolved values for each match. Common uses: - Find recent Notes: query.where.filters.primary on noteDate or createdAt, sorted descending. - List Notes for an Account: use query.where.filters.account with an Account filter. - Narrow by related Account: use query.where.filters.account (e.g. filter on Account name or health score). - Narrow by related Organization: use query.where.filters.organization. Filter scopes: primary (the Note's own fields), account (its related Account), and organization (its related Organization). Properties: query.properties is required — specify which columns to return. Notes expose subject, note date, created/updated timestamps, author, linked Account/Organization, source, note category, tags, and note custom fields. Use search_object_properties for Note to discover exact keys before referencing them here (and in filters or sort). For note body content, use retrieve_content instead. Pagination: pass the returned nextCursor back as pagination.cursor to load more (null = exhausted).

search_nps_responses

ChatGPT
Search NpsResponse records by their properties and return resolved values for each match. Common uses: - Find detractor NpsResponses: query.where.filters.primary on score with a less-than operator (e.g. score < 7). - List recent NpsResponses for an Account: use query.where.filters.account combined with respondedAt sort. - Narrow by related Account: use query.where.filters.account (e.g. filter on Account name or health score). - Narrow by related Organization: use query.where.filters.organization. Filter scopes: primary (the NpsResponse's own fields), account (its related Account), and organization (its related Organization). Properties: query.properties is required — specify which columns to return. NpsResponses include score, feedback text, responded-at timestamp, linked User (respondent name/email), and first associated Account/Organization. Use search_object_properties for NpsResponse to discover exact keys before referencing them here (and in filters or sort). Pagination: pass the returned nextCursor back as pagination.cursor to load more (null = exhausted).

search_object_properties

ChatGPT
Call this before any search_* or search_custom_objects tool. It returns the available property keys, filter operands, and sort columns for an object type so you can reference them correctly in subsequent calls. Specify object.type (and customObjectTypeId for CustomObject) and a natural-language searchQuery. Results are similarity-ranked; rephrase if the first results are not what you need. Custom-object types in this workspace (pass id as customObjectTypeId): - dd1a0e31-da68-4837-b9c9-bcdbc1237407: Deals (name: Deals) - 9d6e3082-d7fc-471e-b105-aa1a02a6bd0c: Escalations (name: Escalations) - a968d20e-2508-4226-8cba-987c0144d98d: Jira issues (name: Jira issues) - 0bbdc1f9-a354-435c-a407-3beb368583a6: Opportunity (name: Opportunity) Workspace object names: - Account — called "Account" in this workspace - Organization — called "Organization" in this workspace

search_organizations

ChatGPT
Search Organization records by their properties and return resolved values for each match. This workspace calls Organizations "Organization". Common uses: - Find an Organization by name: query.where.filters.primary with a name clause (e.g. operator contains, value "Acme Holdings"). - List or rank Organizations: combine query.where.filters with query.sort (e.g. sort by health score or ARR). Filter scopes: primary (the Organization's own fields). Properties: query.properties is required — specify which columns to return. Organizations carry identity and health/revenue metrics, custom and enriched fields, event analytics, playbook/indicator/segment membership, per-category task/project/note rollups, key roles, custom object links, and collab doc template timestamps. Use search_object_properties for Organization to discover exact keys before referencing them here (and in filters or sort). Pagination: pass the returned nextCursor back as pagination.cursor to load more (null = exhausted).

search_projects

ChatGPT
Search Project records by their properties and return resolved values for each match. Common uses: - Find Projects due soon: query.where.filters.primary on target completion date. - List Projects for an Account: use query.where.filters.account with an Account filter, sorted by completion progress. - Narrow by related Account: use query.where.filters.account (e.g. filter on Account name or health score). - Narrow by related Organization: use query.where.filters.organization. Views: query.where.primaryView — Which Projects to search: active (no status, or a status of type active), inactive (a status of type inactive or complete), or all. Omit to search the active view. Filter scopes: primary (the Project's own fields), account (its related Account), and organization (its related Organization). Properties: query.properties is required — specify which columns to return. Projects include name, target/actual start and completion dates, duration, completion progress, status and category, owner and creator, linked Account/Organization, template, playbook/action IDs, and project custom fields. Use search_object_properties for Project to discover exact keys before referencing them here (and in filters or sort). Pagination: pass the returned nextCursor back as pagination.cursor to load more (null = exhausted).

search_segments

ChatGPT
Search active Account, Organization, or user segments by name and return segment IDs. Returns a nextCursor when more are available. Use this before calling search_accounts, search_organizations, or search_users when the user asks to filter by a segment name. Segment filters require IDs, not names, so first resolve the segment with search_segments, then use the returned id in the segment filter for the matching per-object search tool.

search_tasks

ChatGPT
Search Task records by their properties and return resolved values for each match. Common uses: - Find overdue Tasks: query.where.filters.primary on dueDate with a past-date operator. - List completed Tasks for an Account: set query.where.primaryView to completed and use query.where.filters.account. - Narrow by related Account: use query.where.filters.account (e.g. filter on Account name or health score). - Narrow by related Organization: use query.where.filters.organization. Views: query.where.primaryView — Which Tasks to search: incomplete (still open — no completion date and not in a closed status), completed, or all. Omit to search the incomplete view. Filter scopes: primary (the Task's own fields), account (its related Account), and organization (its related Organization). Properties: query.properties is required — specify which columns to return. Tasks expose name, due/completion dates, duration, status and category, assignee, linked Account/Organization, tags, associated Projects, source, created-by and completed-by, and playbook/action IDs, plus task custom fields. Use search_object_properties for Task to discover exact keys before referencing them here (and in filters or sort). Pagination: pass the returned nextCursor back as pagination.cursor to load more (null = exhausted).

search_team_members

ChatGPT
Search TeamMember records by their properties and return resolved values for each match. Common uses: - Find a TeamMember by name or email: query.where.filters.primary with a name or email clause. - List TeamMembers by role or license status: filter on role or licenseStatus. Views: query.where.primaryView — Which TeamMembers to search: active (holds an active license) or all. Omit to search the all view. Filter scopes: primary (the TeamMember's own fields). Properties: query.properties is required — specify which columns to return. TeamMembers expose identity fields (name, email, title, role, licenseStatus), custom fields (traits), and timestamps (createdAt, updatedAt). Use search_object_properties for TeamMember to discover exact keys before referencing them here (and in filters or sort). Pagination: pass the returned nextCursor back as pagination.cursor to load more (null = exhausted).

search_users

ChatGPT
Search User records by their properties and return resolved values for each match. Common uses: - Find a User by name or email: query.where.filters.primary with a name or email clause. - Find recently engaged Users: filter on lastSeenTimestamp or session counts, optionally sorted by recency. - Narrow by related Account: use query.where.filters.account (e.g. filter on Account name or health score). - Narrow by related Organization: use query.where.filters.organization. Views: query.where.primaryView — Which Users to search: active (not deactivated), churned (deactivated), or all. Applies to the User record itself, unlike churnView, which filters by the parent Account. Omit to search the active view. Filter scopes: primary (the User's own fields), account (its related Account), and organization (its related Organization). Properties: query.properties is required — specify which columns to return. Users expose identity and engagement fields (name, email, sessions, NPS, message timestamps), custom fields, per-event counts and last-seen, and playbook/segment entry dates. Use search_object_properties for User to discover exact keys before referencing them here (and in filters or sort). Pagination: pass the returned nextCursor back as pagination.cursor to load more (null = exhausted).

create_custom_object

Claude

create_note

Claude

create_task

Claude

retrieve_content

Claude

search_accounts

Claude

search_conversations

Claude

search_custom_objects

Claude

search_docs

Claude

search_goals

Claude

search_indicators

Claude

search_meetings

Claude

search_notes

Claude

search_nps_responses

Claude

search_object_properties

Claude

search_projects

Claude

search_segments

Claude

search_surveys

Claude

search_tasks

Claude

search_team_members

Claude

search_users

Claude

Capabilities

Writes

App Stats

41

Tools

ChatGPT, Claude

Platforms

Works with

ChatGPT
Claude

Data refreshed daily