SDK v1.11.0
Highlights
xaffinity person field --set "Phone Number" "..." and similar enriched-field writes now work. The SDK and CLI accept the field name or its field ID and handle the rest — including disambiguating names that exist under multiple enrichment providers (e.g. company "Industry" exists for both the built-in enricher and Dealroom), which now raises AmbiguousFieldError with a candidate table instead of silently picking one. Truly derived fields like "Current Organization" raise the new EnrichedFieldNotWritableError instead of failing with an opaque message.
What's New
EnrichedFieldNotWritableErrorexception (subclass ofUnsupportedOperationError) — raised when an enriched field is derived-only and cannot be writtenFieldService.list(skip_cache=True)/AsyncFieldService.list(skip_cache=True)— bypass the field-metadata cache for fresh post-write readsFieldResolver.to_v1_numeric(client, field_id, entity_type)on the CLI resolver — resolves field IDs to the numeric form the write path needs, handling enriched IDs transparently
Bug Fixes
person field --set/person field --unset/company field --set/company field --unsetnow correctly handle enriched field IDs in addition to field names and numeric IDs- Ambiguous enriched field names (e.g. company "Industry") are now disambiguated by enrichment provider instead of silently picking one of the matching fields
Quick Install
SDK only:
pip install affinity-sdkSDK + CLI:
pipx install "affinity-sdk[cli]"MCP Server for Claude Desktop (easiest - MCPB bundle):
- Install CLI:
pipx install "affinity-sdk[cli]" - (Optional) Pre-configure API key:
xaffinity config setup-key- If skipped, Claude Desktop will prompt for your API key during install
- Install xaffinity MCP in Claude Desktop (download and double-click)
Other MCP clients (Cursor, Windsurf, VS Code, etc.) require manual configuration - see MCP docs.