Migration Guide

December 31, 2025 · View on GitHub

This guide covers three major migrations:

  1. MCP-Compliant Naming (#1039) - Universal tools using snake_case, verb-first format
  2. Legacy Tools → Universal Tools (#1022) - Resource-specific tools consolidation
  3. List Tools Consolidation (#1059) - List-specific tools reduced from 11 → 4 tools

Migration 1: MCP-Compliant Naming (#1039)

Status: Old tool names deprecated (Q1 2026 removal target) Issue: #1039 Effective: Current version

Overview

All universal tools have been renamed to follow MCP ecosystem standards:

  • Format: snake_case (not kebab-case)
  • Pattern: Verb-first (not noun-first)
  • Examples: search_records, get_record_details, create_record

Why MCP-Compliant Naming?

  • Ecosystem Alignment: Matches Desktop Commander, SEP-986, and official MCP docs
  • Consistency: All MCP servers use snake_case, verb-first pattern
  • Standards Compliance: Follows de-facto MCP conventions (get_weather, list_repos, read_file)

Complete Naming Migration Table

Old Name (Deprecated)New Name (MCP-Compliant)Category
records_searchsearch_recordsUniversal Search
records_get_detailsget_record_detailsUniversal Metadata
records_get_attributesget_record_attributesUniversal Metadata
records_discover_attributesdiscover_record_attributesUniversal Metadata
records_get_attribute_optionsget_record_attribute_optionsUniversal Metadata
records_get_infoget_record_infoUniversal Metadata
records_search_advancedsearch_records_advancedAdvanced Search
records_search_by_relationshipsearch_records_by_relationshipAdvanced Search
records_search_by_contentsearch_records_by_contentAdvanced Search
records_search_by_timeframesearch_records_by_timeframeAdvanced Search
records_batchbatch_recordsBatch Operations
records_search_batchbatch_search_recordsBatch Operations
create-recordcreate_recordCRUD Operations
update-recordupdate_recordCRUD Operations
delete-recorddelete_recordCRUD Operations
create-notecreate_noteNote Operations
list-noteslist_notesNote Operations
smithery-debug-configsmithery_debug_configDebug/Diagnostics

Backward Compatibility

Dual Alias Support: Both old formats continue to work until v2.0.0:

  • Old noun-verb snake_case (e.g., records_search, records_get_details)
  • Old kebab-case (e.g., create-record, update-record)
  • Both emit deprecation warnings pointing to new canonical names

Migration Examples

Example 1: Search Records

Old (deprecated):

{ "tool": "records_search", "params": { "resource_type": "companies" } }

New (MCP-compliant):

{ "tool": "search_records", "params": { "resource_type": "companies" } }

Example 2: Create Record

Old (deprecated):

{ "tool": "create-record", "params": { "resource_type": "people" } }

New (MCP-compliant):

{ "tool": "create_record", "params": { "resource_type": "people" } }

Example 3: Get Record Details

Old (deprecated):

{
  "tool": "records_get_details",
  "params": { "resource_type": "companies", "record_id": "abc123" }
}

New (MCP-compliant):

{
  "tool": "get_record_details",
  "params": { "resource_type": "companies", "record_id": "abc123" }
}

Testing Your Migration

  1. Find old tool names: Search your codebase for deprecated patterns
  2. Replace systematically: Use the table above for 1:1 replacements
  3. Verify no warnings: Run your application and check logs for deprecation warnings
  4. Update tests: Ensure test assertions use new canonical names

Migration 2: Legacy Tools → Universal Tools (#1022)

Status: Legacy tools deprecated (Q1 2026 removal target) Issue: #1022 Effective: v1.3.7

Overview

Legacy resource-specific tools (86 tools) are being consolidated into universal tools (20 tools) for better consistency, maintainability, and user experience.

Why Universal Tools?

  • Consistency: Single API for all resource types
  • Simplicity: 65% reduction in tool count (86 → 20 tools)
  • Maintainability: One implementation, fewer edge cases
  • Better Error Messages: Standardized error handling across resources

Timeline

  • Now: Legacy tools deprecated, accessible via DISABLE_UNIVERSAL_TOOLS=true
  • Q1 2026: Legacy tools removed in v2.0.0

Environment Variables

  • Default (no env var): Universal tools enabled ✓
  • DISABLE_UNIVERSAL_TOOLS=true: Enables legacy tools (deprecated)

Note: DISABLE_UNIVERSAL_TOOLS is a legacy flag name. Setting it to true enables legacy tools, not disables universal tools.

Quick Reference

Core Universal Tools

OperationUniversal ToolLegacy Equivalents
Search recordssearch_recordssearch-companies, search-people, list-tasks
Get detailsget_record_detailsget-company-details, get-person-details
Create recordcreate_recordcreate-company, create-person, create-task
Update recordupdate_recordupdate-company, update-task
Delete recorddelete_recorddelete-company, delete-task
Get attributesget_record_attributesget-company-attributes
Discover attributesdiscover_record_attributesdiscover-company-attributes
Get detailed infoget_record_infoget-company-basic-info, get-company-contact-info

Advanced Universal Tools

OperationUniversal ToolLegacy Equivalents
Advanced searchsearch_records_advancedadvanced-search-companies, advanced-search-people
Search by relationshipsearch_records_by_relationshipsearch-companies-by-people, search-people-by-company
Search by contentsearch_records_by_contentsearch-companies-by-notes, search-people-by-notes
Search by timeframesearch_records_by_timeframesearch-people-by-creation-date, search-people-by-modification-date
Batch operationsbatch_recordsbatch-create-companies, batch-update-companies
Batch searchbatch_search_recordsbatch-search-companies

Migration Examples

Example 1: Search Companies → Search Records

Legacy:

{
  "tool": "search-companies",
  "params": {
    "query": "Acme Corp"
  }
}

Universal (MCP-compliant):

{
  "tool": "search_records",
  "params": {
    "resource_type": "companies",
    "query": "Acme Corp"
  }
}

Example 2: Create Person → Create Record

Legacy:

{
  "tool": "create-person",
  "params": {
    "name": "John Doe",
    "email": "john@example.com"
  }
}

Universal (MCP-compliant):

{
  "tool": "create_record",
  "params": {
    "resource_type": "people",
    "attributes": {
      "name": "John Doe",
      "email": "john@example.com"
    }
  }
}

Example 3: Update Task → Update Record

Legacy:

{
  "tool": "update-task",
  "params": {
    "task_id": "abc-123",
    "content": "Updated task description"
  }
}

Universal (MCP-compliant):

{
  "tool": "update_record",
  "params": {
    "resource_type": "tasks",
    "record_id": "abc-123",
    "attributes": {
      "content": "Updated task description"
    }
  }
}

Example 4: Batch Operations

Legacy:

{
  "tool": "batch-create-companies",
  "params": {
    "companies": [...]
  }
}

Universal (MCP-compliant):

{
  "tool": "batch_records",
  "params": {
    "resource_type": "companies",
    "operation": "create",
    "records": [...]
  }
}

Complete Mapping Table

Note: This mapping table may lag behind code changes. Use tool discovery output or the source definitions in src/handlers/tool-configs/universal/index.ts:deprecatedToolMappings as the authoritative reference.

Company Tools

Legacy ToolUniversal ToolResource Type
search-companiessearch_recordscompanies
get-company-detailsget_record_detailscompanies
create-companycreate_recordcompanies
update-companyupdate_recordcompanies
delete-companydelete_recordcompanies
get-company-attributesget_record_attributescompanies
discover-company-attributesdiscover_record_attributescompanies
get-company-basic-infoget_record_infocompanies
get-company-contact-infoget_record_infocompanies
get-company-business-infoget_record_infocompanies
get-company-social-infoget_record_infocompanies
advanced-search-companiessearch_records_advancedcompanies
search-companies-by-notessearch_records_by_contentcompanies
search-companies-by-peoplesearch_records_by_relationshipcompanies
batch-create-companiesbatch_recordscompanies
batch-update-companiesbatch_recordscompanies
batch-delete-companiesbatch_recordscompanies
batch-search-companiesbatch_search_recordscompanies
batch-get-company-detailsbatch_recordscompanies

People Tools

Legacy ToolUniversal ToolResource Type
search-peoplesearch_recordspeople
get-person-detailsget_record_detailspeople
create-personcreate_recordpeople
advanced-search-peoplesearch_records_advancedpeople
search-people-by-companysearch_records_by_relationshippeople
search-people-by-activitysearch_records_by_contentpeople
search-people-by-notessearch_records_by_contentpeople
search-people-by-creation-datesearch_records_by_timeframepeople
search-people-by-modification-datesearch_records_by_timeframepeople
search-people-by-last-interactionsearch_records_by_timeframepeople

Task Tools

Legacy ToolUniversal ToolResource Type
create-taskcreate_recordtasks
update-taskupdate_recordtasks
delete-taskdelete_recordtasks
list-taskssearch_recordstasks

Record Tools

Legacy ToolUniversal ToolResource Type
get-recordget_record_details(any)
list-recordssearch_records(any)
batch-create-recordsbatch_records(any)
batch-update-recordsbatch_records(any)

Parameter Transformations

Common Parameter Changes

Legacy ParameterUniversal ParameterNotes
company_idrecord_idUnified identifier
person_idrecord_idUnified identifier
task_idrecord_idUnified identifier
Top-level attributesattributes objectNested structure
N/Aresource_typeRequired in universal tools

Attributes Nesting

Legacy tools accepted attributes at the top level:

{
  "name": "Acme Corp",
  "domain": "acme.com"
}

Universal tools require attributes in an attributes object:

{
  "resource_type": "companies",
  "attributes": {
    "name": "Acme Corp",
    "domain": "acme.com"
  }
}

Testing Your Migration

1. Enable Legacy Tools (temporary)

DISABLE_UNIVERSAL_TOOLS=true npm run dev

2. Run Side-by-Side Tests

Test both legacy and universal tools with the same data to verify identical results.

3. Switch to Universal Tools

Remove DISABLE_UNIVERSAL_TOOLS to use universal tools by default.

4. Verify No Warnings

Run your application - you should see NO deprecation warnings.

Need Help?


Migration 3: List Tools Consolidation (#1059)

Status: Deprecated (v1.5.0), removal Q1 2026 Issue: #1059 (Epic), #1071 (Deprecation PR) Effective: v1.5.0

Overview

List-specific tools consolidated from 11 → 4 tools for simpler API surface and better consistency.

What Changed?

Filter Operations (5 → 1):

  • filter-list-entries enhanced with 4 auto-detected modes
  • Deprecated: advanced-filter-list-entries, filter-list-entries-by-parent, filter-list-entries-by-parent-id

Entry Management (3 → 1):

  • manage-list-entry enhanced with 3 auto-detected modes
  • Deprecated: add-record-to-list, remove-record-from-list, update-list-entry

List Discovery (2 → Universal):

  • Migrated to universal tools: search_records, get_record_details
  • Deprecated: get-lists, get-list-details

Quick Summary

  • Filter operations: 5 → 1 tool
  • Entry management: 3 → 1 tool
  • List discovery: 2 → Universal tools
  • Full backward compatibility until v2.0.0

See List Tools Migration Guide for complete migration examples.

Example Migrations

Filter by Parent Attribute

Old (deprecated):

{
  "tool": "filter-list-entries-by-parent",
  "params": {
    "listId": "list_deals",
    "parentObjectType": "companies",
    "parentAttributeSlug": "industry",
    "condition": "equals",
    "value": "Technology"
  }
}

New (consolidated):

{
  "tool": "filter-list-entries",
  "params": {
    "listId": "list_deals",
    "parentObjectType": "companies",
    "parentAttributeSlug": "industry",
    "condition": "equals",
    "value": "Technology"
  }
}

Add Record to List

Old (deprecated):

{
  "tool": "add-record-to-list",
  "params": {
    "listId": "list_abc123",
    "recordId": "company_xyz789",
    "objectType": "companies"
  }
}

New (consolidated):

{
  "tool": "manage-list-entry",
  "params": {
    "listId": "list_abc123",
    "recordId": "company_xyz789",
    "objectType": "companies"
  }
}

Need Help?

See the complete List Tools Migration Guide for:

  • All 8 deprecated tools with before/after examples
  • Auto-mode detection explanation
  • Visual comparisons
  • Testing instructions
  • FAQ