> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended** (the `-y` flags skip prompts, so the command runs without an interactive terminal):
> ```bash
> npx -y @scalekit-inc/cli setup -y
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup -y
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for other Agent Skills-compatible agents in `~/.agents/skills`.
> Skills: integrate-agentkit, implement-saaskit, add-mcp-oauth, implement-sso, implement-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Connect AI agents to SureContact

The SureContact connector lets your AI agent act in each user's SureContact account. Each user connects their own SureContact access token once, and Scalekit sends it with every call, so your agent never handles credentials. It comes with 126 tools.

**Authentication:** Bearer Token
**Categories:** CRM & Sales, Marketing
**Tools:** 126: 61 read, 55 write, 10 destructive
**Users sign in with:** Access token
**Built by:** Scalekit connector
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=SURECONTACT)

## Setup

1. ### Install the SDK

   **Node.js**

   ```bash
   npm install @scalekit-sdk/node dotenv
   ```

   **Python**

   ```bash
   pip install scalekit-sdk-python python-dotenv
   ```

2. ### Set your credentials

   Add your Scalekit credentials to your `.env` file. Find values in **[app.scalekit.com](https://app.scalekit.com)** > **Developers** > **API Credentials**.

   ```sh title=".env"
   SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
   SCALEKIT_CLIENT_ID=<your-client-id>
   SCALEKIT_CLIENT_SECRET=<your-client-secret>
   ```

3. ### Create the SureContact connection

   In **AgentKit > Connections**, create a SureContact connection. The name you give it is the `connection_name` your code passes. See [Configure connections](/agentkit/connections/).

4. ### Authorize a user and make your first call

   **Node.js** (`quickstart.mts`)

   ```typescript
   import { ScalekitClient } from '@scalekit-sdk/node'
   import 'dotenv/config'
   import { createInterface } from 'node:readline/promises'

   const scalekit = new ScalekitClient(
     process.env.SCALEKIT_ENVIRONMENT_URL,
     process.env.SCALEKIT_CLIENT_ID,
     process.env.SCALEKIT_CLIENT_SECRET,
   )
   const actions = scalekit.actions

   const connector = 'surecontact'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize SureContact:', link)
   const rl = createInterface({ input: process.stdin, output: process.stdout })
   await rl.question('Press Enter after authorizing...')
   rl.close()

   // Make your first call
   const result = await actions.executeTool({
     connector,
     identifier,
     toolName: 'surecontact_automations_list',
     toolInput: {},
   })
   console.log(result)
   ```

   ```bash
   npx tsx quickstart.mts
   ```

   **Python** (`quickstart.py`)

   ```python
   import os
   from scalekit import ScalekitClient
   from dotenv import load_dotenv
   load_dotenv()

   scalekit_client = ScalekitClient(
       env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),
       client_id=os.getenv("SCALEKIT_CLIENT_ID"),
       client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),
   )
   actions = scalekit_client.actions

   connection_name = "surecontact"
   identifier = "user_123"

   # Generate an authorization link for the user
   link_response = actions.get_authorization_link(
       connection_name=connection_name,
       identifier=identifier,
   )
   print("Authorize SureContact:", link_response.link)
   input("Press Enter after authorizing...")

   # Make your first call
   result = actions.execute_tool(
       tool_input={},
       tool_name="surecontact_automations_list",
       connection_name=connection_name,
       identifier=identifier,
   )
   print(result)
   ```

   ```bash
   python quickstart.py
   ```

   Each user opens the link once and enters their SureContact credentials there. See [Authorize a user](/agentkit/tools/authorize/) for the full flow and statuses.

## Tools

Pass the exact name to `execute_tool`, with an input like each tool's example. To ask for a tool that's missing, use the [request form](https://scalekitsupport.portal.usepylon.com/forms/request-a-connector-tool).

**Node.js**

```typescript
const result = await actions.executeTool({
  toolName: 'surecontact_activity_get',
  toolInput: {
    activity_uuid: '<activity_uuid>',
  },
  connector: 'surecontact',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="surecontact_activity_get",
    tool_input={
        "activity_uuid": "<activity_uuid>",
    },
    connection_name="surecontact",
    identifier="user_123",
)
```

`result.data` is the app's response as JSON, and `result.execution_id` (`executionId` in Node.js) is the ID of the call.

### `surecontact_activity_get`

Get Activity · Read-only

Retrieve one contact activity by its UUID.
Returns the activity with its type, type label, description, metadata and timestamps.
Use activity_get when you have an activity UUID from contact_activities_list.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `activity_uuid` (`string`, required): UUID of the activity. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"activity_uuid":"<activity_uuid>"}`

### `surecontact_automation_get`

Get Automation · Read-only

Retrieve one automation by its UUID.
Returns the automation definition and status.
Use automation_get when you have an automation UUID from automations_list.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `automation_uuid` (`string`, required): UUID of the automation. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"automation_uuid":"<automation_uuid>"}`

### `surecontact_automations_list`

List Automations · Read-only

List the automations of the workspace, with page-based pagination.
Returns automations with uuid, name and status.
Use automations_list to find automation UUIDs for contact_automation_start. Use sequences_list for email sequences only.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page` (`integer`, optional): Page number of results to return, starting at 1. Use with per_page to walk through large result sets.
- `per_page` (`integer`, optional): Number of records to return per page, from 1 to 100. Example: 25.

Example input: `{}`

### `surecontact_campaign_contacts_list`

List Campaign Contacts · Read-only

List the contacts a campaign was sent to, with per-contact engagement and page-based pagination.
Returns contacts with sent, opened and clicked timestamps and delivery status.
Use campaign_contacts_list to analyse engagement per contact. Use campaign_get for aggregate stats.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `campaign_uuid` (`string`, required): UUID of the campaign. Example: 550e8400-e29b-41d4-a716-446655440000.
- `page` (`integer`, optional): Page number of results to return, starting at 1. Use with per_page to walk through large result sets.
- `per_page` (`integer`, optional): Number of records to return per page, from 1 to 100. Example: 25.

Example input: `{"campaign_uuid":"<campaign_uuid>"}`

### `surecontact_campaign_get`

Get Campaign · Read-only

Retrieve one campaign by its UUID, including content, recipient filters and stats.
Returns the full campaign record.
Use campaign_get for details. Use campaign_progress_get while a campaign is sending.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `campaign_uuid` (`string`, required): UUID of the campaign. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"campaign_uuid":"<campaign_uuid>"}`

### `surecontact_campaign_progress_get`

Get Campaign Sending Progress · Read-only

Get live sending progress for a campaign that is currently sending.
Returns total, sent, failed and remaining counts with the completion percentage.
Use campaign_progress_get to poll a send in real time; it returns an error for campaigns not in sending status.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `campaign_uuid` (`string`, required): UUID of the campaign. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"campaign_uuid":"<campaign_uuid>"}`

### `surecontact_campaign_recipients_count_get`

Get Campaign Recipient Count · Read-only

Count the contacts that match a campaign's recipient filters.
Returns a count.
Use campaign_recipients_count_get when you need only the number. Use campaign_recipients_list to see sample contacts.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `campaign_uuid` (`string`, required): UUID of the campaign. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"campaign_uuid":"<campaign_uuid>"}`

### `surecontact_campaign_recipients_list`

List Campaign Recipients · Read-only

Get a sample of up to 100 contacts that match a campaign's recipient filters.
Returns contacts with uuid, email and name.
Use campaign_recipients_list to confirm the audience before sending. Use campaign_recipients_count_get for only the total.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `campaign_uuid` (`string`, required): UUID of the campaign. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"campaign_uuid":"<campaign_uuid>"}`

### `surecontact_campaigns_list`

List Campaigns · Read-only

List email and SMS campaigns of the workspace, with page-based pagination.
Returns campaigns with uuid, name, subject, sender, status and recipient count.
Use campaigns_list to browse campaigns. Use campaign_get for one campaign with its content and stats.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page` (`integer`, optional): Page number of results to return, starting at 1. Use with per_page to walk through large result sets.
- `per_page` (`integer`, optional): Number of records to return per page, from 1 to 100. Example: 25.

Example input: `{}`

### `surecontact_companies_list`

List Companies · Read-only

List companies in the workspace with page-based pagination.
Returns a paginated list of companies with their uuid, name and key profile fields.
Use companies_list to browse companies. Use company_get for one company by UUID.
Requires a SureContact plan that includes the Companies module.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page` (`integer`, optional): Page number of results to return, starting at 1. Use with per_page to walk through large result sets.
- `per_page` (`integer`, optional): Number of records to return per page, from 1 to 100. Example: 25.

Example input: `{}`

### `surecontact_company_contacts_list`

List Company Contacts · Read-only

List the contacts linked to a company, primary contact first, with page-based pagination.
Returns contacts with link details such as is_primary, role and linked_via.
Use company_contacts_list to see who works at a company. Use company_contact_link to add one.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `company_uuid` (`string`, required): UUID of the company. Example: 550e8400-e29b-41d4-a716-446655440000.
- `page` (`integer`, optional): Page number of results to return, starting at 1. Use with per_page to walk through large result sets.
- `per_page` (`integer`, optional): Number of records to return per page, from 1 to 100. Example: 25.

Example input: `{"company_uuid":"<company_uuid>"}`

### `surecontact_company_custom_field_get`

Get Company Custom Field · Read-only

Retrieve one company custom field definition by UUID.
Returns the custom field with its uuid, name and type.
Use company_custom_field_get when you have a field UUID from company_custom_fields_list.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `company_custom_field_uuid` (`string`, required): UUID of the company custom field. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"company_custom_field_uuid":"<company_custom_field_uuid>"}`

### `surecontact_company_custom_fields_list`

List Company Custom Fields · Read-only

List the company custom field definitions of the workspace.
Returns each company custom field with its uuid, name and type.
Use company_custom_fields_list to discover company custom fields. Use custom_fields_list for contact custom fields.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `surecontact_company_deals_list`

List Company Deals · Read-only

List the deals associated with a company, with page-based pagination.
Returns the deals linked to the company.
Use company_deals_list to see a company's pipeline. Use deal_get for one deal.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `company_uuid` (`string`, required): UUID of the company. Example: 550e8400-e29b-41d4-a716-446655440000.
- `page` (`integer`, optional): Page number of results to return, starting at 1. Use with per_page to walk through large result sets.
- `per_page` (`integer`, optional): Number of records to return per page, from 1 to 100. Example: 25.

Example input: `{"company_uuid":"<company_uuid>"}`

### `surecontact_company_get`

Get Company · Read-only

Retrieve one company by its UUID, including its creator, parent company and custom values.
Returns the company record.
Use company_get for one company. Use companies_list to browse.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `company_uuid` (`string`, required): UUID of the company. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"company_uuid":"<company_uuid>"}`

### `surecontact_company_note_get`

Get Company Note · Read-only

Retrieve one company note by its UUID.
Returns the note with its title, content, creator and timestamps.
Use company_note_get when you have a note UUID from company_notes_list.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `company_note_uuid` (`string`, required): UUID of the company note. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"company_note_uuid":"<company_note_uuid>"}`

### `surecontact_company_notes_list`

List Company Notes · Read-only

List the notes on one company, newest first, with page-based pagination.
Returns notes with uuid, title, content, creator and timestamps.
Use company_notes_list to read a company's notes. Use company_note_get for one note.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `company_uuid` (`string`, required): UUID of the company. Example: 550e8400-e29b-41d4-a716-446655440000.
- `page` (`integer`, optional): Page number of results to return, starting at 1. Use with per_page to walk through large result sets.
- `per_page` (`integer`, optional): Number of records to return per page, from 1 to 100. Example: 25.

Example input: `{"company_uuid":"<company_uuid>"}`

### `surecontact_company_tasks_list`

List Company Tasks · Read-only

List the tasks associated with a company, with page-based pagination.
Returns the tasks linked to the company.
Use company_tasks_list to see open work for a company. Use task_get for one task.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `company_uuid` (`string`, required): UUID of the company. Example: 550e8400-e29b-41d4-a716-446655440000.
- `page` (`integer`, optional): Page number of results to return, starting at 1. Use with per_page to walk through large result sets.
- `per_page` (`integer`, optional): Number of records to return per page, from 1 to 100. Example: 25.

Example input: `{"company_uuid":"<company_uuid>"}`

### `surecontact_contact_activities_list`

List Contact Activities · Read-only

List the activity timeline of one contact, newest first, with page-based pagination.
Returns activities with uuid, type, type label, description, metadata and timestamps.
Use contact_activities_list to review what a contact did. Use activity_get for one activity by UUID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `contact_uuid` (`string`, required): UUID of the contact. Example: 550e8400-e29b-41d4-a716-446655440000.
- `page` (`integer`, optional): Page number of results to return, starting at 1. Use with per_page to walk through large result sets.
- `per_page` (`integer`, optional): Number of records to return per page, from 1 to 100. Example: 25.

Example input: `{"contact_uuid":"<contact_uuid>"}`

### `surecontact_contact_get`

Get Contact · Read-only

Retrieve one contact by its UUID.
Returns the contact record with its uuid, email, name fields, status and timestamps.
Use contact_get when you have the contact UUID. Use contact_get_by_email when you only have the email address.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `contact_uuid` (`string`, required): UUID of the contact. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"contact_uuid":"<contact_uuid>"}`

### `surecontact_contact_get_by_email`

Get Contact by Email · Read-only

Look up one contact by its exact email address.
Returns the contact record (uuid, email, first and last name, full name, status, timestamps), or a 404 error when no contact has that email.
Use contact_get_by_email when you know the email. Use contacts_list to search by partial text.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `email` (`string`, required): Exact email address of the contact to look up. Example: jane@example.com.

Example input: `{"email":"<email>"}`

### `surecontact_contact_notes_list`

List Contact Notes · Read-only

List the notes on one contact, newest first, with page-based pagination.
Returns notes with uuid, content, creator and timestamps.
Use contact_notes_list to read all notes on a contact. Use note_get for one note by UUID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `contact_uuid` (`string`, required): UUID of the contact. Example: 550e8400-e29b-41d4-a716-446655440000.
- `page` (`integer`, optional): Page number of results to return, starting at 1. Use with per_page to walk through large result sets.
- `per_page` (`integer`, optional): Number of records to return per page, from 1 to 100. Example: 25.

Example input: `{"contact_uuid":"<contact_uuid>"}`

### `surecontact_contact_purchase_stats_get`

Get Contact Purchase Stats · Read-only

Retrieve purchase statistics for one contact.
Returns total purchases, total spent, average order value and the first and last purchase dates.
Use contact_purchase_stats_get for totals. Use contact_purchases_list for the individual purchases.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `contact_uuid` (`string`, required): UUID of the contact. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"contact_uuid":"<contact_uuid>"}`

### `surecontact_contact_purchases_list`

List Contact Purchases · Read-only

List the purchase history of one contact, newest first, with page-based pagination.
Returns purchases with uuid, source, source order ID, status, total amount, currency and products.
Use contact_purchases_list for one contact. Use purchases_list for purchases across the workspace. Use contact_purchase_stats_get for totals only.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `contact_uuid` (`string`, required): UUID of the contact. Example: 550e8400-e29b-41d4-a716-446655440000.
- `page` (`integer`, optional): Page number of results to return, starting at 1. Use with per_page to walk through large result sets.
- `per_page` (`integer`, optional): Number of records to return per page, from 1 to 100. Example: 25.

Example input: `{"contact_uuid":"<contact_uuid>"}`

### `surecontact_contacts_list`

List Contacts · Read-only

List contacts in the SureContact workspace, with optional text search, company exclusion and custom-field sorting, plus page-based pagination.
Returns a paginated list of contacts with each contact's uuid, email, name, status and timestamps.
Use contacts_list to browse or search. Use contact_get_by_email when you already know the exact email address.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `exclude_company_uuid` (`string`, optional): UUID of a company whose linked contacts should be excluded from the results. Example: 550e8400-e29b-41d4-a716-446655440000.
- `page` (`integer`, optional): Page number of results to return, starting at 1. Use with per_page to walk through large result sets.
- `per_page` (`integer`, optional): Number of records to return per page, from 1 to 100. Example: 25.
- `search` (`string`, optional): Free-text search term used to filter results by name or email. Max 100 characters. Example: acme.
- `sort_by_custom_field` (`string`, optional): UUID of a contact custom field to sort the results by. Find it with the custom fields list tool. Example: 550e8400-e29b-41d4-a716-446655440000.
- `sort_order` (`string`, optional): Sort direction, asc for ascending or desc for descending. Example: desc.

Example input: `{}`

### `surecontact_custom_field_get`

Get Custom Field · Read-only

Retrieve one contact custom field definition by UUID.
Returns the custom field with its uuid, name and type.
Use custom_field_get when you have a UUID from custom_fields_list.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `custom_field_uuid` (`string`, required): UUID of the custom field. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"custom_field_uuid":"<custom_field_uuid>"}`

### `surecontact_custom_fields_list`

List Custom Fields · Read-only

List the contact custom field definitions of the workspace, flat or grouped by section.
Returns each custom field with its uuid, name and type.
Use custom_fields_list to find field UUIDs and names before setting custom_fields on a contact. Use company_custom_fields_list for company fields.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `grouped` (`boolean`, optional): Set to true to receive custom fields nested under their sections. Leave empty for the default flat list.

Example input: `{}`

### `surecontact_deal_activities_list`

List Deal Activities · Read-only

List the activity history of one deal, with page-based pagination.
Returns the deal's activities.
Use deal_activities_list to see what changed on a deal. Use deal_get for its current state.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `deal_uuid` (`string`, required): UUID of the deal. Example: 550e8400-e29b-41d4-a716-446655440000.
- `page` (`integer`, optional): Page number of results to return, starting at 1. Use with per_page to walk through large result sets.
- `per_page` (`integer`, optional): Number of records to return per page, from 1 to 100. Example: 25.

Example input: `{"deal_uuid":"<deal_uuid>"}`

### `surecontact_deal_get`

Get Deal · Read-only

Retrieve one deal by its UUID.
Returns the deal record.
Use deal_get when you have a deal UUID from deals_list.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `deal_uuid` (`string`, required): UUID of the deal. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"deal_uuid":"<deal_uuid>"}`

### `surecontact_deal_note_get`

Get Deal Note · Read-only

Retrieve one deal note by its UUID.
Returns the note with its title, content and timestamps.
Use deal_note_get when you have a note UUID from deal_notes_list.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `deal_note_uuid` (`string`, required): UUID of the deal note. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"deal_note_uuid":"<deal_note_uuid>"}`

### `surecontact_deal_notes_list`

List Deal Notes · Read-only

List the notes on one deal, with page-based pagination.
Returns notes with title, content, creator and timestamps.
Use deal_notes_list to read a deal's notes. Use deal_note_get for one note.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `deal_uuid` (`string`, required): UUID of the deal. Example: 550e8400-e29b-41d4-a716-446655440000.
- `page` (`integer`, optional): Page number of results to return, starting at 1. Use with per_page to walk through large result sets.
- `per_page` (`integer`, optional): Number of records to return per page, from 1 to 100. Example: 25.

Example input: `{"deal_uuid":"<deal_uuid>"}`

### `surecontact_deals_list`

List Deals · Read-only

List deals in the workspace with page-based pagination.
Returns a paginated list of deals.
Use deals_list to browse the pipeline. Use deal_get for one deal by UUID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page` (`integer`, optional): Page number of results to return, starting at 1. Use with per_page to walk through large result sets.
- `per_page` (`integer`, optional): Number of records to return per page, from 1 to 100. Example: 25.

Example input: `{}`

### `surecontact_email_template_get`

Get Email Template · Read-only

Retrieve one email template by its UUID.
Returns the template with its subject and HTML content.
Use email_template_get when you have a template UUID from email_templates_list.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `template_uuid` (`string`, required): UUID of the template. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"template_uuid":"<template_uuid>"}`

### `surecontact_email_templates_list`

List Email Templates · Read-only

List email templates, with optional search, type, folder and sorting.
Returns templates with uuid, name and type.
Use email_templates_list to find template UUIDs for email_send. Use email_template_get for one template.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `folder_uuid` (`string`, optional): UUID of a folder to restrict results to. Example: 550e8400-e29b-41d4-a716-446655440000.
- `per_page` (`integer`, optional): Number of records to return per page, from 1 to 100. Example: 25.
- `search` (`string`, optional): Free-text search term used to filter results by name or email. Max 100 characters. Example: acme. Max 255 characters.
- `sort_by` (`string`, optional): Field name to sort the results by. Example: created_at.
- `sort_order` (`string`, optional): Sort direction, asc for ascending or desc for descending. Example: desc.
- `type` (`string`, optional): Filter by template type. Example: email.

Example input: `{}`

### `surecontact_form_get`

Get Form · Read-only

Retrieve one form by its UUID.
Returns the form definition and settings.
Use form_get when you have a form UUID from forms_list.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `form_uuid` (`string`, required): UUID of the form. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"form_uuid":"<form_uuid>"}`

### `surecontact_form_submissions_list`

List Form Submissions · Read-only

List submissions of one form, with optional search, status and date range filters.
Returns the form submissions.
Use form_submissions_list to read leads captured by a form. Use form_get for the form itself.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `form_uuid` (`string`, required): UUID of the form. Example: 550e8400-e29b-41d4-a716-446655440000.
- `from` (`string`, optional): Only return records on or after this date, as an ISO 8601 date or datetime. Example: 2026-01-01. Must be a valid date.
- `per_page` (`integer`, optional): Number of records to return per page, from 1 to 100. Example: 25.
- `search` (`string`, optional): Free-text search term used to filter results by name or email. Max 100 characters. Example: acme. Must match the regex /^[\w\s-@.]+$/. Max 100 characters.
- `status` (`string`, optional): Filter by status value. Example: published.
- `to` (`string`, optional): Only return records on or before this date, as an ISO 8601 date or datetime. Example: 2026-01-31. Must be a valid date.

Example input: `{"form_uuid":"<form_uuid>"}`

### `surecontact_forms_list`

List Forms · Read-only

List the forms of the workspace, with optional search, status filter and sorting.
Returns forms with uuid, name, status and submission count.
Use forms_list to find form UUIDs. Use form_get for one form.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `per_page` (`integer`, optional): Number of records to return per page, from 1 to 100. Example: 25.
- `search` (`string`, optional): Free-text search term used to filter results by name or email. Max 100 characters. Example: acme. Must match the regex /^[\w\s-@.]+$/. Max 100 characters.
- `sort_by` (`string`, optional): Field name to sort the results by. Example: created_at.
- `sort_order` (`string`, optional): Sort direction, asc for ascending or desc for descending. Example: desc.
- `status` (`string`, optional): Filter by status value. Example: published.

Example input: `{}`

### `surecontact_list_contacts_list`

List List Contacts · Read-only

List the contacts in a list, evaluating filters at request time for dynamic lists, with page-based pagination.
Returns the list's contacts.
Use list_contacts_list to see list members. Use contacts_list for all contacts.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `list_uuid` (`string`, required): UUID of the list. Example: 550e8400-e29b-41d4-a716-446655440000.
- `page` (`integer`, optional): Page number of results to return, starting at 1. Use with per_page to walk through large result sets.
- `per_page` (`integer`, optional): Number of records to return per page, from 1 to 100. Example: 25.

Example input: `{"list_uuid":"<list_uuid>"}`

### `surecontact_list_get`

Get List · Read-only

Retrieve one contact list by its UUID.
Returns the list with uuid, name, type, description and filters.
Use list_get when you have a list UUID from lists_list.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `list_uuid` (`string`, required): UUID of the list. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"list_uuid":"<list_uuid>"}`

### `surecontact_list_refresh_status_get`

Get List Refresh Status · Read-only

Get the refresh status of a dynamic list.
Returns the current refresh state of the list.
Use list_refresh_status_get to check whether a dynamic list has finished recalculating.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `list_uuid` (`string`, required): UUID of the list. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"list_uuid":"<list_uuid>"}`

### `surecontact_lists_list`

List Lists · Read-only

List the static and dynamic contact lists of the workspace, with page-based pagination.
Returns lists with uuid, name, type and description.
Use lists_list to find list UUIDs. Use list_get for one list.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page` (`integer`, optional): Page number of results to return, starting at 1. Use with per_page to walk through large result sets.
- `per_page` (`integer`, optional): Number of records to return per page, from 1 to 100. Example: 25.

Example input: `{}`

### `surecontact_note_get`

Get Contact Note · Read-only

Retrieve one contact note by its UUID.
Returns the note with its uuid, content, creator and timestamps.
Use note_get when you have a note UUID. Use contact_notes_list to find notes on a contact.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `note_uuid` (`string`, required): UUID of the note. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"note_uuid":"<note_uuid>"}`

### `surecontact_page_get`

Get Landing Page · Read-only

Retrieve one landing page by its UUID, including its full design JSON.
Returns the page with its status, SEO settings and design JSON.
Use page_get when you have a page UUID from pages_list.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page_uuid` (`string`, required): UUID of the page. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"page_uuid":"<page_uuid>"}`

### `surecontact_pages_list`

List Landing Pages · Read-only

List the landing pages of the workspace, with optional search, status filter and sorting.
Returns pages with uuid, name, slug, description and status.
Use pages_list to find landing page UUIDs. Use page_get for one page with its design JSON.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `per_page` (`integer`, optional): Number of records to return per page, from 1 to 100. Example: 25.
- `search` (`string`, optional): Free-text search term used to filter results by name or email. Max 100 characters. Example: acme. Must match the regex /^[\w\s-@.]+$/. Max 100 characters.
- `sort_by` (`string`, optional): Field name to sort the results by. Example: created_at.
- `sort_order` (`string`, optional): Sort direction, asc for ascending or desc for descending. Example: desc.
- `status` (`string`, optional): Filter by status value. Example: published.

Example input: `{}`

### `surecontact_pipeline_get`

Get Pipeline · Read-only

Retrieve one pipeline by its UUID.
Returns the pipeline with its stages.
Use pipeline_get when you have a pipeline UUID from pipelines_list.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `pipeline_uuid` (`string`, required): UUID of the pipeline. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"pipeline_uuid":"<pipeline_uuid>"}`

### `surecontact_pipeline_stages_list`

List Pipeline Stages · Read-only

List the stages of one pipeline as a flat list.
Returns each stage with its uuid and name.
Use pipeline_stages_list to find the stage UUIDs that deal_create, deal_stage_update and deal_reopen need.
Requires a pipeline UUID from pipelines_list.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `pipeline_uuid` (`string`, required): UUID of the pipeline whose stages to list. Get it from the pipelines list tool. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"pipeline_uuid":"<pipeline_uuid>"}`

### `surecontact_pipelines_list`

List Pipelines · Read-only

List the deal pipelines of the workspace.
Returns each pipeline with its uuid, name and stages.
Use pipelines_list to find pipeline UUIDs. Use pipeline_stages_list for a flat list of stages.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `surecontact_purchase_get`

Get Purchase · Read-only

Retrieve one purchase by its UUID.
Returns the purchase with its source, order ID, status, amounts and products.
Use purchase_get when you have a purchase UUID from purchases_list.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `purchase_uuid` (`string`, required): UUID of the purchase. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"purchase_uuid":"<purchase_uuid>"}`

### `surecontact_purchases_list`

List Purchases · Read-only

List purchases across the workspace, newest first, with optional status, source and contact filters.
Returns purchases with uuid, source, source order ID, status, total amount, currency and products.
Use purchases_list for the whole workspace. Use contact_purchases_list for one contact.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `contact_uuid` (`string`, optional): UUID of the contact. Get it from the contacts list or get-by-email tool. Example: 550e8400-e29b-41d4-a716-446655440000.
- `page` (`integer`, optional): Page number of results to return, starting at 1. Use with per_page to walk through large result sets.
- `per_page` (`integer`, optional): Number of records to return per page, from 1 to 100. Example: 25.
- `source` (`string`, optional): Where the record came from. Example: api.
- `status` (`string`, optional): Filter by status value. Example: published.

Example input: `{}`

### `surecontact_report_campaign_summary_get`

Get Campaign Performance Summary · Read-only

Get aggregated metrics across all campaigns for a date range, optionally filtered by campaign status.
Returns the aggregated campaign metrics.
Use report_campaign_summary_get to compare campaign performance overall. Use campaign_get for one campaign.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `compare_end_date` (`string`, optional): End of a custom comparison window as a date. Example: 2025-12-31. Must be a valid date. Must be a date after or equal to compare_start_date . Must be a date before or equal to today .
- `compare_start_date` (`string`, optional): Start of a custom comparison window as a date. Example: 2025-12-01. Must be a valid date. Must be a date before or equal to today .
- `compare_with` (`string`, optional): Comparison period to include, such as previous_period. Example: previous_period.
- `date_range` (`string`, optional): Preset reporting window such as last_7_days or last_30_days. Leave empty to use start_date and end_date or the default window. Example: last_30_days.
- `end_date` (`string`, optional): End of a custom reporting window as a date. Example: 2026-01-31. Must be a valid date. Must be a date after or equal to start_date . Must be a date before or equal to today .
- `group_by` (`string`, optional): Time bucket for the report series, such as day, week or month. Example: day.
- `start_date` (`string`, optional): Start of a custom reporting window as a date. Example: 2026-01-01. Must be a valid date. Must be a date before or equal to today .
- `status` (`string`, optional): Filter by status value. Example: published.

Example input: `{}`

### `surecontact_report_contact_growth_get`

Get Contact Growth Report · Read-only

Get contact growth statistics for a date range, optionally filtered by tag or list.
Returns the contact growth series.
Use report_contact_growth_get to see audience growth. Use report_overview_get for a broader summary.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `compare_end_date` (`string`, optional): End of a custom comparison window as a date. Example: 2025-12-31. Must be a valid date. Must be a date after or equal to compare_start_date . Must be a date before or equal to today .
- `compare_start_date` (`string`, optional): Start of a custom comparison window as a date. Example: 2025-12-01. Must be a valid date. Must be a date before or equal to today .
- `compare_with` (`string`, optional): Comparison period to include, such as previous_period. Example: previous_period.
- `date_range` (`string`, optional): Preset reporting window such as last_7_days or last_30_days. Leave empty to use start_date and end_date or the default window. Example: last_30_days.
- `end_date` (`string`, optional): End of a custom reporting window as a date. Example: 2026-01-31. Must be a valid date. Must be a date after or equal to start_date . Must be a date before or equal to today .
- `filter_type` (`string`, optional): Restrict the growth report to contacts by tag or list. Example: tag.
- `group_by` (`string`, optional): Time bucket for the report series, such as day, week or month. Example: day.
- `start_date` (`string`, optional): Start of a custom reporting window as a date. Example: 2026-01-01. Must be a valid date. Must be a date before or equal to today .

Example input: `{}`

### `surecontact_report_email_engagement_get`

Get Email Engagement Report · Read-only

Get email engagement statistics for a date range.
Returns opens, clicks and engagement rates.
Use report_email_engagement_get for opens and clicks. Use report_email_sending_get for delivery volume.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `compare_end_date` (`string`, optional): End of a custom comparison window as a date. Example: 2025-12-31. Must be a valid date. Must be a date after or equal to compare_start_date . Must be a date before or equal to today .
- `compare_start_date` (`string`, optional): Start of a custom comparison window as a date. Example: 2025-12-01. Must be a valid date. Must be a date before or equal to today .
- `compare_with` (`string`, optional): Comparison period to include, such as previous_period. Example: previous_period.
- `date_range` (`string`, optional): Preset reporting window such as last_7_days or last_30_days. Leave empty to use start_date and end_date or the default window. Example: last_30_days.
- `end_date` (`string`, optional): End of a custom reporting window as a date. Example: 2026-01-31. Must be a valid date. Must be a date after or equal to start_date . Must be a date before or equal to today .
- `group_by` (`string`, optional): Time bucket for the report series, such as day, week or month. Example: day.
- `start_date` (`string`, optional): Start of a custom reporting window as a date. Example: 2026-01-01. Must be a valid date. Must be a date before or equal to today .

Example input: `{}`

### `surecontact_report_email_sending_get`

Get Email Sending Report · Read-only

Get email sending statistics for a date range.
Returns sent, delivered, failed and bounced counts.
Use report_email_sending_get for delivery volume. Use report_email_engagement_get for opens and clicks.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `compare_end_date` (`string`, optional): End of a custom comparison window as a date. Example: 2025-12-31. Must be a valid date. Must be a date after or equal to compare_start_date . Must be a date before or equal to today .
- `compare_start_date` (`string`, optional): Start of a custom comparison window as a date. Example: 2025-12-01. Must be a valid date. Must be a date before or equal to today .
- `compare_with` (`string`, optional): Comparison period to include, such as previous_period. Example: previous_period.
- `date_range` (`string`, optional): Preset reporting window such as last_7_days or last_30_days. Leave empty to use start_date and end_date or the default window. Example: last_30_days.
- `end_date` (`string`, optional): End of a custom reporting window as a date. Example: 2026-01-31. Must be a valid date. Must be a date after or equal to start_date . Must be a date before or equal to today .
- `group_by` (`string`, optional): Time bucket for the report series, such as day, week or month. Example: day.
- `start_date` (`string`, optional): Start of a custom reporting window as a date. Example: 2026-01-01. Must be a valid date. Must be a date before or equal to today .

Example input: `{}`

### `surecontact_report_overview_get`

Get Reports Overview · Read-only

Get high-level KPIs across contacts, emails, engagement and revenue for a date range, with optional comparison to another period.
Returns the overview KPIs.
Use report_overview_get for a dashboard summary. Use the other report tools for one area in depth.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `compare_end_date` (`string`, optional): End of a custom comparison window as a date. Example: 2025-12-31. Must be a valid date. Must be a date after or equal to compare_start_date . Must be a date before or equal to today .
- `compare_start_date` (`string`, optional): Start of a custom comparison window as a date. Example: 2025-12-01. Must be a valid date. Must be a date before or equal to today .
- `compare_with` (`string`, optional): Comparison period to include, such as previous_period. Example: previous_period.
- `date_range` (`string`, optional): Preset reporting window such as last_7_days or last_30_days. Leave empty to use start_date and end_date or the default window. Example: last_30_days.
- `end_date` (`string`, optional): End of a custom reporting window as a date. Example: 2026-01-31. Must be a valid date. Must be a date after or equal to start_date . Must be a date before or equal to today .
- `group_by` (`string`, optional): Time bucket for the report series, such as day, week or month. Example: day.
- `start_date` (`string`, optional): Start of a custom reporting window as a date. Example: 2026-01-01. Must be a valid date. Must be a date before or equal to today .

Example input: `{}`

### `surecontact_sequence_get`

Get Sequence · Read-only

Retrieve one sequence by its UUID; a workflow automation UUID returns a 404.
Returns the sequence definition and status.
Use sequence_get when you have a sequence UUID from sequences_list.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `automation_uuid` (`string`, required): UUID of the automation. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"automation_uuid":"<automation_uuid>"}`

### `surecontact_sequences_list`

List Sequences · Read-only

List email sequences (automations of type sequence), with page-based pagination.
Returns sequences with uuid, name and status.
Use sequences_list to find sequence UUIDs for sequence_enroll. Use automations_list for all automations.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page` (`integer`, optional): Page number of results to return, starting at 1. Use with per_page to walk through large result sets.
- `per_page` (`integer`, optional): Number of records to return per page, from 1 to 100. Example: 25.

Example input: `{}`

### `surecontact_tag_contacts_list`

List Tag Contacts · Read-only

List the contacts that have a tag applied, with page-based pagination.
Returns contacts with uuid, email, name, phone and status.
Use tag_contacts_list to see who has a tag. Use contacts_list for all contacts.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `tag_uuid` (`string`, required): UUID of the tag. Example: 550e8400-e29b-41d4-a716-446655440000.
- `page` (`integer`, optional): Page number of results to return, starting at 1. Use with per_page to walk through large result sets.
- `per_page` (`integer`, optional): Number of records to return per page, from 1 to 100. Example: 25.

Example input: `{"tag_uuid":"<tag_uuid>"}`

### `surecontact_tag_get`

Get Tag · Read-only

Retrieve one tag by its UUID.
Returns the tag with uuid, name, slug, color, description and usage count.
Use tag_get when you have a tag UUID from tags_list.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `tag_uuid` (`string`, required): UUID of the tag. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"tag_uuid":"<tag_uuid>"}`

### `surecontact_tags_list`

List Tags · Read-only

List the tags of the workspace, with optional search and page-based pagination.
Returns tags with uuid, name, slug, color, description, usage count and created date.
Use tags_list to find tag UUIDs. Use tag_get for one tag.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page` (`integer`, optional): Page number of results to return, starting at 1. Use with per_page to walk through large result sets.
- `per_page` (`integer`, optional): Number of records to return per page, from 1 to 100. Example: 25.
- `search` (`string`, optional): Free-text search term used to filter results by name or email. Max 100 characters. Example: acme.

Example input: `{}`

### `surecontact_task_get`

Get Task · Read-only

Retrieve one task by its UUID.
Returns the task record.
Use task_get when you have a task UUID from tasks_list.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `task_uuid` (`string`, required): UUID of the task. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"task_uuid":"<task_uuid>"}`

### `surecontact_tasks_list`

List Tasks · Read-only

List tasks in the workspace with page-based pagination.
Returns a paginated list of tasks.
Use tasks_list to browse tasks. Use task_get for one task by UUID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page` (`integer`, optional): Page number of results to return, starting at 1. Use with per_page to walk through large result sets.
- `per_page` (`integer`, optional): Number of records to return per page, from 1 to 100. Example: 25.

Example input: `{}`

### `surecontact_company_archive`

Archive Company · Write

Archive a company so it is hidden from the active list; it can be restored with company_unarchive.
Returns the API response for the archived company.
Use company_archive to hide a company reversibly. Use company_delete to remove it.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `company_uuid` (`string`, required): UUID of the company. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"company_uuid":"<company_uuid>"}`

### `surecontact_company_contact_link`

Link Contact to Company · Write

Link one existing contact to a company, with an optional role and primary flag.
Returns the API response for the new link.
Use company_contact_link for a single contact. Use company_contacts_attach to link several contacts at once.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `company_uuid` (`string`, required): UUID of the company. Example: 550e8400-e29b-41d4-a716-446655440000.
- `contact_uuid` (`string`, required): UUID of the contact. Get it from the contacts list or get-by-email tool. Example: 550e8400-e29b-41d4-a716-446655440000.
- `is_primary` (`boolean`, optional): Set to true to mark this as the contact's primary company link.
- `linked_via` (`string`, optional): How the link was created. Defaults to manual. One of: `manual`, `auto_domain_match`, `import`, `api`, `form`, `migration`.
- `role` (`string`, optional): Role label of the contact at the company. Max 255 characters. Example: Procurement Lead.

Example input: `{"company_uuid":"<company_uuid>","contact_uuid":"<contact_uuid>"}`

### `surecontact_company_contacts_attach`

Attach Contacts to Company · Write

Link several contacts to a company in one call, with an optional role label.
Returns the API response for the new links.
Use company_contacts_attach for many contacts. Use company_contact_link for one contact.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `company_uuid` (`string`, required): UUID of the company. Example: 550e8400-e29b-41d4-a716-446655440000.
- `contact_uuids` (`array`, required): Array of contact UUIDs. Example: ["550e8400-e29b-41d4-a716-446655440000"].
- `is_primary` (`boolean`, optional): Set to true to mark this as the contact's primary company link.
- `linked_via` (`string`, optional): How the link was created. Defaults to manual. One of: `manual`, `auto_domain_match`, `import`, `api`, `form`, `migration`.
- `role` (`string`, optional): Role label of the contact at the company. Max 255 characters. Example: Procurement Lead.

Example input: `{"company_uuid":"<company_uuid>","contact_uuids":["550e8400-e29b-41d4-a716-446655440000"]}`

### `surecontact_company_create`

Create Company · Write

Create a company in the workspace, optionally linking existing contacts.
Returns the created company record.
Use company_create to add a new company. Use company_update to change an existing one.
Requires a SureContact plan that includes the Companies module; company names must be unique per workspace.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `contact_uuids` (`array`, required): Array of contact UUIDs. Example: ["550e8400-e29b-41d4-a716-446655440000"].
- `name` (`string`, required): Name of the company; names are unique per workspace, case-insensitive. Max 255 characters. Example: Acme Corporation.
- `about` (`string`, optional): Short blurb shown in the company header. Max 5,000 characters. Example: B2B SaaS platform for managing customers.
- `address` (`object`, optional): Postal address object with the optional keys street, city, state, country and postal_code. Example: {"city": "San Francisco", "country": "US"}.
- `annual_revenue_range` (`string`, optional): Annual revenue bucket (under_1m, 1m_10m, 10m_50m, 50m_100m, 100m_500m, 500m_1b, 1b_plus). One of: `under_1m`, `1m_10m`, `10m_50m`, `50m_100m`, `100m_500m`, `500m_1b`, `1b_plus`.
- `description` (`string`, optional): Long-form description or overview of the company. Max 10,000 characters. Example: Acme builds tools that help teams manage customers.
- `employee_range` (`string`, optional): Employee headcount bucket (1-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, 10001+). One of: `1-10`, `11-50`, `51-200`, `201-500`, `501-1000`, `1001-5000`, `5001-10000`, `10001+`.
- `facebook_url` (`string`, optional): Facebook page URL. Example: https://www.facebook.com/acme.
- `industry` (`string`, optional): Industry as free text. Example: Software.
- `lead_status` (`string`, optional): Lead status (new, open, in_progress, open_deal, unqualified, attempted_to_contact, connected, bad_timing). One of: `new`, `open`, `in_progress`, `open_deal`, `unqualified`, `attempted_to_contact`, `connected`, `bad_timing`.
- `lifecycle_stage` (`string`, optional): Lifecycle stage (subscriber, lead, marketing_qualified_lead, sales_qualified_lead, opportunity, customer, evangelist, other). One of: `subscriber`, `lead`, `marketing_qualified_lead`, `sales_qualified_lead`, `opportunity`, `customer`, `evangelist`, `other`.
- `linkedin_url` (`string`, optional): LinkedIn company page URL. Example: https://www.linkedin.com/company/acme.
- `logo_url` (`string`, optional): Logo image URL. Setting it makes the logo manual so the favicon fetcher no longer overwrites it. Example: https://cdn.acme.com/logo.png.
- `metadata` (`object`, optional): Free-form key-value metadata object stored with the record. Example: {"utm_source": "google"}.
- `parent_company_uuid` (`string`, optional): UUID of a parent company for hierarchy; must be in the same workspace. Example: 550e8400-e29b-41d4-a716-446655440000.
- `phone` (`string`, optional): Primary phone number. Example: +1-555-0100.
- `source` (`string`, optional): Where the record came from. Example: api. Allowed values: manual, import, api, mcp, auto_domain_match, form, migration. One of: `manual`, `import`, `api`, `mcp`, `auto_domain_match`, `form`, `migration`.
- `source_id` (`string`, optional): Identifier of the record in the originating system. Max 255 characters. Example: hubspot-12345.
- `twitter_handle` (`string`, optional): Twitter / X handle without the leading @. Example: acmecorp.
- `type` (`string`, optional): Company type (prospect, customer, partner, reseller, vendor, other). One of: `prospect`, `customer`, `partner`, `reseller`, `vendor`, `other`.
- `website` (`string`, optional): Company website URL; the domain is extracted automatically. Example: https://acme.com.
- `year_founded` (`integer`, optional): Founding year, from 1700 to the current year. Example: 2015.

Example input: `{"contact_uuids":["550e8400-e29b-41d4-a716-446655440000"],"name":"<name>"}`

### `surecontact_company_note_create`

Create Company Note · Write

Add a note to a company.
Returns the created note.
Use company_note_create for company notes. Use contact_note_create for contact notes.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `company_uuid` (`string`, required): UUID of the company. Example: 550e8400-e29b-41d4-a716-446655440000.
- `content` (`string`, required): Body text of the note. Max 10,000 characters. Example: Customer requested a callback next week.
- `title` (`string`, optional): Short title for the record. Max 255 characters. Example: Renewal Discussion.

Example input: `{"company_uuid":"<company_uuid>","content":"<content>"}`

### `surecontact_company_note_update`

Update Company Note · Write

Update a company note; the creator can always edit their own note, other users need the manager role.
Returns the updated note.
Use company_note_update to edit. Use company_note_delete to remove.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `company_note_uuid` (`string`, required): UUID of the company note. Example: 550e8400-e29b-41d4-a716-446655440000.
- `content` (`string`, required): Body text of the note. Max 10,000 characters. Example: Customer requested a callback next week.
- `title` (`string`, optional): Short title for the record. Max 255 characters. Example: Renewal Discussion.

Example input: `{"company_note_uuid":"<company_note_uuid>","content":"<content>"}`

### `surecontact_company_primary_set`

Set Contact Primary Company · Write

Mark a company as a contact's primary company and clear the primary flag from the contact's other company links.
Returns the API response for the updated link.
Use company_primary_set when a contact works at several companies and one should be primary.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `company_uuid` (`string`, required): UUID of the company. Example: 550e8400-e29b-41d4-a716-446655440000.
- `contact_uuid` (`string`, required): UUID of the contact. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"company_uuid":"<company_uuid>","contact_uuid":"<contact_uuid>"}`

### `surecontact_company_unarchive`

Unarchive Company · Write

Restore a previously archived company to the active list.
Returns the API response for the restored company.
Use company_unarchive to undo company_archive.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `company_uuid` (`string`, required): UUID of the company. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"company_uuid":"<company_uuid>"}`

### `surecontact_company_update`

Update Company · Write

Update an existing company; only the fields you supply change.
Returns the updated company record.
Use company_update to edit a company. Use company_archive to hide it instead.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `company_uuid` (`string`, required): UUID of the company. Example: 550e8400-e29b-41d4-a716-446655440000.
- `about` (`string`, optional): Short blurb shown in the company header. Max 5,000 characters. Example: B2B SaaS platform for managing customers.
- `address` (`object`, optional): Postal address object with the optional keys street, city, state, country and postal_code. Example: {"city": "San Francisco", "country": "US"}.
- `annual_revenue_range` (`string`, optional): Annual revenue bucket (under_1m, 1m_10m, 10m_50m, 50m_100m, 100m_500m, 500m_1b, 1b_plus). One of: `under_1m`, `1m_10m`, `10m_50m`, `50m_100m`, `100m_500m`, `500m_1b`, `1b_plus`.
- `description` (`string`, optional): Long-form description or overview of the company. Max 10,000 characters. Example: Acme builds tools that help teams manage customers.
- `employee_range` (`string`, optional): Employee headcount bucket (1-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, 10001+). One of: `1-10`, `11-50`, `51-200`, `201-500`, `501-1000`, `1001-5000`, `5001-10000`, `10001+`.
- `facebook_url` (`string`, optional): Facebook page URL. Example: https://www.facebook.com/acme.
- `industry` (`string`, optional): Industry as free text. Example: Software.
- `lead_status` (`string`, optional): Lead status (new, open, in_progress, open_deal, unqualified, attempted_to_contact, connected, bad_timing). One of: `new`, `open`, `in_progress`, `open_deal`, `unqualified`, `attempted_to_contact`, `connected`, `bad_timing`.
- `lifecycle_stage` (`string`, optional): Lifecycle stage (subscriber, lead, marketing_qualified_lead, sales_qualified_lead, opportunity, customer, evangelist, other). One of: `subscriber`, `lead`, `marketing_qualified_lead`, `sales_qualified_lead`, `opportunity`, `customer`, `evangelist`, `other`.
- `linkedin_url` (`string`, optional): LinkedIn company page URL. Example: https://www.linkedin.com/company/acme.
- `logo_url` (`string`, optional): Logo image URL. Setting it makes the logo manual so the favicon fetcher no longer overwrites it. Example: https://cdn.acme.com/logo.png.
- `metadata` (`object`, optional): Free-form key-value metadata object stored with the record. Example: {"utm_source": "google"}.
- `name` (`string`, optional): Name of the company; names are unique per workspace, case-insensitive. Max 255 characters. Example: Acme Corporation.
- `parent_company_uuid` (`string`, optional): UUID of a parent company for hierarchy; must be in the same workspace. Example: 550e8400-e29b-41d4-a716-446655440000.
- `phone` (`string`, optional): Primary phone number. Example: +1-555-0100.
- `twitter_handle` (`string`, optional): Twitter / X handle without the leading @. Example: acmecorp.
- `type` (`string`, optional): Company type (prospect, customer, partner, reseller, vendor, other). One of: `prospect`, `customer`, `partner`, `reseller`, `vendor`, `other`.
- `website` (`string`, optional): Company website URL; the domain is extracted automatically. Example: https://acme.com.
- `year_founded` (`integer`, optional): Founding year, from 1700 to the current year. Example: 2015.

Example input: `{"company_uuid":"<company_uuid>"}`

### `surecontact_contact_activity_create`

Create Contact Activity · Write

Log a custom activity on a contact's timeline, such as a form submission or a note event from an external system.
Returns the created activity with its uuid, type, description and metadata.
Use contact_activity_create to record external events. Use contact_note_create to add a free-text note instead.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `activity_type` (`string`, required): Activity type to log. Must be one of the allowed values. Example: form_submitted. Allowed values: email_sent, email_opened, email_clicked, form_submitted, note_added, note_updated, note_deleted, tag_added, tag_removed, contact_created, contact_updated, list_added, list_removed, custom_field_added, custom_field_updated, custom_field_deleted, purchase_completed, purchase_cancelled, purchase_refunded. One of: `email_sent`, `email_opened`, `email_clicked`, `form_submitted`, `note_added`, `note_updated`, `note_deleted`, `tag_added`, `tag_removed`, `contact_created`, `contact_updated`, `list_added`, `list_removed`, `custom_field_added`, `custom_field_updated`, `custom_field_deleted`, `purchase_completed`, `purchase_cancelled`, `purchase_refunded`.
- `contact_uuid` (`string`, required): UUID of the contact. Example: 550e8400-e29b-41d4-a716-446655440000.
- `description` (`string`, required): Free-text description of the record. Example: High-value customers.
- `metadata` (`object`, optional): Free-form key-value metadata object stored with the record. Example: {"utm_source": "google"}.

Example input: `{"activity_type":"email_sent","contact_uuid":"<contact_uuid>","description":"<description>"}`

### `surecontact_contact_automation_start`

Start Automation for Contact · Write

Manually trigger an active automation for a contact; it runs asynchronously.
Returns the scheduled automation's UUID and name.
Use contact_automation_start to run a workflow automation for one contact. Use sequence_enroll to put a contact into an email sequence.
Requires an active automation UUID from automations_list.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `automation_uuid` (`string`, required): UUID of the automation. Example: 550e8400-e29b-41d4-a716-446655440000.
- `contact_uuid` (`string`, required): UUID of the contact. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"automation_uuid":"<automation_uuid>","contact_uuid":"<contact_uuid>"}`

### `surecontact_contact_companies_attach`

Attach Contact to Companies · Write

Link one contact to several companies in a single call, with an optional role label.
Returns the API response for the company links.
Use contact_companies_attach to link one contact to many companies. Use company_contacts_attach to link many contacts to one company.
Requires company UUIDs from companies_list.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `company_uuids` (`array`, required): Array of company UUIDs. Example: ["550e8400-e29b-41d4-a716-446655440000"].
- `contact_uuid` (`string`, required): UUID of the contact. Example: 550e8400-e29b-41d4-a716-446655440000.
- `is_primary` (`boolean`, optional): Set to true to mark this as the contact's primary company link.
- `linked_via` (`string`, optional): How the link was created. Defaults to manual. One of: `manual`, `auto_domain_match`, `import`, `api`, `form`, `migration`.
- `role` (`string`, optional): Role label of the contact at the company. Max 255 characters. Example: Procurement Lead.

Example input: `{"company_uuids":["550e8400-e29b-41d4-a716-446655440000"],"contact_uuid":"<contact_uuid>"}`

### `surecontact_contact_double_opt_in_resend`

Resend Double Opt-in Email · Write

Regenerate the opt-in token and resend the double opt-in confirmation email to a contact.
Returns the API response with the contact whose confirmation was resent.
Use contact_double_opt_in_resend only for contacts in pending status.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `contact_uuid` (`string`, required): UUID of the contact. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"contact_uuid":"<contact_uuid>"}`

### `surecontact_contact_find_or_create`

Find or Create Contact · Write

Find a contact by email, or create it when no contact has that email; an existing contact is returned without any field being overwritten.
Returns the contact record plus an is_created flag showing whether a new contact was made.
Use contact_find_or_create to make sure a contact exists without changing existing data. Use contact_upsert to also update an existing contact's fields.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `primary_fields` (`object`, required): Object with the contact's core fields; email is required for create and upsert. Supported keys: email, first_name, last_name, phone, company, job_title, birthdate (YYYY-MM-DD), gender (male, female, other, prefer_not_to_say), anniversary (MM-DD), prefix, suffix, source (manual, import, api, form, integration), status (active, unsubscribed, bounced, invalid, complained), language (ISO 639-1 code), timezone (IANA name), created_at and updated_at (ISO 8601). Example: {"email": "jane@example.com", "first_name": "Jane", "last_name": "Doe"}.
- `custom_fields` (`object`, optional): Custom field values as an object keyed by the custom field name. Example: {"industry": "Technology"}.
- `list_uuids` (`array`, optional): Array of list UUIDs. Get them from the lists tool. Example: ["550e8400-e29b-41d4-a716-446655440000"].
- `metadata` (`object`, optional): Free-form key-value metadata object stored with the record. Example: {"utm_source": "google"}.
- `tag_uuids` (`array`, optional): Array of tag UUIDs. Get them from the tags list tool. Example: ["550e8400-e29b-41d4-a716-446655440000"].

Example input: `{"primary_fields":{"email":"jane@example.com","first_name":"Jane","last_name":"Doe"}}`

### `surecontact_contact_lists_attach`

Attach Lists to Contact · Write

Add a contact to one or more static lists.
Returns the API response for the list membership change.
Use contact_lists_attach to add a single contact to lists. Use list_contacts_add to add many contacts to one list.
Requires list UUIDs from lists_list.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `contact_uuid` (`string`, required): UUID of the contact. Example: 550e8400-e29b-41d4-a716-446655440000.
- `list_uuids` (`array`, required): Array of list UUIDs. Get them from the lists tool. Example: ["550e8400-e29b-41d4-a716-446655440000"].

Example input: `{"contact_uuid":"<contact_uuid>","list_uuids":["550e8400-e29b-41d4-a716-446655440000"]}`

### `surecontact_contact_lists_detach`

Detach Lists from Contact · Write

Remove a contact from one or more static lists.
Returns the API response for the list membership change.
Use contact_lists_detach to remove a single contact from lists. Use list_contacts_remove to remove many contacts from one list.
Requires list UUIDs from lists_list.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `contact_uuid` (`string`, required): UUID of the contact. Example: 550e8400-e29b-41d4-a716-446655440000.
- `list_uuids` (`array`, required): Array of list UUIDs. Get them from the lists tool. Example: ["550e8400-e29b-41d4-a716-446655440000"].

Example input: `{"contact_uuid":"<contact_uuid>","list_uuids":["550e8400-e29b-41d4-a716-446655440000"]}`

### `surecontact_contact_note_create`

Create Contact Note · Write

Add a note to a contact, attributed to the API key owner.
Returns the created note with its uuid, content, creator and timestamps.
Use contact_note_create for free-text notes. Use contact_activity_create to log a typed timeline event.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `contact_uuid` (`string`, required): UUID of the contact. Example: 550e8400-e29b-41d4-a716-446655440000.
- `content` (`string`, required): Body text of the note. Max 10,000 characters. Example: Customer requested a callback next week.
- `title` (`string`, optional): Short title for the record. Max 255 characters. Example: Renewal Discussion.

Example input: `{"contact_uuid":"<contact_uuid>","content":"<content>"}`

### `surecontact_contact_status_update`

Update Contact Status · Write

Change a contact's subscription status to active, unsubscribed, bounced, invalid or complained.
Returns the API response for the updated contact.
Use contact_status_update to change only the status. Use contact_update to edit other fields.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `contact_uuid` (`string`, required): UUID of the contact. Example: 550e8400-e29b-41d4-a716-446655440000.
- `status` (`string`, required): The new status for the contact. Values: active, unsubscribed, bounced, invalid, complained. One of: `active`, `unsubscribed`, `bounced`, `invalid`, `complained`.

Example input: `{"contact_uuid":"<contact_uuid>","status":"active"}`

### `surecontact_contact_tags_attach`

Attach Tags to Contact · Write

Attach one or more tags to a contact; tags the contact already has stay in place.
Returns the API response for the tag attachment.
Use contact_tags_attach to tag a single contact. Use tag_contacts_add to tag many contacts with one tag.
Requires tag UUIDs from tags_list.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `contact_uuid` (`string`, required): UUID of the contact. Example: 550e8400-e29b-41d4-a716-446655440000.
- `tag_uuids` (`array`, required): Array of tag UUIDs. Get them from the tags list tool. Example: ["550e8400-e29b-41d4-a716-446655440000"].

Example input: `{"contact_uuid":"<contact_uuid>","tag_uuids":["550e8400-e29b-41d4-a716-446655440000"]}`

### `surecontact_contact_tags_detach`

Detach Tags from Contact · Write

Remove one or more tags from a contact.
Returns the API response for the tag removal.
Use contact_tags_detach to untag a single contact. Use tag_contacts_remove to untag many contacts from one tag.
Requires tag UUIDs from tags_list.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `contact_uuid` (`string`, required): UUID of the contact. Example: 550e8400-e29b-41d4-a716-446655440000.
- `tag_uuids` (`array`, required): Array of tag UUIDs. Get them from the tags list tool. Example: ["550e8400-e29b-41d4-a716-446655440000"].

Example input: `{"contact_uuid":"<contact_uuid>","tag_uuids":["550e8400-e29b-41d4-a716-446655440000"]}`

### `surecontact_contact_update`

Update Contact · Write

Update an existing contact's primary fields, metadata or custom field values; only the fields you supply change.
Returns the updated contact record.
Use contact_update to edit a known contact by UUID. Use contact_status_update to change only the subscription status.
Requires the contact UUID from contacts_list or contact_get_by_email.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `contact_uuid` (`string`, required): UUID of the contact. Example: 550e8400-e29b-41d4-a716-446655440000.
- `custom_fields` (`object`, optional): Custom field values as an object keyed by the custom field name. Example: {"industry": "Technology"}.
- `metadata` (`object`, optional): Free-form key-value metadata object stored with the record. Example: {"utm_source": "google"}.
- `primary_fields` (`object`, optional): Object with the contact's core fields; only the keys you supply are changed. Supported keys: email, first_name, last_name, phone, company, job_title, birthdate (YYYY-MM-DD), gender (male, female, other, prefer_not_to_say), anniversary (MM-DD), prefix, suffix, source (manual, import, api, form, integration), status (active, unsubscribed, bounced, invalid, complained), language (ISO 639-1 code), timezone (IANA name), created_at and updated_at (ISO 8601). Example: {"email": "jane@example.com", "first_name": "Jane", "last_name": "Doe"}.

Example input: `{"contact_uuid":"<contact_uuid>"}`

### `surecontact_contact_upsert`

Upsert Contact · Write

Create a contact, or update the existing contact that has the same email address.
Returns the resulting contact record plus an is_created flag showing whether a new contact was made.
Use contact_upsert to sync contact data from another system. Use contact_find_or_create to avoid changing an existing contact.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `primary_fields` (`object`, required): Object with the contact's core fields; email is required for create and upsert. Supported keys: email, first_name, last_name, phone, company, job_title, birthdate (YYYY-MM-DD), gender (male, female, other, prefer_not_to_say), anniversary (MM-DD), prefix, suffix, source (manual, import, api, form, integration), status (active, unsubscribed, bounced, invalid, complained), language (ISO 639-1 code), timezone (IANA name), created_at and updated_at (ISO 8601). Example: {"email": "jane@example.com", "first_name": "Jane", "last_name": "Doe"}.
- `custom_fields` (`object`, optional): Custom field values as an object keyed by the custom field name. Example: {"industry": "Technology"}.
- `list_uuids` (`array`, optional): Array of list UUIDs. Get them from the lists tool. Example: ["550e8400-e29b-41d4-a716-446655440000"].
- `metadata` (`object`, optional): Free-form key-value metadata object stored with the record. Example: {"utm_source": "google"}.
- `tag_uuids` (`array`, optional): Array of tag UUIDs. Get them from the tags list tool. Example: ["550e8400-e29b-41d4-a716-446655440000"].

Example input: `{"primary_fields":{"email":"jane@example.com","first_name":"Jane","last_name":"Doe"}}`

### `surecontact_deal_companies_attach`

Attach Companies to Deal · Write

Link companies to a deal.
Returns the API response for the links.
Use deal_companies_attach to associate companies with a deal. Use deal_companies_detach to remove them.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `company_uuids` (`array`, required): Array of company UUIDs. Example: ["550e8400-e29b-41d4-a716-446655440000"].
- `deal_uuid` (`string`, required): UUID of the deal. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"company_uuids":["550e8400-e29b-41d4-a716-446655440000"],"deal_uuid":"<deal_uuid>"}`

### `surecontact_deal_companies_detach`

Detach Companies from Deal · Write

Remove companies from a deal.
Returns the API response for the removal.
Use deal_companies_detach to unlink companies from a deal. Use deal_companies_attach to add them.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `company_uuids` (`array`, required): Array of company UUIDs. Example: ["550e8400-e29b-41d4-a716-446655440000"].
- `deal_uuid` (`string`, required): UUID of the deal. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"company_uuids":["550e8400-e29b-41d4-a716-446655440000"],"deal_uuid":"<deal_uuid>"}`

### `surecontact_deal_contacts_attach`

Attach Contacts to Deal · Write

Link contacts to a deal.
Returns the API response for the links.
Use deal_contacts_attach to associate people with a deal. Use deal_contacts_detach to remove them.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `contact_uuids` (`array`, required): Array of contact UUIDs. Example: ["550e8400-e29b-41d4-a716-446655440000"].
- `deal_uuid` (`string`, required): UUID of the deal. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"contact_uuids":["550e8400-e29b-41d4-a716-446655440000"],"deal_uuid":"<deal_uuid>"}`

### `surecontact_deal_contacts_detach`

Detach Contacts from Deal · Write

Remove contacts from a deal.
Returns the API response for the removal.
Use deal_contacts_detach to unlink people from a deal. Use deal_contacts_attach to add them.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `contact_uuids` (`array`, required): Array of contact UUIDs. Example: ["550e8400-e29b-41d4-a716-446655440000"].
- `deal_uuid` (`string`, required): UUID of the deal. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"contact_uuids":["550e8400-e29b-41d4-a716-446655440000"],"deal_uuid":"<deal_uuid>"}`

### `surecontact_deal_create`

Create Deal · Write

Create a deal in a pipeline stage, optionally linking contacts and companies.
Returns the created deal.
Use deal_create to open a new deal. Use deal_update to change an existing one.
Requires a pipeline stage UUID from pipeline_stages_list.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): Name of the deal. Max 255 characters. Example: Acme Annual Renewal.
- `pipeline_stage_uuid` (`string`, required): UUID of the pipeline stage the deal starts in. Get it from the pipeline stages list tool. Example: 550e8400-e29b-41d4-a716-446655440000.
- `amount` (`number`, optional): Monetary value of the deal as a non-negative number in the deal currency. Example: 5000.
- `close_date` (`string`, optional): Expected close date of the deal as an ISO 8601 date or datetime. Example: 2026-12-31.
- `company_uuids` (`array`, optional): Array of company UUIDs. Example: ["550e8400-e29b-41d4-a716-446655440000"].
- `contact_uuids` (`array`, optional): Array of contact UUIDs. Example: ["550e8400-e29b-41d4-a716-446655440000"].
- `currency` (`string`, optional): Three-letter ISO 4217 currency code. Example: USD.
- `custom_fields` (`object`, optional): Custom field values as an object keyed by the custom field name. Example: {"industry": "Technology"}.
- `owner_uuid` (`string`, optional): UUID of the workspace user who owns the deal. Example: 550e8400-e29b-41d4-a716-446655440000.
- `source` (`string`, optional): Where the deal came from, max 100 characters. Example: website.
- `source_id` (`string`, optional): Identifier of the record in the originating system. Max 255 characters. Example: hubspot-12345.
- `win_probability` (`integer`, optional): Probability of winning, as a whole number from 0 to 100. Example: 60.

Example input: `{"name":"<name>","pipeline_stage_uuid":"<pipeline_stage_uuid>"}`

### `surecontact_deal_lost`

Mark Deal Lost · Write

Mark a deal as lost with a reason and optional notes.
Returns the updated deal.
Use deal_lost when the deal did not close. Use deal_reopen to bring it back.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `deal_uuid` (`string`, required): UUID of the deal. Example: 550e8400-e29b-41d4-a716-446655440000.
- `loss_reason` (`string`, required): Short reason the deal was lost. Max 255 characters. Example: Budget constraints.
- `loss_notes` (`string`, optional): Longer notes about why the deal was lost. Max 2000 characters. Example: Chose a competitor with a lower price.

Example input: `{"deal_uuid":"<deal_uuid>","loss_reason":"<loss_reason>"}`

### `surecontact_deal_note_create`

Create Deal Note · Write

Add a note to a deal.
Returns the created note.
Use deal_note_create for deal notes. Use contact_note_create for contact notes.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `content` (`string`, required): Body text of the note. Max 10,000 characters. Example: Sent the revised quote.
- `deal_uuid` (`string`, required): UUID of the deal. Example: 550e8400-e29b-41d4-a716-446655440000.
- `title` (`string`, optional): Optional title of the note. Max 255 characters. Example: Pricing discussion.

Example input: `{"content":"<content>","deal_uuid":"<deal_uuid>"}`

### `surecontact_deal_note_update`

Update Deal Note · Write

Update the title or content of a deal note.
Returns the updated note.
Use deal_note_update to edit. Use deal_note_delete to remove.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `deal_note_uuid` (`string`, required): UUID of the deal note. Example: 550e8400-e29b-41d4-a716-446655440000.
- `content` (`string`, optional): Body text of the note. Max 10,000 characters. Example: Sent the revised quote.
- `title` (`string`, optional): Optional title of the note. Max 255 characters. Example: Pricing discussion.

Example input: `{"deal_note_uuid":"<deal_note_uuid>"}`

### `surecontact_deal_reopen`

Reopen Deal · Write

Reopen a won or lost deal by placing it back into a pipeline stage.
Returns the updated deal.
Use deal_reopen to undo deal_won or deal_lost.
Requires a stage UUID from pipeline_stages_list.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `deal_uuid` (`string`, required): UUID of the deal. Example: 550e8400-e29b-41d4-a716-446655440000.
- `stage_uuid` (`string`, required): UUID of the pipeline stage. Get it from the pipeline stages list tool. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"deal_uuid":"<deal_uuid>","stage_uuid":"<stage_uuid>"}`

### `surecontact_deal_stage_update`

Move Deal to Stage · Write

Move a deal to another pipeline stage.
Returns the updated deal.
Use deal_stage_update to progress a deal. Use deal_won or deal_lost to close it.
Requires a stage UUID from pipeline_stages_list.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `deal_uuid` (`string`, required): UUID of the deal. Example: 550e8400-e29b-41d4-a716-446655440000.
- `stage_uuid` (`string`, required): UUID of the pipeline stage. Get it from the pipeline stages list tool. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"deal_uuid":"<deal_uuid>","stage_uuid":"<stage_uuid>"}`

### `surecontact_deal_update`

Update Deal · Write

Update a deal's name, amount, currency, close date, win probability, owner, loss details or custom fields; only supplied fields change.
Returns the updated deal.
Use deal_update for field changes. Use deal_stage_update to move the deal between stages, and deal_won or deal_lost to close it.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `deal_uuid` (`string`, required): UUID of the deal. Example: 550e8400-e29b-41d4-a716-446655440000.
- `amount` (`number`, optional): Monetary value of the deal as a non-negative number in the deal currency. Example: 5000.
- `close_date` (`string`, optional): Expected close date of the deal as an ISO 8601 date or datetime. Example: 2026-12-31.
- `currency` (`string`, optional): Three-letter ISO 4217 currency code. Example: USD.
- `custom_fields` (`object`, optional): Custom field values as an object keyed by the custom field name. Example: {"industry": "Technology"}.
- `loss_notes` (`string`, optional): Longer notes about why the deal was lost. Max 2000 characters. Example: Chose a competitor with a lower price.
- `loss_reason` (`string`, optional): Short reason the deal was lost. Max 255 characters. Example: Budget constraints.
- `name` (`string`, optional): Name of the deal. Max 255 characters. Example: Acme Annual Renewal.
- `owner_uuid` (`string`, optional): UUID of the workspace user who owns the deal. Example: 550e8400-e29b-41d4-a716-446655440000.
- `win_probability` (`integer`, optional): Probability of winning, as a whole number from 0 to 100. Example: 60.

Example input: `{"deal_uuid":"<deal_uuid>"}`

### `surecontact_deal_won`

Mark Deal Won · Write

Mark a deal as won.
Returns the updated deal.
Use deal_won when the deal closed successfully. Use deal_lost when it did not.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `deal_uuid` (`string`, required): UUID of the deal. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"deal_uuid":"<deal_uuid>"}`

### `surecontact_email_send`

Send Email · Write

Send a one-off email to one contact, either with a raw subject and HTML body or from a template; delivery is queued and asynchronous.
Returns the queued email with its uuid, status and subject.
Use email_send for a transactional message to a single contact. Campaigns are for bulk sends.
Requires a contact UUID or email, and a subject and body unless template_uuid is supplied.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `body` (`string`, optional): HTML email body. Merge tags such as {{first_name}} are supported. Example: Hi {{first_name}}, welcome aboard.
.
- `contact_email` (`string`, optional): Email address of the contact. Use this instead of contact_uuid when you only know the email. Example: jane@example.com.
- `contact_uuid` (`string`, optional): UUID of the contact. Get it from the contacts list or get-by-email tool. Example: 550e8400-e29b-41d4-a716-446655440000.
- `from_email` (`string`, optional): Sender email address; falls back to the SMTP configuration default. Example: hello@example.com.
- `from_name` (`string`, optional): Sender display name; falls back to the SMTP configuration default. Example: Acme Marketing.
- `reply_to` (`string`, optional): Reply-to email address. Example: support@example.com.
- `smtp_configuration_uuid` (`string`, optional): UUID of the SMTP configuration to send with; falls back to the workspace default when omitted. Example: 550e8400-e29b-41d4-a716-446655440000.
- `subject` (`string`, optional): Email subject line. Max 255 characters. Example: Welcome to our newsletter.
- `template_uuid` (`string`, optional): UUID of an email template in the workspace. Get it from the email templates list tool. Example: 550e8400-e29b-41d4-a716-446655440000.
- `track_clicks` (`boolean`, optional): Whether to track link clicks. Defaults to true.
- `track_opens` (`boolean`, optional): Whether to track opens. Defaults to true.

Example input: `{}`

### `surecontact_list_contacts_add`

Add Contacts to List · Write

Add many contacts to a static list.
Returns the API response for the membership change.
Use list_contacts_add for many contacts. Use contact_lists_attach to put one contact into several lists.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `contact_uuids` (`array`, required): Array of contact UUIDs. Example: ["550e8400-e29b-41d4-a716-446655440000"].
- `list_uuid` (`string`, required): UUID of the list. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"contact_uuids":["550e8400-e29b-41d4-a716-446655440000"],"list_uuid":"<list_uuid>"}`

### `surecontact_list_contacts_remove`

Remove Contacts from List · Write

Remove many contacts from a static list.
Returns the API response for the membership change.
Use list_contacts_remove for many contacts. Use contact_lists_detach to remove one contact from several lists.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `contact_uuids` (`array`, required): Array of contact UUIDs. Example: ["550e8400-e29b-41d4-a716-446655440000"].
- `list_uuid` (`string`, required): UUID of the list. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"contact_uuids":["550e8400-e29b-41d4-a716-446655440000"],"list_uuid":"<list_uuid>"}`

### `surecontact_list_create`

Create List · Write

Create a static or dynamic contact list.
Returns the created list.
Use list_create to add a list. Use list_update to change an existing list.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): Name of the list; must be unique within the workspace. Max 255 characters. Example: Newsletter Subscribers.
- `description` (`string`, optional): Optional description of the list. Max 1000 characters. Example: Contacts subscribed to the weekly newsletter.
- `filters` (`object`, optional): Filter criteria object for a dynamic list. Only used when type is dynamic. Example: {"include_tags": ["550e8400-e29b-41d4-a716-446655440000"]}.
- `public_name` (`string`, optional): Name shown to contacts on the preferences page. Example: Weekly Newsletter.
- `show_in_preferences` (`boolean`, optional): Set to true to show the list on the public email preferences page.
- `type` (`string`, optional): The type of list. "static" for manually managed lists, "dynamic" for filter-based lists. One of: `static`, `dynamic`.

Example input: `{"name":"<name>"}`

### `surecontact_list_update`

Update List · Write

Update a list's name, description, type, filters or preference-page settings; only supplied fields change.
Returns the updated list.
Use list_update to edit a list. Use list_delete to remove it.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `list_uuid` (`string`, required): UUID of the list. Example: 550e8400-e29b-41d4-a716-446655440000.
- `description` (`string`, optional): Optional description of the list. Max 1000 characters. Example: Contacts subscribed to the weekly newsletter.
- `filters` (`object`, optional): Filter criteria object for a dynamic list. Only used when type is dynamic. Example: {"include_tags": ["550e8400-e29b-41d4-a716-446655440000"]}.
- `name` (`string`, optional): Name of the list; must be unique within the workspace. Max 255 characters. Example: Newsletter Subscribers.
- `public_name` (`string`, optional): Name shown to contacts on the preferences page. Example: Weekly Newsletter.
- `show_in_preferences` (`boolean`, optional): Set to true to show the list on the public email preferences page.
- `type` (`string`, optional): The type of list. "static" for manually managed lists, "dynamic" for filter-based lists. One of: `static`, `dynamic`.

Example input: `{"list_uuid":"<list_uuid>"}`

### `surecontact_note_update`

Update Contact Note · Write

Update the title or content of an existing contact note; only the note creator or workspace managers can do this.
Returns the updated note.
Use note_update to edit a note. Use note_delete to remove it.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `content` (`string`, required): Body text of the note. Max 10,000 characters. Example: Customer requested a callback next week.
- `note_uuid` (`string`, required): UUID of the note. Example: 550e8400-e29b-41d4-a716-446655440000.
- `title` (`string`, optional): Short title for the record. Max 255 characters. Example: Renewal Discussion.

Example input: `{"content":"<content>","note_uuid":"<note_uuid>"}`

### `surecontact_purchase_create`

Create Purchase · Write

Track a purchase for a contact identified by UUID or email; an unknown email creates the contact automatically.
Returns the purchase UUID, contact UUID and contact email.
Use purchase_create to record an order from an external store.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `order_id` (`string`, required): Unique order identifier from your system. Example: ORD-12345.
- `total_amount` (`number`, required): Total order amount as a number. Example: 99.99.
- `billing_address` (`object`, optional): Billing address object. Example: {"street": "123 Main St", "city": "New York"}.
- `contact_email` (`string`, optional): Email address of the contact. Use this instead of contact_uuid when you only know the email. Example: jane@example.com.
- `contact_uuid` (`string`, optional): UUID of the contact. Get it from the contacts list or get-by-email tool. Example: 550e8400-e29b-41d4-a716-446655440000.
- `coupon_amount` (`number`, optional): Coupon discount amount. Example: 10.
- `coupon_code` (`string`, optional): Applied coupon code. Example: SAVE10.
- `currency` (`string`, optional): Three-letter ISO 4217 currency code. Example: USD.
- `customer_note` (`string`, optional): Customer notes for the order. Example: Please gift wrap.
- `discount` (`number`, optional): Total discount amount. Example: 10.
- `metadata` (`object`, optional): Free-form key-value metadata object stored with the record. Example: {"utm_source": "google"}.
- `payment_method` (`string`, optional): Payment method used. Example: credit_card.
- `products` (`array`, optional): Array of product names or identifiers in the purchase. Example: ["T-Shirt", "Mug"].
- `purchase_id` (`string`, optional): Optional secondary purchase identifier. Example: PUR-001.
- `purchased_at` (`string`, optional): When the purchase happened, as an ISO 8601 datetime. Example: 2025-01-15T10:30:00Z.
- `shipping_address` (`object`, optional): Shipping address object. Example: {"street": "123 Main St", "city": "New York"}.
- `shipping_amount` (`number`, optional): Shipping cost. Example: 5.
- `shipping_method` (`string`, optional): Shipping method. Example: standard.
- `status` (`string`, optional): Purchase status (completed, cancelled, refunded, pending). Default: completed. One of: `completed`, `cancelled`, `refunded`, `pending`.
- `subtotal` (`number`, optional): Subtotal before tax and shipping. Example: 94.99.
- `tax_amount` (`number`, optional): Tax amount. Example: 8.5.
- `transaction_id` (`string`, optional): Payment transaction ID. Example: TXN-ABC123.

Example input: `{"order_id":"<order_id>","total_amount":99.99}`

### `surecontact_sequence_enroll`

Enroll Contact in Sequence · Write

Enroll a contact, identified by UUID or email, in an active sequence; the first email goes out shortly after.
Returns the sequence and the enrolled contact.
Use sequence_enroll to start a drip sequence. Use contact_automation_start to run a workflow automation instead.
Requires an active sequence UUID from sequences_list.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `automation_uuid` (`string`, required): UUID of the automation. Example: 550e8400-e29b-41d4-a716-446655440000.
- `contact_email` (`string`, optional): Email address of the contact. Use this instead of contact_uuid when you only know the email. Example: jane@example.com.
- `contact_uuid` (`string`, optional): UUID of the contact. Get it from the contacts list or get-by-email tool. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"automation_uuid":"<automation_uuid>"}`

### `surecontact_sequence_unenroll`

Unenroll Contact from Sequence · Write

Cancel a contact's active runs in a sequence; calling it for a contact who is not enrolled succeeds with zero cancelled executions.
Returns the number of cancelled executions and the sequence.
Use sequence_unenroll to stop a drip sequence for a contact. Use sequence_enroll to start one.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `automation_uuid` (`string`, required): UUID of the automation. Example: 550e8400-e29b-41d4-a716-446655440000.
- `contact_email` (`string`, optional): Email address of the contact. Use this instead of contact_uuid when you only know the email. Example: jane@example.com.
- `contact_uuid` (`string`, optional): UUID of the contact. Get it from the contacts list or get-by-email tool. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"automation_uuid":"<automation_uuid>"}`

### `surecontact_tag_contacts_add`

Add Contacts to Tag · Write

Apply a tag to many contacts at once, up to 10,000 per request; contacts that already have it are skipped.
Returns the updated tag.
Use tag_contacts_add to tag many contacts. Use contact_tags_attach to give one contact several tags.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `contact_uuids` (`array`, required): Array of contact UUIDs. Example: ["550e8400-e29b-41d4-a716-446655440000"].
- `tag_uuid` (`string`, required): UUID of the tag. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"contact_uuids":["550e8400-e29b-41d4-a716-446655440000"],"tag_uuid":"<tag_uuid>"}`

### `surecontact_tag_contacts_remove`

Remove Contacts from Tag · Write

Remove a tag from many contacts at once, up to 10,000 per request; contacts without it are skipped.
Returns the updated tag.
Use tag_contacts_remove to untag many contacts. Use contact_tags_detach to remove several tags from one contact.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `contact_uuids` (`array`, required): Array of contact UUIDs. Example: ["550e8400-e29b-41d4-a716-446655440000"].
- `tag_uuid` (`string`, required): UUID of the tag. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"contact_uuids":["550e8400-e29b-41d4-a716-446655440000"],"tag_uuid":"<tag_uuid>"}`

### `surecontact_tag_create`

Create Tag · Write

Create a tag in the workspace.
Returns the created tag with uuid, name, slug, color and description.
Use tag_create to add a new tag. Use tag_update to change an existing tag.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): Name of the tag. Max 255 characters. Example: VIP Customer.
- `color` (`string`, optional): Hex color code. Example: #10B981.
- `description` (`string`, optional): Optional description of the tag. Example: High-value customers.
- `slug` (`string`, optional): URL-friendly slug; auto-generated from the name when omitted. Example: vip-customer.

Example input: `{"name":"<name>"}`

### `surecontact_tag_update`

Update Tag · Write

Update a tag's name, color, description or slug; only supplied fields change.
Returns the updated tag.
Use tag_update to edit a tag. Use tag_delete to remove it.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `tag_uuid` (`string`, required): UUID of the tag. Example: 550e8400-e29b-41d4-a716-446655440000.
- `color` (`string`, optional): Hex color code. Example: #10B981.
- `description` (`string`, optional): Optional description of the tag. Example: High-value customers.
- `name` (`string`, optional): Name of the tag. Max 255 characters. Example: VIP Customer.
- `slug` (`string`, optional): URL-friendly slug; auto-generated from the name when omitted. Example: vip-customer.

Example input: `{"tag_uuid":"<tag_uuid>"}`

### `surecontact_task_companies_attach`

Attach Companies to Task · Write

Link companies to a task.
Returns the API response for the links.
Use task_companies_attach to associate companies with a task. Use task_companies_detach to remove them.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `company_uuids` (`array`, required): Array of company UUIDs. Example: ["550e8400-e29b-41d4-a716-446655440000"].
- `task_uuid` (`string`, required): UUID of the task. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"company_uuids":["550e8400-e29b-41d4-a716-446655440000"],"task_uuid":"<task_uuid>"}`

### `surecontact_task_companies_detach`

Detach Companies from Task · Write

Remove companies from a task.
Returns the API response for the removal.
Use task_companies_detach to unlink companies from a task. Use task_companies_attach to add them.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `company_uuids` (`array`, required): Array of company UUIDs. Example: ["550e8400-e29b-41d4-a716-446655440000"].
- `task_uuid` (`string`, required): UUID of the task. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"company_uuids":["550e8400-e29b-41d4-a716-446655440000"],"task_uuid":"<task_uuid>"}`

### `surecontact_task_contacts_attach`

Attach Contacts to Task · Write

Link contacts to a task.
Returns the API response for the links.
Use task_contacts_attach to associate people with a task. Use task_contacts_detach to remove them.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `contact_uuids` (`array`, required): Array of contact UUIDs. Example: ["550e8400-e29b-41d4-a716-446655440000"].
- `task_uuid` (`string`, required): UUID of the task. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"contact_uuids":["550e8400-e29b-41d4-a716-446655440000"],"task_uuid":"<task_uuid>"}`

### `surecontact_task_contacts_detach`

Detach Contacts from Task · Write

Remove contacts from a task.
Returns the API response for the removal.
Use task_contacts_detach to unlink people from a task. Use task_contacts_attach to add them.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `contact_uuids` (`array`, required): Array of contact UUIDs. Example: ["550e8400-e29b-41d4-a716-446655440000"].
- `task_uuid` (`string`, required): UUID of the task. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"contact_uuids":["550e8400-e29b-41d4-a716-446655440000"],"task_uuid":"<task_uuid>"}`

### `surecontact_task_create`

Create Task · Write

Create a task, optionally linked to deals, contacts and companies.
Returns the created task.
Use task_create to add a to-do. Use task_update to change an existing task.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `title` (`string`, required): Short title of the task. Max 255 characters. Example: Follow up with Acme.
- `assigned_to_uuid` (`string`, optional): UUID of the workspace user the task is assigned to. Example: 550e8400-e29b-41d4-a716-446655440000.
- `company_uuids` (`array`, optional): Array of company UUIDs. Example: ["550e8400-e29b-41d4-a716-446655440000"].
- `contact_uuids` (`array`, optional): Array of contact UUIDs. Example: ["550e8400-e29b-41d4-a716-446655440000"].
- `deal_uuids` (`array`, optional): Array of deal UUIDs to link. Example: ["550e8400-e29b-41d4-a716-446655440000"].
- `description` (`string`, optional): Longer description of the task. Max 10,000 characters. Example: Send the revised proposal and confirm the next call.
- `due_date` (`string`, optional): When the task is due, as an ISO 8601 datetime. Example: 2026-12-31T17:00:00Z.
- `reminder_offset_minutes` (`integer`, optional): Minutes before the due date to send a reminder, at least 1. Example: 30.
- `task_type_uuid` (`string`, optional): UUID of the task type (such as call or email) from your workspace. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"title":"<title>"}`

### `surecontact_task_done`

Mark Task Done · Write

Mark a task as completed.
Returns the API response for the task.
Use task_done to complete a task. Use task_undone to reopen it.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `task_uuid` (`string`, required): UUID of the task. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"task_uuid":"<task_uuid>"}`

### `surecontact_task_undone`

Mark Task Not Done · Write

Reopen a completed task.
Returns the API response for the task.
Use task_undone to undo task_done.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `task_uuid` (`string`, required): UUID of the task. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"task_uuid":"<task_uuid>"}`

### `surecontact_task_update`

Update Task · Write

Update a task's fields, links or done state; only supplied fields change.
Returns the updated task.
Use task_update for edits. Use task_done to complete a task in one step.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `task_uuid` (`string`, required): UUID of the task. Example: 550e8400-e29b-41d4-a716-446655440000.
- `assigned_to_uuid` (`string`, optional): UUID of the workspace user the task is assigned to. Example: 550e8400-e29b-41d4-a716-446655440000.
- `company_uuids` (`array`, optional): Array of company UUIDs. Example: ["550e8400-e29b-41d4-a716-446655440000"].
- `contact_uuids` (`array`, optional): Array of contact UUIDs. Example: ["550e8400-e29b-41d4-a716-446655440000"].
- `deal_uuids` (`array`, optional): Array of deal UUIDs to link. Example: ["550e8400-e29b-41d4-a716-446655440000"].
- `description` (`string`, optional): Longer description of the task. Max 10,000 characters. Example: Send the revised proposal and confirm the next call.
- `done` (`boolean`, optional): Set to true to mark the task completed or false to reopen it.
- `due_date` (`string`, optional): When the task is due, as an ISO 8601 datetime. Example: 2026-12-31T17:00:00Z.
- `reminder_offset_minutes` (`integer`, optional): Minutes before the due date to send a reminder, at least 1. Example: 30.
- `task_type_uuid` (`string`, optional): UUID of the task type (such as call or email) from your workspace. Example: 550e8400-e29b-41d4-a716-446655440000.
- `title` (`string`, optional): Short title of the task. Max 255 characters. Example: Follow up with Acme.

Example input: `{"task_uuid":"<task_uuid>"}`

### `surecontact_company_contact_unlink`

Unlink Contact from Company · Destructive

Remove the link between a contact and a company; if it was the primary link another link is promoted automatically.
Returns the API response for the removed link.
Use company_contact_unlink to detach a contact. Use contact_delete to delete the contact itself.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `company_uuid` (`string`, required): UUID of the company. Example: 550e8400-e29b-41d4-a716-446655440000.
- `contact_uuid` (`string`, required): UUID of the contact. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"company_uuid":"<company_uuid>","contact_uuid":"<contact_uuid>"}`

### `surecontact_company_delete`

Delete Company · Destructive

Delete a company; links to contacts are preserved.
Returns an empty response on success.
Use company_delete to remove a company. Use company_archive to hide it reversibly instead.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `company_uuid` (`string`, required): UUID of the company. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"company_uuid":"<company_uuid>"}`

### `surecontact_company_note_delete`

Delete Company Note · Destructive

Delete a company note.
Returns an empty response on success.
Use company_note_delete to remove a note. Use company_note_update to edit it instead.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `company_note_uuid` (`string`, required): UUID of the company note. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"company_note_uuid":"<company_note_uuid>"}`

### `surecontact_contact_delete`

Delete Contact · Destructive

Delete a contact from the workspace.
Returns the API response confirming the deletion.
Use contact_delete to remove a contact permanently. Use contact_status_update to unsubscribe a contact instead of deleting.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `contact_uuid` (`string`, required): UUID of the contact. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"contact_uuid":"<contact_uuid>"}`

### `surecontact_deal_delete`

Delete Deal · Destructive

Delete a deal.
Returns the API response confirming the deletion.
Use deal_delete to remove a deal. Use deal_lost to close it while keeping the record.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `deal_uuid` (`string`, required): UUID of the deal. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"deal_uuid":"<deal_uuid>"}`

### `surecontact_deal_note_delete`

Delete Deal Note · Destructive

Delete a deal note.
Returns the API response confirming the deletion.
Use deal_note_delete to remove a note. Use deal_note_update to edit it instead.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `deal_note_uuid` (`string`, required): UUID of the deal note. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"deal_note_uuid":"<deal_note_uuid>"}`

### `surecontact_list_delete`

Delete List · Destructive

Delete a contact list.
Returns the API response confirming the deletion.
Use list_delete to remove a list. Use list_contacts_remove to take only some contacts out.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `list_uuid` (`string`, required): UUID of the list. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"list_uuid":"<list_uuid>"}`

### `surecontact_note_delete`

Delete Contact Note · Destructive

Soft-delete a contact note; only the note creator or workspace managers can do this.
Returns an empty response on success.
Use note_delete to remove a note. Use note_update to edit it instead.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `note_uuid` (`string`, required): UUID of the note. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"note_uuid":"<note_uuid>"}`

### `surecontact_tag_delete`

Delete Tag · Destructive

Permanently delete a tag, removing it from all contacts.
Returns an empty response on success.
Use tag_delete to remove a tag everywhere. Use tag_contacts_remove to untag only some contacts.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `tag_uuid` (`string`, required): UUID of the tag. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"tag_uuid":"<tag_uuid>"}`

### `surecontact_task_delete`

Delete Task · Destructive

Delete a task.
Returns the API response confirming the deletion.
Use task_delete to remove a task. Use task_done to complete it instead.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `task_uuid` (`string`, required): UUID of the task. Example: 550e8400-e29b-41d4-a716-446655440000.

Example input: `{"task_uuid":"<task_uuid>"}`

## Related

Other CRM & Sales connectors ([all 97](/agentkit/connectors/?category=crm-sales)):

- [Insightly](/agentkit/connectors/insightly/): Scalekit connector, API key, 108 tools
- [HubSpot](/agentkit/connectors/hubspot/): Scalekit connector, OAuth, 457 tools
- [Salesforce](/agentkit/connectors/salesforce/): Scalekit connector, OAuth, 74 tools


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
