> ## Documentation Index
> Fetch the complete documentation index at: https://octolane.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# MCP Tools Reference

> Complete reference for all 29 Octolane MCP tools - search, create, update records, manage pipeline, access Signal data, and more.

Every tool available on the Octolane MCP server, organized by category. Each tool includes its parameters, types, and example usage.

<Note>
  All tools are available at `https://mcp.octolane.com/mcp` and require authentication via the `X-API-Key` header.
</Note>

***

## Search & Query

Tools for finding and retrieving data from your CRM.

### `search_deals`

Search deals with filters for pipeline, stage, account, contact, deal size, close date, and staleness.

<Expandable title="Parameters">
  <ParamField body="search_query" type="string">
    Search by deal/opportunity name.
  </ParamField>

  <ParamField body="pipeline_name" type="string">
    Filter by pipeline name (e.g., "Sales").
  </ParamField>

  <ParamField body="stage_name" type="string">
    Filter by stage name (e.g., "Negotiation", "Won").
  </ParamField>

  <ParamField body="account_name" type="string">
    Filter by associated company/account name.
  </ParamField>

  <ParamField body="contact_name" type="string">
    Filter by associated contact name.
  </ParamField>

  <ParamField body="min_amount" type="number">
    Minimum deal value.
  </ParamField>

  <ParamField body="max_amount" type="number">
    Maximum deal value.
  </ParamField>

  <ParamField body="close_date_from" type="string">
    Start of close date range (ISO 8601).
  </ParamField>

  <ParamField body="close_date_to" type="string">
    End of close date range (ISO 8601).
  </ParamField>

  <ParamField body="days_without_activity" type="integer">
    Filter to deals with no activity for N days (stale deals).
  </ParamField>

  <ParamField body="limit" type="integer">
    Maximum results to return. Defaults to 10, max 25.
  </ParamField>
</Expandable>

<Expandable title="Example">
  **Prompt:** "Show me all stale deals worth more than \$50K"

  **Tool call:**

  ```json theme={"system"}
  {
    "tool": "search_deals",
    "arguments": {
      "min_amount": 50000,
      "days_without_activity": 14
    }
  }
  ```
</Expandable>

***

### `search_contacts`

Search contacts by name, email, company, or job title.

<Expandable title="Parameters">
  <ParamField body="query" type="string">
    Search by contact name or email.
  </ParamField>

  <ParamField body="company_name" type="string">
    Filter by company name.
  </ParamField>

  <ParamField body="job_title" type="string">
    Filter by job title.
  </ParamField>

  <ParamField body="limit" type="integer">
    Maximum results to return. Defaults to 10, max 25.
  </ParamField>
</Expandable>

<Expandable title="Example">
  **Prompt:** "Find all contacts at Stripe"

  **Tool call:**

  ```json theme={"system"}
  {
    "tool": "search_contacts",
    "arguments": {
      "company_name": "Stripe"
    }
  }
  ```
</Expandable>

***

### `search_accounts`

Search accounts (companies) by name, domain, or industry.

<Expandable title="Parameters">
  <ParamField body="query" type="string">
    Search by company name or domain.
  </ParamField>

  <ParamField body="domain" type="string">
    Filter by company domain.
  </ParamField>

  <ParamField body="industry" type="string">
    Filter by industry.
  </ParamField>

  <ParamField body="limit" type="integer">
    Maximum results to return. Defaults to 10, max 25.
  </ParamField>
</Expandable>

<Expandable title="Example">
  **Prompt:** "Find SaaS companies in our CRM"

  **Tool call:**

  ```json theme={"system"}
  {
    "tool": "search_accounts",
    "arguments": {
      "industry": "SaaS"
    }
  }
  ```
</Expandable>

***

### `search_emails`

Search email conversations by contact, company domain, keyword, or direction.

<Expandable title="Parameters">
  <ParamField body="contact_email" type="string">
    Search emails involving this email address.
  </ParamField>

  <ParamField body="account_domain" type="string">
    Search emails involving this company domain.
  </ParamField>

  <ParamField body="search_query" type="string">
    Search by email subject or content.
  </ParamField>

  <ParamField body="label" type="string">
    Filter by direction: `sent`, `inbox`, or `all`. Defaults to `all`.
  </ParamField>

  <ParamField body="limit" type="integer">
    Maximum results to return. Defaults to 10, max 25.
  </ParamField>
</Expandable>

<Expandable title="Example">
  **Prompt:** "Show me all emails we've sent to Stripe"

  **Tool call:**

  ```json theme={"system"}
  {
    "tool": "search_emails",
    "arguments": {
      "account_domain": "stripe.com",
      "label": "sent"
    }
  }
  ```
</Expandable>

***

### `search_meetings`

Search past and upcoming meetings by keyword, attendee, or date range.

<Expandable title="Parameters">
  <ParamField body="query" type="string">
    Search keywords for meeting title, summary, transcript, or attendee. Omit for purely temporal queries like "my next meeting".
  </ParamField>

  <ParamField body="start_date" type="string">
    Start of date range (ISO 8601).
  </ParamField>

  <ParamField body="end_date" type="string">
    End of date range (ISO 8601).
  </ParamField>

  <ParamField body="sort" type="string">
    Sort order for start\_time: `asc` for upcoming, `desc` for recent. Defaults to `desc`.
  </ParamField>

  <ParamField body="limit" type="integer">
    Maximum results to return. Defaults to 10, max 25.
  </ParamField>
</Expandable>

<Expandable title="Example">
  **Prompt:** "What meetings do I have this week?"

  **Tool call:**

  ```json theme={"system"}
  {
    "tool": "search_meetings",
    "arguments": {
      "start_date": "2026-04-14T00:00:00Z",
      "sort": "asc"
    }
  }
  ```
</Expandable>

***

### `get_deal_details`

Get full details of a specific deal including associated contacts, account, notes, tasks, and next steps.

<Expandable title="Parameters">
  <ParamField body="opportunity_id" type="string" required>
    The deal/opportunity ID. Use `search_deals` to find it.
  </ParamField>
</Expandable>

<Expandable title="Example">
  **Prompt:** "Pull up the Stripe deal"

  First call `search_deals` with `search_query: "Stripe"` to get the ID, then:

  ```json theme={"system"}
  {
    "tool": "get_deal_details",
    "arguments": {
      "opportunity_id": "deal_abc123"
    }
  }
  ```

  Returns deal details, current stage, value, close date, all associated contacts, notes, tasks, and next steps.
</Expandable>

***

### `get_pipeline_overview`

Get a summary of your sales pipeline(s) showing deal counts, total values, and average deal size by stage.

<Expandable title="Parameters">
  <ParamField body="pipeline_name" type="string">
    Filter by pipeline name. Omit to see all pipelines.
  </ParamField>
</Expandable>

<Expandable title="Example">
  **Prompt:** "What's our pipeline look like?"

  **Tool call:**

  ```json theme={"system"}
  {
    "tool": "get_pipeline_overview",
    "arguments": {}
  }
  ```

  Returns pipeline ID, name, and breakdown by stage with deal counts, total values, and average deal size.
</Expandable>

***

### `get_signal_visitors`

Retrieve website visitors identified by Octolane Signal with visit counts, intent scores, and activity dates.

<Expandable title="Parameters">
  <ParamField body="search_query" type="string">
    Search by company name or domain.
  </ParamField>

  <ParamField body="page" type="integer">
    Page number for pagination. Defaults to 1.
  </ParamField>

  <ParamField body="limit" type="integer">
    Results per page. Defaults to 10, max 50.
  </ParamField>
</Expandable>

<Expandable title="Example">
  **Prompt:** "What companies have been visiting our site?"

  **Tool call:**

  ```json theme={"system"}
  {
    "tool": "get_signal_visitors",
    "arguments": {
      "limit": 20
    }
  }
  ```

  Returns companies with visit counts, intent scores, and activity dates.
</Expandable>

***

### `get_email_thread`

Get the full email thread conversation by thread ID.

<Expandable title="Parameters">
  <ParamField body="thread_id" type="string" required>
    The email thread ID. Get this from `search_emails` results.
  </ParamField>
</Expandable>

***

### `get_notes`

Search and retrieve notes linked to a deal, contact, or account. Supports lookup by name, email, or domain. No ID required.

<Expandable title="Parameters">
  <ParamField body="entity_id" type="string">
    Direct entity UUID (deal, contact, or account).
  </ParamField>

  <ParamField body="account_name" type="string">
    Find notes by company name.
  </ParamField>

  <ParamField body="account_domain" type="string">
    Find notes by company domain.
  </ParamField>

  <ParamField body="contact_name" type="string">
    Find notes by contact name.
  </ParamField>

  <ParamField body="contact_email" type="string">
    Find notes by contact email.
  </ParamField>

  <ParamField body="limit" type="integer">
    Maximum results. Defaults to 10, max 25.
  </ParamField>
</Expandable>

<Expandable title="Example">
  **Prompt:** "Show me all notes on the Stripe account"

  **Tool call:**

  ```json theme={"system"}
  {
    "tool": "get_notes",
    "arguments": {
      "account_name": "Stripe"
    }
  }
  ```
</Expandable>

***

### `get_tasks`

Get tasks assigned to you or linked to a specific deal, contact, or account.

<Expandable title="Parameters">
  <ParamField body="entity_id" type="string">
    Get tasks linked to this entity UUID.
  </ParamField>

  <ParamField body="entity_type" type="string">
    Type of entity: `account`, `contact`, or `opportunity`. Required when `entity_id` is provided.
  </ParamField>

  <ParamField body="include_completed" type="boolean">
    Include completed tasks. Defaults to false.
  </ParamField>

  <ParamField body="limit" type="integer">
    Maximum results. Defaults to 15, max 25.
  </ParamField>
</Expandable>

<Expandable title="Example">
  **Prompt:** "What are my open tasks?"

  **Tool call:**

  ```json theme={"system"}
  {
    "tool": "get_tasks",
    "arguments": {}
  }
  ```
</Expandable>

***

### `get_current_user`

Get your identity, workspace role, and subscription details. Returns name, email, organization, role, and billing info.

<Expandable title="Parameters">
  No parameters required.
</Expandable>

***

## Create & Update

Tools for writing data to your CRM. Records created via MCP are immediately picked up by Octolane's agents for enrichment and follow-up.

### `create_deal`

Create a new deal in the CRM and assign it to a pipeline stage. The associated account and contacts must already exist. Create them first if needed.

<Expandable title="Parameters">
  <ParamField body="pipeline_id" type="string" required>
    Pipeline UUID. Use `get_pipeline_overview` to find it.
  </ParamField>

  <ParamField body="name" type="string">
    Deal name. Auto-generated from account/contact if omitted.
  </ParamField>

  <ParamField body="stage_id" type="string">
    Stage UUID within the pipeline. Defaults to first stage. Use `list_pipeline_stages` to find it.
  </ParamField>

  <ParamField body="deal_size" type="number">
    Deal value in dollars.
  </ParamField>

  <ParamField body="close_date" type="string">
    Expected close date (ISO 8601).
  </ParamField>

  <ParamField body="next_action_date" type="string">
    Next follow-up date (ISO 8601).
  </ParamField>

  <ParamField body="next_steps" type="string">
    Description of next steps for this deal.
  </ParamField>

  <ParamField body="account_domain" type="string">
    Domain of the associated company (must already exist in CRM).
  </ParamField>

  <ParamField body="primary_contact_email" type="string">
    Email of the primary contact (must already exist in CRM).
  </ParamField>

  <ParamField body="additional_contact_emails" type="array">
    Emails of additional contacts (must already exist in CRM).
  </ParamField>

  <ParamField body="owner_email" type="string">
    Email of the deal owner (org member). Defaults to current user.
  </ParamField>
</Expandable>

<Expandable title="Example">
  **Prompt:** "Create a deal for Stripe, \$120K enterprise plan"

  The AI assistant will chain tools: `get_pipeline_overview` → `create_account` (if needed) → `create_contact` (if needed) → `create_deal`:

  ```json theme={"system"}
  {
    "tool": "create_deal",
    "arguments": {
      "pipeline_id": "pipe_abc123",
      "name": "Stripe - Enterprise Plan",
      "deal_size": 120000,
      "account_domain": "stripe.com",
      "primary_contact_email": "sarah@stripe.com",
      "close_date": "2026-04-30"
    }
  }
  ```

  **What happens next:** Octolane creates the deal, enriches linked contacts and accounts, and the Follow-Up Agent starts monitoring the conversation for stale threads.
</Expandable>

***

### `create_contact`

Create a new contact from an email address. The backend auto-creates the associated account from the email domain and enriches the contact.

<Expandable title="Parameters">
  <ParamField body="email" type="string" required>
    Contact's email address.
  </ParamField>

  <ParamField body="first_name" type="string">
    Contact's first name.
  </ParamField>

  <ParamField body="last_name" type="string">
    Contact's last name.
  </ParamField>
</Expandable>

<Expandable title="Example">
  **Prompt:** "Add Sarah Chen from Stripe to our CRM"

  **Tool call:**

  ```json theme={"system"}
  {
    "tool": "create_contact",
    "arguments": {
      "email": "sarah@stripe.com",
      "first_name": "Sarah",
      "last_name": "Chen"
    }
  }
  ```
</Expandable>

***

### `create_account`

Create a new account (company) from a domain. Automatically enriched with company info, size, industry, funding, and more.

<Expandable title="Parameters">
  <ParamField body="domain" type="string" required>
    Company domain (e.g., "stripe.com", "linear.app").
  </ParamField>
</Expandable>

<Expandable title="Example">
  **Tool call:**

  ```json theme={"system"}
  {
    "tool": "create_account",
    "arguments": {
      "domain": "linear.app"
    }
  }
  ```
</Expandable>

***

### `create_note`

Create a note and link it to a deal, contact, or account.

<Expandable title="Parameters">
  <ParamField body="title" type="string" required>
    Short title for the note.
  </ParamField>

  <ParamField body="content" type="string">
    Full note content (plain text).
  </ParamField>

  <ParamField body="entity_id" type="string" required>
    UUID of the entity to link this note to. Use a search tool first to find the ID.
  </ParamField>

  <ParamField body="entity_type" type="string" required>
    Type of the linked entity: `account`, `contact`, or `opportunity`.
  </ParamField>
</Expandable>

<Expandable title="Example">
  **Prompt:** "Add a note to the Stripe deal: spoke with Sarah, they want SOC 2 before signing"

  The AI assistant will call `search_deals` first to get the deal ID, then:

  ```json theme={"system"}
  {
    "tool": "create_note",
    "arguments": {
      "title": "Call with Sarah Chen",
      "content": "Spoke with Sarah - they want SOC 2 report before procurement can sign off. Timeline is end of Q1.",
      "entity_id": "deal_abc123",
      "entity_type": "opportunity"
    }
  }
  ```
</Expandable>

***

### `create_task`

Create a task and optionally link it to a deal, contact, or account. Use for reminders, follow-ups, action items, or next steps.

<Expandable title="Parameters">
  <ParamField body="title" type="string" required>
    Short title for the task.
  </ParamField>

  <ParamField body="content" type="string">
    Detailed description of the task.
  </ParamField>

  <ParamField body="due_date" type="string">
    Due date (ISO 8601).
  </ParamField>

  <ParamField body="priority" type="string">
    Priority level: `Low`, `Medium`, `High`, or `Urgent`.
  </ParamField>

  <ParamField body="is_urgent" type="boolean">
    Mark as urgent. Defaults to false.
  </ParamField>

  <ParamField body="entity_id" type="string">
    UUID of the entity to link this task to.
  </ParamField>

  <ParamField body="entity_type" type="string">
    Type of the linked entity: `account`, `contact`, or `opportunity`. Required when `entity_id` is provided.
  </ParamField>
</Expandable>

<Expandable title="Example">
  **Prompt:** "Remind me to send SOC 2 report to Stripe by Friday"

  ```json theme={"system"}
  {
    "tool": "create_task",
    "arguments": {
      "title": "Send SOC 2 report to Stripe",
      "due_date": "2026-04-17",
      "priority": "High",
      "entity_id": "deal_abc123",
      "entity_type": "opportunity"
    }
  }
  ```
</Expandable>

***

### `update_deal_stage`

Move a deal to a specific stage by stage ID.

<Expandable title="Parameters">
  <ParamField body="opportunity_id" type="string" required>
    The deal/opportunity ID. Use `search_deals` to find it.
  </ParamField>

  <ParamField body="stage_id" type="string" required>
    Target stage ID. Use `list_pipeline_stages` to find available stages.
  </ParamField>
</Expandable>

***

### `move_deal_to_next_stage`

Automatically advance a deal to the next stage in its pipeline based on stage order.

<Expandable title="Parameters">
  <ParamField body="opportunity_id" type="string" required>
    The deal/opportunity ID. Use `search_deals` to find it.
  </ParamField>
</Expandable>

<Expandable title="Example">
  **Prompt:** "Move the Stripe deal to the next stage"

  ```json theme={"system"}
  {
    "tool": "move_deal_to_next_stage",
    "arguments": {
      "opportunity_id": "deal_abc123"
    }
  }
  ```
</Expandable>

***

### `update_note`

Update an existing note's title or content.

<Expandable title="Parameters">
  <ParamField body="note_id" type="string" required>
    UUID of the note to update.
  </ParamField>

  <ParamField body="title" type="string">
    New title for the note.
  </ParamField>

  <ParamField body="content" type="string">
    New content for the note.
  </ParamField>
</Expandable>

***

### `update_task`

Update an existing task. Change title, due date, priority, or mark as complete.

<Expandable title="Parameters">
  <ParamField body="task_id" type="string" required>
    UUID of the task to update.
  </ParamField>

  <ParamField body="title" type="string">
    New title.
  </ParamField>

  <ParamField body="content" type="string">
    New description.
  </ParamField>

  <ParamField body="due_date" type="string">
    New due date (ISO 8601). Set to null to remove.
  </ParamField>

  <ParamField body="priority" type="string">
    New priority: `Low`, `Medium`, `High`, or `Urgent`.
  </ParamField>

  <ParamField body="is_urgent" type="boolean">
    Set or unset urgent flag.
  </ParamField>

  <ParamField body="completed" type="boolean">
    Set to true to mark as done, false to reopen.
  </ParamField>
</Expandable>

<Expandable title="Example">
  **Prompt:** "Mark my SOC 2 task as done"

  ```json theme={"system"}
  {
    "tool": "update_task",
    "arguments": {
      "task_id": "task_xyz789",
      "completed": true
    }
  }
  ```
</Expandable>

***

## Pipeline Management

Tools for configuring and navigating your pipeline structure.

### `list_pipeline_stages`

List all stages for a pipeline, showing name, order, type (won/lost/default), and win probability.

<Expandable title="Parameters">
  <ParamField body="pipeline_name" type="string">
    Name or partial name of the pipeline. Omit to list stages for all pipelines.
  </ParamField>

  <ParamField body="pipeline_id" type="string">
    Pipeline ID, if already known.
  </ParamField>
</Expandable>

***

### `rename_pipeline`

Rename a sales pipeline.

<Expandable title="Parameters">
  <ParamField body="pipeline_id" type="string" required>
    UUID of the pipeline to rename. Use `get_pipeline_overview` to find it.
  </ParamField>

  <ParamField body="new_name" type="string" required>
    The new name for the pipeline.
  </ParamField>

  <ParamField body="description" type="string">
    New description for the pipeline.
  </ParamField>
</Expandable>

***

## Field Discovery

Tools for discovering available fields and custom properties on your CRM records. Useful before creating or updating records to check what fields are available.

### `get_account_fields`

Discover available fields and custom properties for accounts (companies). Returns field names, types, and valid dropdown options.

<Expandable title="Parameters">
  No parameters required.
</Expandable>

***

### `get_contact_fields`

Discover available fields and custom properties for contacts. Returns field names, types, and valid dropdown options.

<Expandable title="Parameters">
  No parameters required.
</Expandable>

***

### `get_deal_fields`

Discover available fields and custom properties for deals in a specific pipeline. Each pipeline can have different custom fields.

<Expandable title="Parameters">
  <ParamField body="pipeline_name" type="string">
    Name or partial name of the pipeline.
  </ParamField>

  <ParamField body="pipeline_id" type="string">
    Pipeline ID, if already known.
  </ParamField>
</Expandable>

***

## Signal

### `get_signal_script`

Get the Octolane Signal tracking script tag for your website. Returns an HTML snippet with your organization's unique public key to install in your website's `<head>`.

<Expandable title="Parameters">
  No parameters required.
</Expandable>

***

## Workspace

Tools for managing your workspace and team.

### `list_workspace_members`

List all members in the workspace with their name, email, role, and avatar.

<Expandable title="Parameters">
  <ParamField body="search_name" type="string">
    Filter by name to find a specific member.
  </ParamField>
</Expandable>

***

### `invite_team_member`

Invite one or more people to your workspace by email. Requires admin or owner role.

<Expandable title="Parameters">
  <ParamField body="members" type="array" required>
    List of people to invite (max 10). Each entry has:

    * `email` (string, required). Email address of the person to invite
    * `role` (string). `member` (default), `admin`, or `owner`
  </ParamField>
</Expandable>

<Expandable title="Example">
  **Prompt:** "Invite [sarah@company.com](mailto:sarah@company.com) as an admin"

  **Tool call:**

  ```json theme={"system"}
  {
    "tool": "invite_team_member",
    "arguments": {
      "members": [
        { "email": "sarah@company.com", "role": "admin" }
      ]
    }
  }
  ```
</Expandable>

***

## Rate limits

MCP tools share the same rate limits as the REST API: 100 requests per minute per API key. If you hit the limit, you'll receive a `429` response with a `Retry-After` header.

Most AI assistants handle rate limiting automatically by waiting and retrying.
