Skip to content

MCP Tool Reference

Reference for every tool the graph8 MCP server exposes. For setup and modes (dev / gtm / all), see the MCP Server page.

Tool counts per mode:

ModeCountIncludes
dev17Repo, install, scan, forms, KB, campaigns
gtm23Studio campaigns, KB, ICPs, personas, global context
all35+Every tool below (default for remote OAuth)

All tools accept JSON arguments and return a JSON-encoded string in the MCP response. Tools annotated as destructive create real records, send real messages, charge credits, or both — confirm with the user before invoking them.


Contacts

g8_search_contacts

Search contacts already in your CRM database. Read-only. Use this to find people you already know about — for prospecting new leads use g8_find_contacts.

Parameters

NameTypeRequiredDescription
emailstringnoExact match on work email
list_idstringnoFilter by contact list ID
namestringnoPartial match on first or last name
job_titlestringnoPartial match on job title
seniority_levelstringnoExact match (e.g. C-Suite, VP, Director, Manager)
company_namestringnoPartial match on company name
countrystringnoExact match on country
pageintegernoPage number, default 1
limitintegernoItems per page, default 50, max 200

Backs: GET /contacts. Returns a paginated list of contact records.

Example

{
"seniority_level": "VP",
"company_name": "acme",
"country": "US",
"limit": 25
}

g8_find_contacts

Search graph8’s 300M+ open data index for prospects you don’t have in your CRM yet. Read-only, but credits are charged per record returned.

Parameters

NameTypeRequiredDescription
filtersarray of objectsyesEach filter is {field, operator, value}
pageintegernoDefault 1
limitintegernoDefault 25, max 200

Available filter fields: first_name, last_name, work_email, job_title, seniority_level, job_department, role, linkedin_url, city, state, country, company_name, company_domain, company_industry, company_employee_count, company_revenue, company_founded_year.

Operators: any_of, contains, all_of, none_of, is_empty, is_not_empty, between, exists.

Backs: POST /search/contacts.

Example

{
"filters": [
{"field": "seniority_level", "operator": "any_of", "value": ["VP", "Director"]},
{"field": "company_industry", "operator": "contains", "value": ["SaaS"]},
{"field": "company_employee_count", "operator": "between", "value": [50, 500]}
],
"limit": 50
}

g8_create_contact

Create a contact in your CRM. Use after g8_lookup_person to persist a prospect, or to add a contact manually. Returns the new contact_id (needed for g8_add_to_sequence and g8_add_to_list).

Parameters

NameTypeRequiredDescription
work_emailstringyesWork email address
first_namestringnoFirst name
last_namestringnoLast name
job_titlestringnoJob title
company_domainstringnoCompany domain (e.g. acme.com)
linkedin_urlstringnoLinkedIn profile URL
direct_phonestringnoDirect phone
mobile_phonestringnoMobile phone
seniority_levelstringnoSeniority (e.g. VP)
citystringnoCity
statestringnoState / province
countrystringnoCountry
list_idintegernoOptionally add to this list immediately

Backs: POST /contacts. Returns the contact record including contact_id.


g8_enrich_contacts

Enrich existing CRM contacts with third-party data via graph8’s multi-provider waterfall. Runs asynchronously and returns a job_id. Credits charged per contact.

Parameters

NameTypeRequiredDescription
contact_idsarray of integersyesCRM contact IDs to enrich
list_idintegeryesList the contacts belong to (required for job tracking)

Backs: POST /enrichment/enrich.


Companies

g8_search_companies

Search companies already in your CRM. Read-only. For new prospects use g8_find_companies.

Parameters

NameTypeRequiredDescription
domainstringnoFilter by company domain
industrystringnoFilter by industry
namestringnoPartial match on name
pageintegernoDefault 1
limitintegernoDefault 50, max 200

Backs: GET /companies.


g8_find_companies

Search graph8’s open data index for companies you don’t track yet. Read-only, credits charged per record returned.

Parameters

NameTypeRequiredDescription
filtersarray of objectsyes{field, operator, value} filters
pageintegernoDefault 1
limitintegernoDefault 25, max 200

Filter fields: name, domain, industry, industry_group, employee_count, revenue, founded_year, country, state, city, linkedin_followers.

Operators: same set as g8_find_contacts.

Backs: POST /search/companies.


Enrichment & Lookup

g8_lookup_person

Look up a single person in graph8’s data index. Returns enriched data (verified email, phone, job title, company, confidence score). Costs 1 credit.

Provide at least one of: email, linkedin_url, or (first_name + last_name + company_domain).

Parameters

NameTypeRequiredDescription
emailstringconditionalPerson’s email
linkedin_urlstringconditionalLinkedIn profile URL
first_namestringconditionalCombine with last_name and company_domain
last_namestringconditional
company_domainstringconditionale.g. acme.com

Backs: POST /enrichment/lookup/person.


g8_lookup_company

Look up a single company. Returns revenue, headcount, industry, tech stack, funding, confidence score. Costs 1 credit.

Provide at least one of: domain or name.

Parameters

NameTypeRequiredDescription
domainstringconditionalCompany domain
namestringconditionalCompany name

Backs: POST /enrichment/lookup/company.


Lists

g8_get_lists

List contact and company lists in your CRM. Read-only.

Parameters

NameTypeRequiredDescription
pageintegernoDefault 1
limitintegernoDefault 50

Backs: GET /lists.


g8_create_list

Create a new empty contact or company list. Returns the list_id.

Parameters

NameTypeRequiredDescription
titlestringyesList name (e.g. "Enterprise Q2 Targets")
typestringno"contacts" or "companies" (default "contacts")

Backs: POST /lists.


g8_add_to_list

Add existing contacts (must already have contact_ids) to a list.

Parameters

NameTypeRequiredDescription
list_idintegeryesTarget list
contact_idsarray of integersyesContact IDs to add

Backs: POST /lists/{list_id}/contacts.


g8_build_contact_list

Search prospects and save matching results to a new list in one call. Credits charged per contact saved — always confirm filters and max_results first.

Parameters

NameTypeRequiredDescription
filtersarray of objectsyesSame filter format as g8_find_contacts
list_titlestringyesName for the new list
max_resultsintegernoCap on contacts saved (default 100)

Backs: POST /search/contacts/save.


Pipeline & CRM

g8_get_deals

List deals in your CRM with optional filters. Read-only.

Parameters

NameTypeRequiredDescription
pageintegernoDefault 1
limitintegernoDefault 50
stage_idstringnoFilter by stage
pipeline_idstringnoFilter by pipeline
searchstringnoFree-text search

Backs: GET /deals.


g8_get_deal

Get details for a single deal. Read-only.

Parameters

NameTypeRequiredDescription
deal_idstringyesDeal ID

Backs: GET /deals/{deal_id}.


g8_get_pipeline

List deal pipelines and their stages. Read-only. No parameters.

Backs: GET /deals/pipelines.


Tasks

g8_get_tasks

List tasks for the current organization. Read-only.

Parameters

NameTypeRequiredDescription
statusstringnoFilter by status
priorityintegernoFilter by priority
assignee_idstringnoFilter by assignee
searchstringnoFree-text search

Backs: GET /tasks.


g8_create_task

Create a task linked to a CRM contact.

Parameters

NameTypeRequiredDescription
contact_idintegeryesContact the task belongs to
titlestringyesTask title
descriptionstringnoTask description
due_datestringnoISO 8601 date string
assignee_idstringnoUser ID of assignee
priorityintegernoPriority value

Backs: POST /contacts/{contact_id}/tasks.


Activity & Notes

g8_get_activities

List recent CRM activities for the current organization. Read-only.

Parameters

NameTypeRequiredDescription
limitintegernoDefault 50
activity_typestringnoFilter by activity type
contact_idstringnoFilter by contact
company_idstringnoFilter by company
deal_idstringnoFilter by deal

Backs: GET /activities.


g8_create_note

Add a note to a CRM contact.

Parameters

NameTypeRequiredDescription
contact_idintegeryesContact to attach the note to
contentstringyesNote body

Backs: POST /contacts/{contact_id}/notes.


Sequences

g8_list_sequences

List available outbound sequences. Read-only. Use to find a sequence_id before calling g8_add_to_sequence.

Parameters

NameTypeRequiredDescription
pageintegernoDefault 1
limitintegernoDefault 50

Backs: GET /sequences.


g8_create_sequence

Create a new outbound sequence (drafted). Optionally include steps and channels.

Parameters

NameTypeRequiredDescription
namestringyesSequence name
user_emailstringyesOwner email
descriptionstringnoDescription
finish_on_replybooleannoDefault true
send_in_same_threadbooleannoDefault false
stepsarray of objectsnoEach step: {step_order, step_type, input_type, time_interval, step_data}
channelsarray of objectsnoEach channel: {channel_id, channel_value, channel_type}
campaign_idstringnoAI Studio campaign to link

Backs: POST /sequences.


g8_get_sequence_preview

Preview a sequence with steps and channels. Read-only — no enrollment.

Parameters

NameTypeRequiredDescription
sequence_idstringyesSequence ID

Backs: GET /sequences/{sequence_id}/preview.


g8_update_sequence

Update sequence metadata. Cannot modify while in a transitional state.

Parameters

NameTypeRequiredDescription
sequence_idstringyesSequence to update
namestringnoNew name
descriptionstringnoNew description
is_sharedbooleannoShared flag
finish_on_replybooleanno
send_in_same_threadbooleanno
wait_for_new_contactsbooleanno

Backs: PATCH /sequences/{sequence_id}.


g8_update_sequence_step

Update a single step in a sequence.

Parameters

NameTypeRequiredDescription
sequence_idstringyesParent sequence
step_idstringyesStep to update
step_dataobjectnoTemplate / content data
time_intervalintegernoDelay (seconds) after previous step
step_typestringnoEMAIL, PHONE, SMS, etc.
input_typestringnoON_DEMAND or TEMPLATE

Backs: PATCH /sequences/{sequence_id}/steps/{step_id}.


g8_add_to_sequence

Enroll contacts in an outbound sequence.

Parameters

NameTypeRequiredDescription
sequence_idstringyesFrom g8_list_sequences
contact_idsarray of integersyesCRM contact IDs
list_idintegeryesList the contacts belong to

Backs: POST /sequences/{sequence_id}/contacts.


g8_pause_sequence

Pause a live sequence — contacts in progress wind down.

Parameters

NameTypeRequiredDescription
sequence_idstringyesSequence to pause

Backs: POST /sequences/{sequence_id}/pause.


g8_resume_sequence

Resume a paused sequence.

Parameters

NameTypeRequiredDescription
sequence_idstringyesSequence to resume

Backs: POST /sequences/{sequence_id}/resume.


g8_get_sequence_analytics

Get overview, performance, engagement, timeline, and contact distribution for a sequence. Read-only.

Parameters

NameTypeRequiredDescription
sequence_idstringyesSequence ID

Backs: GET /sequences/{sequence_id}/analytics.


g8_delete_sequence

Soft-delete (archive) a sequence. Sets is_archived=true. Hidden from UI and excluded from worker processing.

Parameters

NameTypeRequiredDescription
sequence_idstringyesSequence to archive

Backs: DELETE /sequences/{sequence_id}.


Inbox

Multi-channel inbox covering email, SMS, and LinkedIn. Each tool accepts an optional channel (email / sms / linkedin, default email).

g8_list_inbox

List inbox threads across channels. Read-only.

Parameters

NameTypeRequiredDescription
channelstringnoemail, sms, linkedin, or omit for all
sequence_idstringnoFilter by sequence/campaign
statusstringnoFilter by status
assigneestringnoAssignee email
tagstringnoTag ID
pageintegernoDefault 1
page_sizeintegernoDefault 50, max 200

Backs: GET /inbox.


g8_get_reply

Get a single inbox thread with full message history. Read-only.

Parameters

NameTypeRequiredDescription
reply_idstringyesThread / reply ID
channelstringnoDefault "email"

Backs: GET /inbox/{reply_id}.


g8_assign_reply

Assign a user to an inbox thread.

Parameters

NameTypeRequiredDescription
reply_idstringyesThread / reply ID
assignee_emailstringyesUser to assign
channelstringnoDefault "email"

Backs: POST /inbox/{reply_id}/assign.


g8_tag_reply

Attach tags to an inbox thread.

Parameters

NameTypeRequiredDescription
reply_idstringyesThread / reply ID
tag_idsarray of stringsyesTag IDs
channelstringnoDefault "email"

Backs: POST /inbox/{reply_id}/tag.


g8_get_reply_draft

Generate an AI draft reply for a thread. Charges credits. Returns HTTP 402 if the org has insufficient credits.

Parameters

NameTypeRequiredDescription
reply_idstringyesThread / reply ID
channelstringnoDefault "email"

Backs: GET /inbox/{reply_id}/draft.


g8_send_reply

Send a reply through the specified channel.

Parameters

NameTypeRequiredDescription
reply_idstringyesThread to reply to
bodystringyesMessage body
channelstringyesemail, sms, or linkedin
subjectstringnoEmail subject (email channel)
tostringnoRecipient (email / phone / LinkedIn ID)
from_addressstringnoSender mailbox / phone / LinkedIn account

Backs: POST /inbox/{reply_id}/send.


Audience Sync

Push graph8 audience lists to ad platforms (Meta, LinkedIn, Google, X).

g8_list_audience_syncs

List all audience sync configurations. Read-only. No parameters.

Backs: GET /audience-syncs.


g8_create_audience_sync

Create a new audience sync. Returns 409 if a sync already exists for the same audience + platform.

Parameters

NameTypeRequiredDescription
audience_idintegeryesAudience list ID
platformstringyesmeta, linkedin, google, or x
modestringnomirror (add+remove) or append_only (default mirror)
refresh_cadence_hoursintegernoDefault 24
platform_audience_namestringnoCustom name on the platform

Backs: POST /audience-syncs.


g8_get_audience_sync

Get a single sync configuration. Read-only.

Parameters

NameTypeRequiredDescription
config_idintegeryesSync config ID

Backs: GET /audience-syncs/{config_id}.


g8_update_audience_sync

Update sync config (mode, cadence, active flag).

Parameters

NameTypeRequiredDescription
config_idintegeryesSync config ID
modestringnomirror or append_only
refresh_cadence_hoursintegerno
is_activebooleannoEnable / disable

Backs: PATCH /audience-syncs/{config_id}.


g8_delete_audience_sync

Soft-delete a sync configuration. The audience on the ad platform is not deleted — manage that on the platform directly.

Parameters

NameTypeRequiredDescription
config_idintegeryesSync config ID

Backs: DELETE /audience-syncs/{config_id}.


g8_trigger_audience_sync

Manually push the latest audience members to the ad platform now.

Parameters

NameTypeRequiredDescription
config_idintegeryesSync config ID

Backs: POST /audience-syncs/{config_id}/trigger.


g8_get_audience_sync_runs

Get sync run history with status, member counts, and timing. Read-only.

Parameters

NameTypeRequiredDescription
config_idintegeryesSync config ID
limitintegernoDefault 20, max 100

Backs: GET /audience-syncs/{config_id}/runs.


g8_get_audience_sync_errors

Get failed sync runs with error messages. Read-only.

Parameters

NameTypeRequiredDescription
config_idintegeryesSync config ID
limitintegernoDefault 20, max 100

Backs: GET /audience-syncs/{config_id}/errors.


CRM Sync

Push contacts, companies, and list memberships to external CRMs (HubSpot, Salesforce, Pipedrive, Zoho, SugarCRM).

g8_list_crm_syncs

List configured CRM integrations and their connection status. Read-only. No parameters.

Backs: GET /crm-syncs.


g8_push_to_crm_contact

Push contacts to an external CRM.

Parameters

NameTypeRequiredDescription
providerstringyeshubspot, salesforce, pipedrive, zoho, or sugarcrm
recordsarray of objectsyesContact records (each a dict of contact fields)

Backs: POST /crm-syncs/{provider}/contacts/push.


g8_push_to_crm_company

Push companies to an external CRM.

Parameters

NameTypeRequiredDescription
providerstringyesCRM provider
recordsarray of objectsyesCompany records

Backs: POST /crm-syncs/{provider}/companies/push.


g8_push_to_crm_list

Modify CRM list memberships (add/remove contacts from lists). Each record contains list_id, add_contact_ids, remove_contact_ids.

Parameters

NameTypeRequiredDescription
providerstringyesCRM provider
recordsarray of objectsyesMembership operations

Backs: POST /crm-syncs/{provider}/lists/push.


g8_get_crm_fields

Discover available fields for an entity type on a CRM provider — useful for building field mappings before pushing data. Read-only.

Parameters

NameTypeRequiredDescription
providerstringyesCRM provider
entity_typestringnocontacts (default), companies, leads, deals

Backs: GET /crm-syncs/{provider}/fields.


g8_get_crm_status

Check connection health for a CRM provider. Read-only.

Parameters

NameTypeRequiredDescription
providerstringyesCRM provider

Backs: GET /crm-syncs/{provider}/status.


Tool Annotations

Every MCP tool carries one of two annotation presets that hint at side effects:

AnnotationMeaning
readOnlyHint=true, idempotentHint=trueSafe to call repeatedly. No writes, no credits, no external delivery.
destructiveHint=true, openWorldHint=trueWrites to your CRM, sends messages, pushes to external systems, or charges credits. Confirm with the user before invoking.

Tools without an explicit annotation (e.g. g8_create_contact, g8_create_list, g8_add_to_list, g8_create_task, g8_create_note, g8_assign_reply, g8_tag_reply, g8_create_audience_sync, g8_update_audience_sync) still write data — they just aren’t tagged as destructive in the MCP layer. Treat any tool that creates or modifies records as a write.


See Also