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:
| Mode | Count | Includes |
|---|---|---|
dev | 17 | Repo, install, scan, forms, KB, campaigns |
gtm | 23 | Studio campaigns, KB, ICPs, personas, global context |
all | 35+ | 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
| Name | Type | Required | Description |
|---|---|---|---|
email | string | no | Exact match on work email |
list_id | string | no | Filter by contact list ID |
name | string | no | Partial match on first or last name |
job_title | string | no | Partial match on job title |
seniority_level | string | no | Exact match (e.g. C-Suite, VP, Director, Manager) |
company_name | string | no | Partial match on company name |
country | string | no | Exact match on country |
page | integer | no | Page number, default 1 |
limit | integer | no | Items 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
| Name | Type | Required | Description |
|---|---|---|---|
filters | array of objects | yes | Each filter is {field, operator, value} |
page | integer | no | Default 1 |
limit | integer | no | Default 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
| Name | Type | Required | Description |
|---|---|---|---|
work_email | string | yes | Work email address |
first_name | string | no | First name |
last_name | string | no | Last name |
job_title | string | no | Job title |
company_domain | string | no | Company domain (e.g. acme.com) |
linkedin_url | string | no | LinkedIn profile URL |
direct_phone | string | no | Direct phone |
mobile_phone | string | no | Mobile phone |
seniority_level | string | no | Seniority (e.g. VP) |
city | string | no | City |
state | string | no | State / province |
country | string | no | Country |
list_id | integer | no | Optionally 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
| Name | Type | Required | Description |
|---|---|---|---|
contact_ids | array of integers | yes | CRM contact IDs to enrich |
list_id | integer | yes | List 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
| Name | Type | Required | Description |
|---|---|---|---|
domain | string | no | Filter by company domain |
industry | string | no | Filter by industry |
name | string | no | Partial match on name |
page | integer | no | Default 1 |
limit | integer | no | Default 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
| Name | Type | Required | Description |
|---|---|---|---|
filters | array of objects | yes | {field, operator, value} filters |
page | integer | no | Default 1 |
limit | integer | no | Default 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
| Name | Type | Required | Description |
|---|---|---|---|
email | string | conditional | Person’s email |
linkedin_url | string | conditional | LinkedIn profile URL |
first_name | string | conditional | Combine with last_name and company_domain |
last_name | string | conditional | |
company_domain | string | conditional | e.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
| Name | Type | Required | Description |
|---|---|---|---|
domain | string | conditional | Company domain |
name | string | conditional | Company name |
Backs: POST /enrichment/lookup/company.
Lists
g8_get_lists
List contact and company lists in your CRM. Read-only.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
page | integer | no | Default 1 |
limit | integer | no | Default 50 |
Backs: GET /lists.
g8_create_list
Create a new empty contact or company list. Returns the list_id.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
title | string | yes | List name (e.g. "Enterprise Q2 Targets") |
type | string | no | "contacts" or "companies" (default "contacts") |
Backs: POST /lists.
g8_add_to_list
Add existing contacts (must already have contact_ids) to a list.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
list_id | integer | yes | Target list |
contact_ids | array of integers | yes | Contact 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
| Name | Type | Required | Description |
|---|---|---|---|
filters | array of objects | yes | Same filter format as g8_find_contacts |
list_title | string | yes | Name for the new list |
max_results | integer | no | Cap 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
| Name | Type | Required | Description |
|---|---|---|---|
page | integer | no | Default 1 |
limit | integer | no | Default 50 |
stage_id | string | no | Filter by stage |
pipeline_id | string | no | Filter by pipeline |
search | string | no | Free-text search |
Backs: GET /deals.
g8_get_deal
Get details for a single deal. Read-only.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
deal_id | string | yes | Deal 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
| Name | Type | Required | Description |
|---|---|---|---|
status | string | no | Filter by status |
priority | integer | no | Filter by priority |
assignee_id | string | no | Filter by assignee |
search | string | no | Free-text search |
Backs: GET /tasks.
g8_create_task
Create a task linked to a CRM contact.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
contact_id | integer | yes | Contact the task belongs to |
title | string | yes | Task title |
description | string | no | Task description |
due_date | string | no | ISO 8601 date string |
assignee_id | string | no | User ID of assignee |
priority | integer | no | Priority value |
Backs: POST /contacts/{contact_id}/tasks.
Activity & Notes
g8_get_activities
List recent CRM activities for the current organization. Read-only.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
limit | integer | no | Default 50 |
activity_type | string | no | Filter by activity type |
contact_id | string | no | Filter by contact |
company_id | string | no | Filter by company |
deal_id | string | no | Filter by deal |
Backs: GET /activities.
g8_create_note
Add a note to a CRM contact.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
contact_id | integer | yes | Contact to attach the note to |
content | string | yes | Note 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
| Name | Type | Required | Description |
|---|---|---|---|
page | integer | no | Default 1 |
limit | integer | no | Default 50 |
Backs: GET /sequences.
g8_create_sequence
Create a new outbound sequence (drafted). Optionally include steps and channels.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
name | string | yes | Sequence name |
user_email | string | yes | Owner email |
description | string | no | Description |
finish_on_reply | boolean | no | Default true |
send_in_same_thread | boolean | no | Default false |
steps | array of objects | no | Each step: {step_order, step_type, input_type, time_interval, step_data} |
channels | array of objects | no | Each channel: {channel_id, channel_value, channel_type} |
campaign_id | string | no | AI Studio campaign to link |
Backs: POST /sequences.
g8_get_sequence_preview
Preview a sequence with steps and channels. Read-only — no enrollment.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
sequence_id | string | yes | Sequence ID |
Backs: GET /sequences/{sequence_id}/preview.
g8_update_sequence
Update sequence metadata. Cannot modify while in a transitional state.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
sequence_id | string | yes | Sequence to update |
name | string | no | New name |
description | string | no | New description |
is_shared | boolean | no | Shared flag |
finish_on_reply | boolean | no | |
send_in_same_thread | boolean | no | |
wait_for_new_contacts | boolean | no |
Backs: PATCH /sequences/{sequence_id}.
g8_update_sequence_step
Update a single step in a sequence.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
sequence_id | string | yes | Parent sequence |
step_id | string | yes | Step to update |
step_data | object | no | Template / content data |
time_interval | integer | no | Delay (seconds) after previous step |
step_type | string | no | EMAIL, PHONE, SMS, etc. |
input_type | string | no | ON_DEMAND or TEMPLATE |
Backs: PATCH /sequences/{sequence_id}/steps/{step_id}.
g8_add_to_sequence
Enroll contacts in an outbound sequence.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
sequence_id | string | yes | From g8_list_sequences |
contact_ids | array of integers | yes | CRM contact IDs |
list_id | integer | yes | List the contacts belong to |
Backs: POST /sequences/{sequence_id}/contacts.
g8_pause_sequence
Pause a live sequence — contacts in progress wind down.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
sequence_id | string | yes | Sequence to pause |
Backs: POST /sequences/{sequence_id}/pause.
g8_resume_sequence
Resume a paused sequence.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
sequence_id | string | yes | Sequence 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
| Name | Type | Required | Description |
|---|---|---|---|
sequence_id | string | yes | Sequence 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
| Name | Type | Required | Description |
|---|---|---|---|
sequence_id | string | yes | Sequence 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
| Name | Type | Required | Description |
|---|---|---|---|
channel | string | no | email, sms, linkedin, or omit for all |
sequence_id | string | no | Filter by sequence/campaign |
status | string | no | Filter by status |
assignee | string | no | Assignee email |
tag | string | no | Tag ID |
page | integer | no | Default 1 |
page_size | integer | no | Default 50, max 200 |
Backs: GET /inbox.
g8_get_reply
Get a single inbox thread with full message history. Read-only.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
reply_id | string | yes | Thread / reply ID |
channel | string | no | Default "email" |
Backs: GET /inbox/{reply_id}.
g8_assign_reply
Assign a user to an inbox thread.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
reply_id | string | yes | Thread / reply ID |
assignee_email | string | yes | User to assign |
channel | string | no | Default "email" |
Backs: POST /inbox/{reply_id}/assign.
g8_tag_reply
Attach tags to an inbox thread.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
reply_id | string | yes | Thread / reply ID |
tag_ids | array of strings | yes | Tag IDs |
channel | string | no | Default "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
| Name | Type | Required | Description |
|---|---|---|---|
reply_id | string | yes | Thread / reply ID |
channel | string | no | Default "email" |
Backs: GET /inbox/{reply_id}/draft.
g8_send_reply
Send a reply through the specified channel.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
reply_id | string | yes | Thread to reply to |
body | string | yes | Message body |
channel | string | yes | email, sms, or linkedin |
subject | string | no | Email subject (email channel) |
to | string | no | Recipient (email / phone / LinkedIn ID) |
from_address | string | no | Sender 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
| Name | Type | Required | Description |
|---|---|---|---|
audience_id | integer | yes | Audience list ID |
platform | string | yes | meta, linkedin, google, or x |
mode | string | no | mirror (add+remove) or append_only (default mirror) |
refresh_cadence_hours | integer | no | Default 24 |
platform_audience_name | string | no | Custom name on the platform |
Backs: POST /audience-syncs.
g8_get_audience_sync
Get a single sync configuration. Read-only.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
config_id | integer | yes | Sync config ID |
Backs: GET /audience-syncs/{config_id}.
g8_update_audience_sync
Update sync config (mode, cadence, active flag).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
config_id | integer | yes | Sync config ID |
mode | string | no | mirror or append_only |
refresh_cadence_hours | integer | no | |
is_active | boolean | no | Enable / 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
| Name | Type | Required | Description |
|---|---|---|---|
config_id | integer | yes | Sync config ID |
Backs: DELETE /audience-syncs/{config_id}.
g8_trigger_audience_sync
Manually push the latest audience members to the ad platform now.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
config_id | integer | yes | Sync 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
| Name | Type | Required | Description |
|---|---|---|---|
config_id | integer | yes | Sync config ID |
limit | integer | no | Default 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
| Name | Type | Required | Description |
|---|---|---|---|
config_id | integer | yes | Sync config ID |
limit | integer | no | Default 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
| Name | Type | Required | Description |
|---|---|---|---|
provider | string | yes | hubspot, salesforce, pipedrive, zoho, or sugarcrm |
records | array of objects | yes | Contact 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
| Name | Type | Required | Description |
|---|---|---|---|
provider | string | yes | CRM provider |
records | array of objects | yes | Company 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
| Name | Type | Required | Description |
|---|---|---|---|
provider | string | yes | CRM provider |
records | array of objects | yes | Membership 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
| Name | Type | Required | Description |
|---|---|---|---|
provider | string | yes | CRM provider |
entity_type | string | no | contacts (default), companies, leads, deals |
Backs: GET /crm-syncs/{provider}/fields.
g8_get_crm_status
Check connection health for a CRM provider. Read-only.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
provider | string | yes | CRM provider |
Backs: GET /crm-syncs/{provider}/status.
Tool Annotations
Every MCP tool carries one of two annotation presets that hint at side effects:
| Annotation | Meaning |
|---|---|
readOnlyHint=true, idempotentHint=true | Safe to call repeatedly. No writes, no credits, no external delivery. |
destructiveHint=true, openWorldHint=true | Writes 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
- MCP Server setup — install, modes, OAuth, environment variables
- What You Can Ask — natural-language prompt patterns
- CLI — same operations from the command line
- REST API: Contacts, Companies, Lists, Sequences — underlying HTTP endpoints