WhatConverts MCP by usefulapi

Read WhatConverts leads, calls, forms, accounts and profiles; add leads and update lead value.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
96%
Naming quality
77%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (2)

  • LOWTool 'whatconverts_get_call_recording_info' name length outside 3-30 rangein whatconverts_get_call_recording_info
  • LOWTool 'whatconverts_list_phone_numbers' name length outside 3-30 rangein whatconverts_list_phone_numbers

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~4,606Tokens (tool definitions)
~2.5 KBTypical response size
Significant attention impact (3.60% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "whatconverts": {
      "url": "https://whatconverts.usefulapi.io/mcp"
    }
  }
}

Remote endpoints

https://whatconverts.usefulapi.io/mcpstreamable-http

What it can do

Tool inventory

Tools (15)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢whatconverts_list_leads(start_date, end_date, lead_type, lead_status, quotable, ...)

List tracked leads (phone calls, web forms, chats, texts, emails, events, transactions) with source/medium/campaign/keyword attribution, contact details, quote and sales values, call duration and transcripts. start_date is REQUIRED because WhatConverts otherwise returns only today's leads; a range is at most 400 days. A Profile key sees its own profile; an Agency key can narrow by account_id/profile_id. GET /leads.

Input Schema

{
  "type": "object",
  "properties": {
    "start_date": {
      "type": "string",
      "description": "First day/time to include (UTC), e.g. 2026-10-01 or 2026-10-01T00:00:00Z."
    },
    "end_date": {
      "description": "Last day/time to include (UTC). Range from start_date at most 400 days.",
      "type": "string"
    },
    "lead_type": {
      "description": "Only this lead type.",
      "type": "string",
      "enum": [
        "appointment",
        "chat",
        "email",
        "event",
        "other",
        "phone_call",
        "text_message",
        "transaction",
        "web_form"
      ]
    },
    "lead_status": {
      "description": "Repeat or unique contacts.",
      "type": "string",
      "enum": [
        "repeat",
        "unique"
      ]
    },
    "quotable": {
      "description": "Only leads with this quotable state.",
      "type": "string",
      "enum": [
        "yes",
        "no",
        "pending",
        "not_set"
      ]
    },
    "quote_value": {
      "description": "Only leads with / without a quote value.",
      "type": "string",
      "enum": [
        "has_value",
        "no_value"
      ]
    },
    "sales_value": {
      "description": "Only leads with / without a sales value.",
      "type": "string",
      "enum": [
        "has_value",
        "no_value"
      ]
    },
    "phone_number": {
      "description": "Contact phone number, E.164 (+15551234567).",
      "type": "string",
      "pattern": "^\\+[1-9]\\d{6,14}$"
    },
    "email_address": {
      "description": "Contact email address.",
      "type": "string",
      "minLength": 3,
      "maxLength": 254
    },
    "user_id": {
      "description": "Only leads handled by this WhatConverts user id.",
      "type": "string",
      "minLength": 1,
      "maxLength": 50
    },
    "spam": {
      "description": "true = only spam leads.",
      "type": "boolean"
    },
    "duplicate": {
      "description": "true = only duplicate leads.",
      "type": "boolean"
    },
    "lead_source": {
      "description": "Traffic source, e.g. google.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "lead_medium": {
      "description": "Traffic medium, e.g. cpc.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "lead_campaign": {
      "description": "Campaign name.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "lead_content": {
      "description": "Ad content.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "lead_keyword": {
      "description": "Keyword.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "account_id": {
      "description": "Agency key only: only this account (see whatconverts_list_accounts).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "profile_id": {
      "description": "Agency key only: only this profile.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "order": {
      "description": "Sort by date created: asc or desc (default desc).",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    },
    "customer_journey": {
      "description": "Include customer journey data (Elite plans only).",
      "type": "boolean"
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "per_page": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "required": [
    "start_date"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢whatconverts_get_lead(lead_id, customer_journey)

One lead by id with every field: type, status, attribution (source, medium, campaign, keyword, landing page), contact details, location, device, quote/sales value, call details, transcripts, form/message content, and custom fields. GET /leads/{lead_id}.

Input Schema

{
  "type": "object",
  "properties": {
    "lead_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "WhatConverts lead id (from whatconverts_list_leads)."
    },
    "customer_journey": {
      "description": "Include the customer journey (Elite plans only).",
      "type": "boolean"
    }
  },
  "required": [
    "lead_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢whatconverts_get_call_recording_info(lead_id)

Recording and voicemail facts for a phone-call lead: the recording and voicemail links, call duration, answer status, tracking/caller numbers and the call/voicemail transcripts. Returns links and text only, never audio. Taken from GET /leads/{lead_id} (the audio endpoint GET /recording returns raw MP3 and is not used).

Input Schema

{
  "type": "object",
  "properties": {
    "lead_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "WhatConverts lead id of a phone call."
    }
  },
  "required": [
    "lead_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴whatconverts_update_lead(lead_id, quotable, quote_value, sales_value, lead_url, ...)

WRITE: update a lead's sales data in WhatConverts: quotable state, quote value, sales value, the URL where the lead occurred, and/or custom/additional field values. Only the fields you pass change; it overwrites the previous values of those fields. Sends no notifications. At least one field is required. POST /leads/{lead_id}.

Input Schema

{
  "type": "object",
  "properties": {
    "lead_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "WhatConverts lead id."
    },
    "quotable": {
      "description": "Quotable state.",
      "type": "string",
      "enum": [
        "yes",
        "no",
        "pending",
        "not_set"
      ]
    },
    "quote_value": {
      "description": "Quote value (number, account currency).",
      "type": "number",
      "minimum": 0,
      "maximum": 1000000000
    },
    "sales_value": {
      "description": "Sales value (number, account currency).",
      "type": "number",
      "minimum": 0,
      "maximum": 1000000000
    },
    "lead_url": {
      "description": "URL where the lead occurred.",
      "type": "string",
      "maxLength": 2000,
      "format": "uri"
    },
    "additional_fields": {
      "description": "Additional field values by field name, e.g. {\"Reason\": \"pricing\"}.",
      "type": "object",
      "propertyNames": {
        "type": "string",
        "minLength": 1,
        "maxLength": 100,
        "pattern": "^[^\\[\\]&=#%\\x00-\\x1f]+$"
      },
      "additionalProperties": {
        "type": "string",
        "maxLength": 2000
      }
    },
    "custom_fields": {
      "description": "Custom lead field values by field name.",
      "type": "object",
      "propertyNames": {
        "type": "string",
        "minLength": 1,
        "maxLength": 100,
        "pattern": "^[^\\[\\]&=#%\\x00-\\x1f]+$"
      },
      "additionalProperties": {
        "type": "string",
        "maxLength": 2000
      }
    }
  },
  "required": [
    "lead_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡whatconverts_create_lead(lead_type, profile_id, date_created, quotable, quote_value, ...)

WRITE: add a lead to WhatConverts, for example an offline phone call, a form submission from another system or a sale you want attributed. It appears in reports and counts toward lead totals; send_notification is always off, so no emails go out. Not idempotent: calling twice creates two leads. A Profile key adds to its own profile; an Agency key must pass profile_id. POST /leads.

Input Schema

{
  "type": "object",
  "properties": {
    "lead_type": {
      "type": "string",
      "enum": [
        "appointment",
        "chat",
        "email",
        "event",
        "other",
        "phone_call",
        "text_message",
        "transaction",
        "web_form"
      ],
      "description": "Lead type."
    },
    "profile_id": {
      "description": "Profile to add the lead to (required with an Agency key, not with a Profile key).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "date_created": {
      "description": "When the lead happened (UTC); default now.",
      "type": "string"
    },
    "quotable": {
      "type": "string",
      "enum": [
        "yes",
        "no",
        "pending",
        "not_set"
      ]
    },
    "quote_value": {
      "type": "number",
      "minimum": 0,
      "maximum": 1000000000
    },
    "sales_value": {
      "type": "number",
      "minimum": 0,
      "maximum": 1000000000
    },
    "lead_source": {
      "description": "Traffic source, e.g. google.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "lead_medium": {
      "description": "Traffic medium, e.g. cpc.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "lead_campaign": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "lead_content": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "lead_keyword": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "email_address": {
      "description": "Contact email address (stored on the lead; nothing is sent to it).",
      "type": "string",
      "minLength": 3,
      "maxLength": 254
    },
    "phone_number": {
      "description": "Contact phone, E.164.",
      "type": "string",
      "pattern": "^\\+[1-9]\\d{6,14}$"
    },
    "lead_url": {
      "description": "URL where the lead occurred.",
      "type": "string",
      "maxLength": 2000,
      "format": "uri"
    },
    "landing_url": {
      "description": "URL where the visitor arrived.",
      "type": "string",
      "maxLength": 2000,
      "format": "uri"
    },
    "form_name": {
      "description": "Form name (web_form only).",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "message": {
      "description": "Message body (text_message only).",
      "type": "string",
      "minLength": 1,
      "maxLength": 5000
    },
    "call_duration_seconds": {
      "description": "Call length in seconds (phone_call only).",
      "type": "integer",
      "minimum": 0,
      "maximum": 86400
    },
    "answer_status": {
      "description": "phone_call only.",
      "type": "string",
      "enum": [
        "Answered",
        "No Answer",
        "Busy"
      ]
    },
    "caller_number": {
      "description": "Caller number, E.164 (phone_call / text_message).",
      "type": "string",
      "pattern": "^\\+[1-9]\\d{6,14}$"
    },
    "tracking_number": {
      "description": "Tracking number, E.164 (phone_call / text_message).",
      "type": "string",
      "pattern": "^\\+[1-9]\\d{6,14}$"
    },
    "destination_number": {
      "description": "Destination number, E.164 (phone_call).",
      "type": "string",
      "pattern": "^\\+[1-9]\\d{6,14}$"
    },
    "additional_fields": {
      "type": "object",
      "propertyNames": {
        "type": "string",
        "minLength": 1,
        "maxLength": 100,
        "pattern": "^[^\\[\\]&=#%\\x00-\\x1f]+$"
      },
      "additionalProperties": {
        "type": "string",
        "maxLength": 2000
      }
    },
    "custom_fields": {
      "type": "object",
      "propertyNames": {
        "type": "string",
        "minLength": 1,
        "maxLength": 100,
        "pattern": "^[^\\[\\]&=#%\\x00-\\x1f]+$"
      },
      "additionalProperties": {
        "type": "string",
        "maxLength": 2000
      }
    }
  },
  "required": [
    "lead_type"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢whatconverts_list_accounts(start_date, end_date, order, page, per_page)

Agency key only: list the accounts (clients) of the agency with their profiles (id, name, date created). Use the ids to filter leads. start_date/end_date filter by creation date (WhatConverts defaults start_date to today, so pass an early start_date to see all). GET /accounts.

Input Schema

{
  "type": "object",
  "properties": {
    "start_date": {
      "description": "Accounts created from this date (UTC). Pass e.g. 2000-01-01 to list all.",
      "type": "string"
    },
    "end_date": {
      "description": "Accounts created up to this date (UTC).",
      "type": "string"
    },
    "order": {
      "description": "Sort by date created: asc or desc (default desc).",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "per_page": {
      "description": "Results per page, 1-250 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 250
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢whatconverts_get_account(account_id)

Agency key only: one account by id with its profiles. GET /accounts/{account_id}.

Input Schema

{
  "type": "object",
  "properties": {
    "account_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "WhatConverts account id."
    }
  },
  "required": [
    "account_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢whatconverts_list_profiles(account_id, start_date, end_date, order, page, ...)

Agency key only: list the profiles (websites/campaign sets) of one account. start_date/end_date filter by creation date (WhatConverts defaults start_date to today, so pass an early start_date to see all). GET /accounts/{account_id}/profiles.

Input Schema

{
  "type": "object",
  "properties": {
    "account_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "WhatConverts account id."
    },
    "start_date": {
      "description": "Profiles created from this date (UTC). Pass e.g. 2000-01-01 to list all.",
      "type": "string"
    },
    "end_date": {
      "description": "Profiles created up to this date (UTC).",
      "type": "string"
    },
    "order": {
      "description": "Sort by date created: asc or desc (default desc).",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "per_page": {
      "description": "Results per page, 1-250 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 250
    }
  },
  "required": [
    "account_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢whatconverts_get_profile(account_id, profile_id)

Agency key only: one profile by id (name, date created). GET /accounts/{account_id}/profiles/{profile_id}.

Input Schema

{
  "type": "object",
  "properties": {
    "account_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "WhatConverts account id."
    },
    "profile_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "WhatConverts profile id."
    }
  },
  "required": [
    "account_id",
    "profile_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢whatconverts_list_users(user_type, start_date, end_date, order, page, ...)

Agency key only: list WhatConverts users (email, role, whether activation is pending) of the master account or of client accounts. start_date/end_date filter by creation date (WhatConverts defaults start_date to today, so pass an early start_date to see all). GET /users.

Input Schema

{
  "type": "object",
  "properties": {
    "user_type": {
      "description": "master_account (default) or account users.",
      "type": "string",
      "enum": [
        "master_account",
        "account"
      ]
    },
    "start_date": {
      "description": "Users created from this date (UTC). Pass e.g. 2000-01-01 to list all.",
      "type": "string"
    },
    "end_date": {
      "description": "Users created up to this date (UTC).",
      "type": "string"
    },
    "order": {
      "description": "Sort by date created: asc or desc (default desc).",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "per_page": {
      "description": "Results per page, 1-250 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 250
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢whatconverts_get_user(user_id)

Agency key only: one user by id with role, notification settings and (for account users) the accounts they can access. GET /users/{user_id}.

Input Schema

{
  "type": "object",
  "properties": {
    "user_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "WhatConverts user id."
    }
  },
  "required": [
    "user_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢whatconverts_list_roles(role_type, order, page, per_page)

Agency key only: list user roles (id, name, master-account or account type). GET /roles.

Input Schema

{
  "type": "object",
  "properties": {
    "role_type": {
      "description": "master_account (default) or account roles.",
      "type": "string",
      "enum": [
        "master_account",
        "account"
      ]
    },
    "order": {
      "description": "Sort by role name (default asc).",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "per_page": {
      "description": "Results per page, 1-250 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 250
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢whatconverts_get_role(role_id)

Agency key only: one role with its permission levels (none/view/edit) per area. GET /roles/{role_id}.

Input Schema

{
  "type": "object",
  "properties": {
    "role_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "WhatConverts role id."
    }
  },
  "required": [
    "role_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢whatconverts_list_phone_numbers(account_id, profile_id, page, per_page)

List the call-tracking numbers: tracking and destination number, call flow, trigger (source/medium), call recording and messaging flags, last used. A Profile key lists its own profile; an Agency key may filter by account_id/profile_id. GET /tracking/numbers.

Input Schema

{
  "type": "object",
  "properties": {
    "account_id": {
      "description": "Agency key only: only this account.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "profile_id": {
      "description": "Agency key only: only this profile.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "per_page": {
      "description": "Results per page, 1-250 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 250
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢whatconverts_list_web_forms(account_id, profile_id, page, per_page)

List the web forms WhatConverts tracks (id, name, how the form and its submit are matched on the page). A Profile key lists its own profile; an Agency key may filter by account_id/profile_id. GET /tracking/forms.

Input Schema

{
  "type": "object",
  "properties": {
    "account_id": {
      "description": "Agency key only: only this account.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "profile_id": {
      "description": "Agency key only: only this profile.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "per_page": {
      "description": "Results per page, 1-250 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 250
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded15 tools