Watt Data Logo

This guide covers breaking changes, renamed tools, and migration steps for upgrading from v1 to v2 of the Watt API.

Migration Checklist

Address these changes in priority order:

PriorityChangeAction
1Endpoint changeUpdate from /v1/mcp to /v2/mcp
2Tool renamingUpdate all tool names in your integration
3Terminology changesUpdate field references: person → entity, cluster → trait
4Parameter changesUpdate input parameters to match new schemas
5Output changesUpdate response parsing for new field names
6New toolsAdopt new tools for improved workflows

Endpoint

V2 uses a single versioned endpoint:

VersionEndpoint
V1/v1/mcp
V2/v2/mcp

Authentication methods (OAuth, API key) remain the same. Only the path changes. Note that V2 does not have a separate /m2m endpoint — the /v2/mcp endpoint accepts both OAuth and API key authentication.

Tool Renaming

Every core tool has been renamed in V2:

V1 ToolV2 ToolPurpose
resolve_identitiesentity_resolveIdentity resolution
get_personentity_enrichProfile enrichment
find_personsentity_findAudience discovery
list_clusterstrait_listBrowse traits by domain
get_clustertrait_getTrait analytics
search_clusterstrait_searchSemantic trait search
generate_url_for_uploadgenerate_upload_urlPresigned upload URL
generate_download_urlgenerate_download_urlPresigned download URL
submit_feedbacksubmit_feedbackFeedback submission (unchanged)

Terminology Changes

V2 uses entity/trait terminology consistently:

V1 TermV2 TermDescription
personentityAn individual or business record
person_identity_idUnique identifier for a record
clustertraitA behavioral or demographic attribute
cluster_idtrait_idNumeric trait identifier
cluster_hashtrait_hashStable string trait identifier
cluster_nametrait_nameHuman-readable trait name
multi_identifiersidentifiersMulti-criterion identifier array

entity_type Parameter

V2 tools require an entity_type parameter ("person" or "business") on most tools. V1 tools implicitly operated on persons only.

// V1
{ "person_ids": ["12345", "12346"] }

// V2
{ "entity_type": "person", "entity_ids": ["12345", "12346"] }

Parameter Changes

entity_resolve (was resolve_identities)

ChangeV1V2
Identifier arraymulti_identifiersidentifiers
Output contact typesN/Aidentifier_types (default: ["email"])
Entity typeImplicit (person)entity_type required
// V1
{
  "multi_identifiers": [
    { "id_type": "email", "hash_type": "plaintext", "values": ["jane@acme.com"] }
  ]
}

// V2
{
  "entity_type": "person",
  "identifiers": [
    { "id_type": "email", "hash_type": "plaintext", "values": ["jane@acme.com"] }
  ],
  "identifier_types": ["email", "phone"]
}

entity_enrich (was get_person)

ChangeV1V2
ID parameterperson_idsentity_ids
Entity typeImplicitentity_type required
CSV inputN/Acsv_resource_uri + entity_id_column
// V1
{ "person_ids": ["12345"], "domains": ["demographic", "interest"] }

// V2
{
  "entity_type": "person",
  "entity_ids": ["12345"],
  "domains": ["demographic", "interest"]
}

entity_find (was find_persons)

ChangeV1V2
Criteriaexpression with cluster IDs/hashesexpression with trait IDs/hashes
Export identifiersexport_identifiersidentifier_type or identifier_types
Location unitradius_kmradius + unit (km or miles)
Entity typeImplicitentity_type required
// V1
{
  "expression": "cluster_hash:abc123 AND cluster_hash:def456",
  "location": { "latitude": 37.77, "longitude": -122.42, "radius_km": 5 },
  "export_identifiers": ["email", "phone"]
}

// V2
{
  "entity_type": "person",
  "expression": "abc123 AND def456",
  "location": { "latitude": 37.77, "longitude": -122.42, "radius": 5, "unit": "km" },
  "identifier_types": ["email", "phone"]
}

Note: V2 expressions use trait hashes directly without the cluster_hash: prefix.

trait_list (was list_clusters)

ChangeV1V2
Domain filterdomain (single)domains (array)
ID lookupcluster_idstrait_ids, trait_hashes, or trait_names
Include allN/Ainclude_all flag
Entity typeImplicitentity_type required

trait_get (was get_cluster)

ChangeV1V2
ID parametercluster_id or cluster_hashtrait_id, trait_hash, or trait_name + domain
AnalyticsAlways fullanalytics_depth (summary or full)
Entity typeImplicitentity_type required

Output Changes

Field Renaming

All output fields follow the new terminology:

V1 Output FieldV2 Output Field
person_identity_id
cluster_idtrait_id
cluster_hashtrait_hash
cluster_nametrait_name
cluster_valuetrait_value
cluster_domaindomain
persons / resultsentities / sample

Workflow ID

V2 always returns workflow_id and tool_trace_id in every response (via BaseToolOutputSchema). Pass workflow_id between related calls for session tracking.

New Tools

V2 introduces several tools with no V1 equivalent:

entity_relations

Find parent-child relationships between entities (e.g., people at a company, subsidiaries of a business).

{
  "entity_type": "person",
  "entity_ids": ["12345"],
  "relationship": "parent",
  "related_entity_type": "business"
}

See entity_relations.

resolve_and_enrich_rows

Streaming CSV pipeline that combines identity resolution and enrichment in a single operation. Replaces the manual resolve_identitiesget_person pattern for CSV workflows.

{
  "entity_type": "person",
  "csv_resource_uri": "workflow://550e8400.../uploads/customers.csv",
  "email_columns": ["email"],
  "domains": ["demographic", "interest"]
}

See resolve_and_enrich_rows.

geocode_location

Convert location descriptions to coordinates for use with location filters.

{
  "location": "San Francisco, CA"
}

See geocode_location.

Watt SDK

V2 introduces the @wattdata/sdk package for building agentic workflows. Built on Vercel's AI SDK v6, the SDK connects to Watt's MCP tools — you provide API keys, and the agent handles tool discovery, orchestration, and multi-step reasoning.

See the SDK Integration guide for full documentation.

ICP Analysis Workflow Changes

The V1 analyze_customers tool has been decomposed into two composable steps in V2:

V1 (single tool):

analyze_customers (upload CSV → resolve → enrich → group → analyze)

V2 (composable pipeline):

entity_resolve → group_entities_by_trait → calculate_trait_lift → entity_find

This gives you more control over each step and allows reusing intermediate results. See the ICP Analysis guide for the full V2 workflow.

Testing Your Migration

  1. Update endpoint URLs from /v1/mcp to /v2/mcp
  2. Rename all tool calls per the tool renaming table
  3. Add entity_type to all tool calls
  4. Update identifier parameters (multi_identifiersidentifiers, person_idsentity_ids)
  5. Update expression syntax (remove cluster_hash: prefix, use trait hashes directly)
  6. Update output parsing for renamed fields (person_identity_id, etc.)
  7. Test export workflows — format options are the same (csv, json, jsonl)
  8. Verify location filters — now use radius + unit instead of radius_km

Getting Help

If you encounter issues during migration:

  • Review the MCP Tool Reference for updated schemas
  • Check error messages for specific validation details
  • Use submit_feedback to report data quality issues
  • Contact support for integration assistance

On this page