Repository navigation
Highlights
Exception to semantic versioning (as 2.0.2–2.0.7): one fix changes which rows a filter
returns. It is marked Behavior change.
Filters on a person or company field by id (Owner = 12345) now run on Affinity's side for list
entries, so list export needs no --all and downloads only the matching rows. A number on a
record reference is its id only.
Changes
- Behavior change (correctness fix). CLI and SDK (
--filter,query,affinity.filters,
list(filter=...)): an integer or 1–20 digits on a person, company or other record-reference
field matches the record's id only. It no longer matches a record whose name is those digits;
usestarts_wordto find such a name. (As before, a reference with no name, such as a person
without a first and last name or a company with an empty name, can't be matched by id.) - CLI and SDK: on list entries,
=andinwith record ids on a person or company field, and
=,in,has_anyandhas_allwith ids on a multi-person or multi-company field, go to
Affinity's search. Such filters need no--all/--max-resultsand download only matching
rows. Ids above 2147483647, names,!=, enriched person and company fields, and filters on
company ls/person ls/queryfrom companies or persons are still checked locally. - CLI: a
starts_wordwith no letter (starts_word "360") is checked locally instead of being
sent as Affinity's name search. Onlist exportit needs a scope flag; oncompany ls,
person lsandqueryfrom companies or persons it needs another field condition (or use
--query).
Bug Fixes
- CLI:
list export --filterwith a filter Affinity's search refuses (for example a key without
the "Export data from Lists" permission), run without--all,--max-resultsor
--first-page-only, exits 2 before any output. It used to print only the first page, as if it
were the whole result.details.refusedcarries Affinity's reason.
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.