dex_add_contacts_to_group
ChatGPTAdd contacts to a group.
dex_add_related_contacts
ChatGPTLink one or more contacts to a contact as related contacts (e.g. family members, colleagues, people met through them). Relations are symmetric — linking A to B also links B to A — and carry no relationship label, so record the nature of the relationship in a note or the description instead. Resolve names to IDs with dex_search_contacts first. Related contacts appear in dex_get_contact under related_contacts. Re-linking an existing pair is a no-op.
dex_add_tags_to_companies
ChatGPTAdd workspace tags to companies. added counts the tag links this call created; a pair that was already linked is not counted again. Workspace connections only; requires Companies to be enabled for the workspace.
dex_add_tags_to_contacts
ChatGPTAdd tags to contacts.
dex_archive_contacts
ChatGPTArchive or unarchive up to 500 contacts by ID (chunk larger sets into multiple calls). Archived contacts keep all their data (notes, reminders, history) but are hidden from the default contact list, search, and keep-in-touch reminders — the reversible alternative to dex_delete_contacts, recommended for bulk cleanup. Always show the user which contacts will be archived and get their confirmation first. Archiving MORE THAN 20 contacts in one call is server-enforced: the call is rejected (nothing changes) unless it carries confirm: true AND expected_count equal to the number of distinct contact_ids — the count the user confirmed. Restoring (archived: false) is never gated. Find archived contacts with dex_filter_contacts archived_only:true and restore them with archived:false.
dex_complete_keep_in_touch
ChatGPTMark a keep-in-touch contact as done — records that the user was just in touch, so the cadence resets and the next reminder lands one frequency interval from now (the dashboard's "Mark as complete"). Pass snooze_days to instead push the next reminder out without recording a touch (the dashboard's snooze uses 7). Set or clear the cadence itself via dex_update_contact's keep_in_touch field, or dex_set_keep_in_touch for many contacts at once. In a Dex for Teams workspace it acts on the contact's Team or My cadence (pass kind when the contact has both) and returns the rescheduled cadence: "We met" on a Team cadence writes a note shared with the workspace, on a My cadence a private note (returned as note_id), and a viewer gets no note; set or remove a workspace cadence with dex_set_keep_in_touch.
dex_create_calendar_event
ChatGPTCreate an event on the user's connected calendar (primary account by default). For a timed event set start_datetime + end_datetime; for an all-day event set start_date (end_date optional for multi-day). Attendees are added to the invite; whether they are emailed follows the calendar provider's default behavior.
dex_create_company
ChatGPTCreate 1-100 companies in the workspace in one all-or-nothing call: if any one is refused (for example a website another company already has, 409), none is created. Returns the created companies. Search first with dex_list_companies to avoid duplicates. Workspace connections only; requires Companies to be enabled for the workspace.
dex_create_contact
ChatGPTCreate one or more contacts. For a single contact, pass fields directly (first_name, email, etc.). For batch creation (e.g. CSV import), pass a contacts array instead. Returns the created contact(s).
dex_create_custom_field
ChatGPTCreate a new custom field definition.
dex_create_group
ChatGPTCreate a new contact group.
dex_create_note
ChatGPTCreate a new note. Use dex_list_note_types first to discover available note types and pick the most appropriate one.
dex_create_reminder
ChatGPTCreate a new reminder/task.
dex_create_tag
ChatGPTCreate a new tag.
dex_delete_calendar_event
ChatGPTDelete a calendar event by its provider event ID. Irreversible — and if the user organizes the event, deleting it cancels the meeting for all attendees.
dex_delete_contacts
ChatGPTDelete one or more contacts by their IDs. This action is irreversible.
dex_delete_custom_field
ChatGPTDelete a custom field definition. This action is irreversible.
dex_delete_group
ChatGPTDelete a group. This action is irreversible.
dex_delete_note
ChatGPTDelete a note. This action is irreversible.
dex_delete_reminder
ChatGPTDelete a reminder. This action is irreversible.
dex_delete_tag
ChatGPTDelete a tag. This action is irreversible.
dex_draft_attention_item_reply
ChatGPTDraft the user's reply to an attention item's thread with Dex's drafting model, in the user's saved drafting style. Returns { body }; nothing is sent or saved. The reply goes into the thread under its own subject, to the answered message's reply_to (or its sender) as dex_get_attention_item_thread shows — show the draft to the user, and send it (as written or edited) with dex_send_attention_item_reply only once they approve. To revise, pass the current draft and a short instruction ("shorter", "say no politely"). Personal Dex connection only (on a Dex for Teams workspace connection it is refused).
dex_filter_contacts
ChatGPTFilter contacts with the same structured filters as Dex views: tags, groups, company, job title, social profile presence, LinkedIn history, location, interaction dates, keep-in-touch cadence, custom fields, and more. All conditions combine with AND. Up to 100 contact IDs can be fetched in one call; tenant ownership is enforced server-side. Archived contacts are omitted unless archived_only: true. Use this to answer questions like "contacts tagged investor at Google I talked to this year". For plain keyword or geographic search use dex_search_contacts; for full details on one contact use dex_get_contact.
dex_get_attention_item_thread
ChatGPTRead the email thread behind an attention item, live from the user's mailbox, oldest message first. The newest 5 messages are returned (earlier_messages_omitted counts the rest); each carries its id, sender, reply_to when set (where a reply goes), date, whether the user wrote it (from_user), and its text, clipped to 4000 characters. Call this before dex_send_attention_item_reply: its message_id is the id of the message being answered — normally the latest one not from the user. Nothing is stored or changed. Personal Dex connection only (on a Dex for Teams workspace connection it is refused).
dex_get_calendar_event
ChatGPTGet a single calendar event by its provider event ID, including attendees, conferencing links, and recurrence flags, fetched live from the connected Google/Microsoft account. This tool writes nothing: it opts out of the note-metadata refresh the API performs for other clients. When the same address is connected under both providers, pass account_provider from the event returned by dex_list_calendar_events.
dex_get_company
ChatGPTGet one company by ID, archived ones included: its fields (owner as owner_member_id, tags as tag_ids, custom field values), contacts_count ({ current, past }: active contacts with a current or only a past role there) and team: the members who know at least one of its contacts (members, most first) and your own row (you, absent when you know none), each with member_id, known_contacts_count and last_interaction_at. Workspace connections only; requires Companies to be enabled for the workspace.
dex_get_company_activity
ChatGPTThe company's activity across the workspace, newest first: shared notes on its contacts (current and past), each member's first and last email or meeting with them, and the days members connected with them on LinkedIn. Each item is { type: "NOTE" | "INTERACTION", date, data }; data.member_id is the note's author or the member who interacted. An item's company_contacts ([{ contact_id, former }]) lists the contacts it names that have a role at this company, former: true for past roles only; a named contact missing from it has no role at the company (a shared note can tag people from elsewhere). It is omitted when none do. Workspace connections only; requires Companies to be enabled for the workspace.
dex_get_contact
ChatGPTGet a single contact by ID with full details including emails, phone numbers, tags, groups, custom fields, and optionally recent notes/timeline.
dex_get_contact_research
ChatGPTRead the stored Dex Research note for 1–10 contacts without running anything (free and fast). Returns each contact's cited note and structured findings from its last run, or no research key when the contact has never been researched. Use this to check for existing research before paying for dex_research_contacts, to pick up a run that came back in_progress, or to re-read results a large run response truncated.
dex_get_group
ChatGPTGet a single group by ID.
dex_get_note
ChatGPTGet a single note by ID.
dex_get_priority_tiers
ChatGPTRead the user's relationship-priority tiers (tier_number + the label the user sees) and, optionally, the current priority of specific contacts. Priority is a built-in field on every contact, the same one the Priority Map and the contact page's priority control edit. Tiers are numbered from 1 (highest); the defaults are 1 Top, 2 High, 3 Medium, 4 Low, 5 None, but the user may have RENAMED them — always call this first and speak in the user's own labels, never the defaults. A contact with no priority_tier has no priority set, which is different from the "None" tier (a priority the user chose). Set priorities with dex_set_contact_priority. Personal Dex only.
dex_get_reminder
ChatGPTGet a single reminder by ID.
dex_get_tag
ChatGPTGet a single tag by ID.
dex_list_attention_items
ChatGPTList the user's attention items: email threads Dex flagged as waiting on them — a reply someone expects, or an action they need to take (sign, renew, set something up) — newest first, as shown on the Dex home page. Use for "what's waiting on me?", "who do I owe a reply?" or "anything in my inbox I need to deal with?". Each item has a short title (e.g. "Reply to Matt about the intro"), an optional body, the sender, the linked Dex contact when the sender is one, and a link that opens the thread in the mail client. Open items only unless include_resolved is true. Items are generated hourly from the last couple of hours of mail; this tool does not scan the mailbox itself. Personal Dex connection only (on a Dex for Teams workspace connection it is refused).
dex_list_calendar_events
ChatGPTList events across ALL of the user's connected calendars (Google/Microsoft) within a time range. Defaults to the next 7 days when no range is given. An optional free-text query searches titles, descriptions, locations, and attendees — combine it with a wide start/end range to find past or future meetings matching a person or company. Events are fetched live from the providers. A failure across all accounts returns an error; warnings indicate incomplete results when only some accounts failed. Each event's email field identifies which connected account it belongs to — pass that as account_email to get/update/delete it.
dex_list_companies
ChatGPTList the workspace's companies with optional filters, sorting and pagination. Each row is the company (owner as owner_member_id, tags as tag_ids, custom field values) plus its contacts_count, connections_count and last_interaction_at. Filters AND together. Archived companies are left out unless archived is true. Workspace connections only; requires Companies to be enabled for the workspace.
dex_list_company_contacts
ChatGPTList a company's contacts: current (a current role there; the default) or past (only past roles), active contacts before archived ones. Each row has contact_id (names via dex_get_contact), is_archived, the contact's roles at the company, team_connection_count, notes_count and connected_with_you. Workspace connections only; requires Companies to be enabled for the workspace.
dex_list_contacts
ChatGPTList all contacts with cursor-based pagination. Returns lightweight contact summaries (id, name, company, job title). Use dex_get_contact for full details on a specific contact. Use dex_search_contacts for keyword search.
dex_list_custom_fields
ChatGPTList all custom field definitions.
dex_list_group_contacts
ChatGPTList contacts in a group with pagination.
dex_list_groups
ChatGPTList all contact groups. Returns all groups at once.
dex_list_note_types
ChatGPTList available note types (e.g. Meeting, Call, Coffee, Note).
dex_list_notes
ChatGPTList notes on contact timelines with optional filtering by contact.
dex_list_reminders
ChatGPTList reminders/tasks with optional pagination.
dex_list_tags
ChatGPTList all tags with optional pagination.
dex_list_upcoming_reminders_and_birthdays
ChatGPTWhat's coming up for the user inside a date window, like the Dex homepage: the contacts whose birthday falls in the window, the open reminders due in it, and the keep-in-touch contacts due for a touch by the end of it. Defaults to the next 7 days starting today — use days: 30 for the next month, or set from to look at a specific week. Use this for questions like "whose birthday is next week?", "who should I reach out to this week?" or "what do I have coming up?". Recurring reminders are listed on their next occurrence. Birthdays the user already marked done this year on the homepage are omitted. keep_in_touch DOES include contacts already overdue for a touch (flagged is_overdue) — the homepage keeps showing them as due until the touch is logged. Overdue reminders are NOT included — call dex_list_reminders with is_overdue=true for those. In a Dex for Teams workspace: keep_in_touch lists the workspace's Team cadences and your own My cadences due by the end of the window (narrow with kind; each row carries cadence_id, kind and frequency_days, and due_on accounts for a snooze); reminders are the workspace's one-off reminders (workspace reminders do not recur), across the whole workspace rather than only yours; and birthdays are not available, so birthdays is empty and unavailable_in_workspace lists it.
dex_list_workspace_members
ChatGPTList the active members of this connection's Dex for Teams workspace: member_id, name, email, role and is_you (the caller). Use a member's member_id as assignee_id on dex_create_reminder, dex_update_reminder and dex_list_reminders. Pass query (part of a name or email) to find a specific member, e.g. before assigning a reminder. Returns up to limit members (default 50); if has_more is true, pass next_cursor back as cursor with the SAME query to continue; a new query starts without a cursor. Only active members can be assigned. Viewers can read but cannot edit or complete a reminder, so assigning one strands it; prefer owner, admin or standard members. Workspace connections only: a Personal connection has no workspace and this tool is refused.
dex_list_workspaces
ChatGPTList the Dex for Teams workspaces the user belongs to, with their role in each and whether API & MCP access is turned on (api_access_enabled). This MCP connection acts in one place: Personal Dex, or the one workspace its API key was created for (in Dex under Settings → Dex API & MCP). A Personal connection cannot act in a workspace; naming one with ?workspace= is refused. A workspace only works with api_access_enabled true, which a workspace owner or admin turns on in the workspace's settings. Roles: viewer can read; standard, admin and owner can read and write. Deleting or merging contacts, groups or tags, and archiving contacts in bulk, are never available over MCP in a workspace.
dex_merge_contacts
ChatGPTMerge duplicate contacts. Each group of IDs is merged into one contact. The first ID in each group becomes the primary.
dex_remove_contacts_from_group
ChatGPTRemove contacts from a group.
dex_remove_related_contacts
ChatGPTUnlink one or more related contacts from a contact. Relations are symmetric, so removing A↔B clears the link from both sides. The contacts themselves are not modified or deleted.
dex_remove_tags_from_companies
ChatGPTRemove workspace tags from companies. removed counts the tag links this call removed. Workspace connections only; requires Companies to be enabled for the workspace.
dex_remove_tags_from_contacts
ChatGPTRemove tags from contacts.
dex_research_contacts
ChatGPTRun Dex Research on 1–5 contacts: searches the public web, reads the best pages, and stores a cited research note per contact (one-line summary + "Current focus" / "Background" / "Interests" bullets with [[n]] citations into sources) plus structured findings (LinkedIn, website, email, phone) with confidence and evidence. This is a PAID action that takes a minute or more per contact (contacts run in parallel, so the call lasts as long as the slowest one) — confirm with the user before researching a large set, and chunk bigger sets into several calls. A contact researched within the last 30 days returns its cached note at no cost unless force: true. A run auto-fills a contact's EMPTY linkedin/website fields from high-confidence findings (reported in applied) and preserves populated contact fields; a fresh run replaces the previous stored research note, findings, and review statuses. Email/phone findings come back pending for the user to confirm before you apply them with dex_update_contact. outcome: "in_progress" means another request is already researching that contact: read it back later with dex_get_contact_research rather than running again. Results are large — research a few contacts per call to stay under the response limit. Rows that are not ok are listed first so they survive truncation; an ok note that was truncated is still stored and readable with dex_get_contact_research.
dex_resolve_attention_item
ChatGPTMark an attention item done (it leaves the home page), or reopen one with done: false. Use when the user says they handled it some other way or it needs no reply. Sending a reply with dex_send_attention_item_reply already marks it done. Personal Dex connection only (on a Dex for Teams workspace connection it is refused).
dex_search_contacts
ChatGPTSearch contacts by name, email, or any keyword. Returns up to limit results in a single response. Use an empty query to list contacts sorted by most recently interacted.
dex_search_emails
ChatGPTSearch or list emails across ALL of the user's connected mail accounts (Google/Microsoft), fetched live from the providers. Omit query to LIST the most recent emails — set folder:'inbox' for received mail only ("my inbox"); the default includes the user's own sent messages. With query, matches plain text against subject, body, and participants — pass keywords like a name, company, or email domain; provider search operators (from:, to:) are neutralized. Date ranges: without after/before, results cover roughly the last 6 months — when listing, prefer following next_cursor over widening the range, and pass bounds only when the request names a period. Returns message metadata (sender, participants, subject, snippet, date, provider link) — not full bodies. Only listings paginate: search results are a single relevance-ranked page (cursor with query is rejected) — narrow a search with dates or better keywords instead.
dex_send_attention_item_reply
ChatGPTSend the user's reply into an attention item's email thread, from the mailbox that holds it, to the sender of the message being answered — then mark the item done. Irreversible: the email goes to a real person. Only call after the user has seen and approved the exact text. message_id is the id of the message being answered, from dex_get_attention_item_thread. Plain text. An item already done, or one whose thread can no longer be read, is refused and nothing is sent. Personal Dex connection only (on a Dex for Teams workspace connection it is refused).
dex_set_contact_priority
ChatGPTSet or clear the relationship priority of up to 500 contacts in one call (chunk larger sets into multiple calls). It writes the same field the Priority Map and the contact page's priority control edit. Pass tier as the user's tier label (e.g. "Inner circle", matched case-insensitively) or its tier_number, both from dex_get_priority_tiers; null clears the priority, which is different from the "None" tier. An unknown tier is refused and nothing changes. Every value OVERWRITES each contact's current priority, so show the user exactly which contacts go to which tier and get explicit confirmation before calling. Build audiences with dex_filter_contacts (its priority_tier filter finds who is already in a tier). Personal Dex only.
dex_set_custom_field_values
ChatGPTBatch-update custom field values on contacts.
dex_set_keep_in_touch
ChatGPTSet or clear the keep-in-touch cadence for up to 500 contacts in one call (chunk larger sets into multiple calls) — the bulk companion to dex_update_contact's keep_in_touch field. An interval sets how often to stay in touch ("7 days" = weekly, "14 days" = every 2 weeks, "1 mon" = monthly, "42 days" = every 6 weeks, "3 mons" = quarterly, "6 mons" = every 6 months, "1 year" = yearly) — this is "remind me to reach out every N", "stay in touch every N". "never" is the explicit don't-keep-in-touch mark — "no regular outreach", "stop reaching out", "don't keep in touch with them", "stop reminding me about them". "unset" simply clears the cadence so the contact has none — "no cadence", "remove the keep-in-touch" — leaving them unmarked rather than flagged. Every value overwrites whatever cadence each contact already has — and "never"/"unset" leave nothing in its place — so confirm with the user before changing a large set. Marking a due keep-in-touch as done is dex_complete_keep_in_touch, not this tool. In a Dex for Teams workspace (at most 100 contacts per call): kind is required — "team" sets the cadence shared with the whole workspace (needs write access), "my" your own private cadence — and the frequency is one of the workspace's own, chosen with exactly one of cadence (an interval must match a workspace frequency exactly; a month is 30 days, a year 365), frequency_days or frequency_id. A contact that already has a cadence of that kind moves to the new frequency, "unset" removes it, and "never" is not available. This tool never creates frequencies; an owner or admin adds them in Settings → Keep in touch.
dex_update_calendar_event
ChatGPTUpdate an existing calendar event by its provider event ID. Only provided fields change. To reschedule, provide BOTH start_datetime and end_datetime (or start_date for all-day) — new times replace the old ones and can switch an event between timed and all-day. Recurring events: this edits the whole series when given the series ID. Supply idempotency_key from the first attempt to safely retry a timed-out operation; use a fresh key for a new edit.
dex_update_contact
ChatGPTUpdate an existing contact. Only provided fields are changed. For emails and phone numbers, you can add or remove entries — existing ones are preserved automatically.
dex_update_custom_field
ChatGPTUpdate an existing custom field definition.
dex_update_group
ChatGPTUpdate an existing group.
dex_update_note
ChatGPTUpdate an existing note.
dex_update_reminder
ChatGPTUpdate an existing reminder.
dex_update_tag
ChatGPTUpdate an existing tag.