Integration · CRM & sales
Connect Claude & ChatGPT to Affinity
Ask your AI who you know at a company, what the last note on a deal said, or which entries on a list still need a status. It can search people and companies, read opportunities, lists, notes, meetings and reminders, add people or companies to a list and set a field on a list entry. Relationship questions get answered without clicking through records.
Free plan, no credit card. Takes about a minute.
Try asking
“What do we have on Acme Corp in Affinity?”
The AI searches companies for Acme Corp and reads the company with the field values you ask for, plus the lists it is on.
“Show me the latest notes on the Acme deal.”
It finds the opportunity and lists the notes attached to it, so you can read the full content of any one.
“Add [email protected] as a new person.”
It searches people by email first and, if there is no match, creates the person with first name, last name and primary email.
What your AI can do
People and companies
Search, read and list people and companies with the field values you need, and create new people.
Lists and deals
Read lists, fields and list entries, add people, companies or opportunities to a list, and set a field such as status.
Notes and activity
Read notes on people, companies and opportunities, plus meetings, reminders and the users in your organization.
“Put Acme Corp on our Deal Flow list.”
It finds the list and the company and adds the company as a new entry on that list.
“Set the status of the Acme entry to Due Diligence.”
It looks up the list's fields to find the status field, then sets that one field on the list entry.
“Which meetings and reminders do I have logged?”
It lists meetings and reminders from Affinity, and can open a single meeting for details.
105 tools for Affinity
These tools are switched on when you connect. You can switch any of them off, or require your approval before it runs.
add_to_listChanges dataAdd a person, company or opportunity (`entity`) as a new entry on the list `list_id`.create_companyChanges dataCreate a new company. Required: primary company id or duplicate company id. Search companies first to avoid duplicates. API summary: Initiate Company Merge.create_contactChanges dataCreate a new contact. Required: primary person id or duplicate person id. Search contacts first to avoid duplicates. API summary: Initiate Person Merge.create_feedbackChanges dataCreate a new feedback. Required: type, subject or body. API summary: Send Feedback.create_field_dropdown_optionChanges dataCreate a new dropdown option for a field. Required: body. API summary: Create a dropdown option for a List Field.create_listChanges dataCreate a new list. Required: name or type. Search lists first to avoid duplicates. API summary: Create a List.create_messageChanges dataCreate a new message. Required: body. Search messages first to avoid duplicates. API summary: Create a Note.create_personChanges dataCreate a new person with `first_name`, `last_name` and `primary_email_address` (plus optional extra emails). Search first to avoid duplicates.create_reminderChanges dataCreate a new reminder. Required: body. Search reminders first to avoid duplicates. API summary: Create a Reminder.create_semantic_searchChanges dataCreate a new semantic search. Required: prompt.create_webhookDeletesCreate a new webhook. Required: url or subscriptions. Search webhooks first to avoid duplicates. Destructive action; may require approval. API summary: Create a Webhook.delete_contactDeletesPermanently delete a contact by contact id. Destructive action; may require approval. API summary: Delete a Person.delete_field_dropdown_optionDeletesPermanently delete a dropdown option by dropdown option id. Destructive action; may require approval. API summary: Delete a dropdown option for a List Field.delete_messageDeletesPermanently delete a message by message id. Destructive action; may require approval. API summary: Delete a single Note.delete_reminderDeletesPermanently delete a reminder by reminder id. Destructive action; may require approval.delete_webhookDeletesPermanently delete a webhook by webhook id. Destructive action; may require approval.get_a_single_field_on_a_personGet one contact for a contact by contact id. API summary: Get a single field on a Person.get_all_company_duplicate_suggestionsSearch companies by total count, term, filter or order by. Use this to find existing companies before creating a new company. Results are paginated. API summary: Get All Company Duplicate Suggestions.get_all_company_merge_tasksSearch companies by filter. Use this to find existing companies before creating a new company. Results are paginated. API summary: Get All Company Merge Tasks.get_all_company_mergesSearch companies by filter. Use this to find existing companies before creating a new company. Results are paginated. API summary: Get All Company Merges.get_all_person_merge_tasksSearch contacts by filter. Use this to find existing contacts before creating a new contact. Results are paginated. API summary: Get All Person Merge Tasks.get_all_person_mergesSearch contacts by filter. Use this to find existing contacts before creating a new contact. Results are paginated. API summary: Get All Person Merges.get_companyGet one company by `company_id`, including the field values you request with `field_ids` or `field_types`.get_company_2Get one company for a company by company id 2. API summary: Get a single field value on a Company.get_company_mergeGet one company by merge id. API summary: Get Company Merge.get_company_merge_taskGet one company by task id. API summary: Get Company Merge Task.get_contactGet one contact by task id. API summary: Get Person Merge Task.get_current_userGet the Affinity user and organization this API key belongs to. Use to confirm which account you are working in.get_dropdown_options_for_a_company_fieldList dropdown options for a field. Results are paginated. API summary: Get dropdown options for a Company Field.get_dropdown_options_for_a_person_fieldList dropdown options for a field. Results are paginated. API summary: Get dropdown options for a Person Field.get_field_dropdown_optionGet one dropdown option for a field by dropdown option id. API summary: Get a dropdown option for a List Field.get_field_values_on_a_single_personList contacts for a contact. Optional filters: ids or types. Results are paginated. API summary: Get field values on a single Person.get_listGet one list's details by `list_id`.get_list_entryGet one list entry by `list_id` and entry ID, with its field values.get_list_saved_viewGet one saved view for a list by view id. API summary: Get metadata on a single Saved View.get_meetingGet one meeting by `meeting_id`.get_metadata_on_all_chat_messagesSearch messages by filter. Use this to find existing messages before creating a new message. Results are paginated. API summary: Get metadata on all Chat Messages.get_metadata_on_person_fieldsSearch fields by filter or includes. Use this to find existing fields before creating a new field. Results are paginated. API summary: Get metadata on Person Fields.get_noteGet one note by its ID, including its content.get_opportunityGet one opportunity by its ID.get_page_fieldGet one field for a page by field id. API summary: Get a single field value.get_personGet one person by `contact_id`, including emails and the field values you request with `field_ids` or `field_types`.get_person_mergeGet one contact by merge id. API summary: Get Person Merge.get_reminderGet one reminder by reminder id. API summary: Get a single Reminder.get_replies_for_a_noteSearch messages for a message by filter or total count. Use this to find existing messages before creating a new message. Results are paginated. API summary: Get replies for a Note.get_transcriptGet one transcript by transcript id. API summary: Get a single Transcript.get_userGet one user by user id. API summary: Get a single User.get_webhookGet one webhook by webhook id. API summary: Get a single Webhook.list_companiesList companies in pages (use `cursor` for the next page), optionally only the given `ids`, with requested field values.list_companies_2List companies for a company. Optional filters: ids or types. Results are paginated. API summary: Get field values on a single Company.list_companies_entriesList companies. Results are paginated. API summary: Get a Company's List Entries.list_company_listsList the lists a company (`company_id`) is on.list_company_notesList notes attached to a company (`company_id`).list_contacts_entriesList contacts. Results are paginated. API summary: Get a Person's List Entries.list_field_dropdown_optionsList dropdown options for a field. Results are paginated. API summary: Get dropdown options for a List Field.list_field_valuesList values for a field. Results are paginated. API summary: Get values for a single field on a Company.list_field_values_v2_lists_list_id_list_entries_list_entry_id_fiList values for a field. Results are paginated. API summary: Get values for a single field on a List Entry.list_field_values_v2_persons_person_id_fields_field_id_values_geList values for a field. Results are paginated. API summary: Get values for a single field on a Person.list_list_entriesList the entries (rows) on a list by `list_id`, with their field values. Use `cursor` for the next page.list_list_fieldsList the fields (columns) on a list by `list_id`, such as status or owner. Use to find a field ID before updating a list entry.list_list_saved_viewsList saved views for a list. Results are paginated. API summary: Get metadata on Saved Views.list_listsList the Affinity lists (pipelines) you can see, optionally matching `term`. Use to find a list's ID.list_meetingsList meetings logged in Affinity, optionally with a `filter`.list_message_companiesList companies for a message. Optional filters: total count. Results are paginated. API summary: Get Companies attached to a Note.list_message_contactsList contacts for a message. Optional filters: total count. Results are paginated. API summary: Get Persons attached to a Note.list_message_dealsList deals for a message. Optional filters: total count. Results are paginated. API summary: Get Opportunities attached to a Note.list_notesList recent notes across Affinity, optionally with a `filter` and previews of linked people, companies and opportunities via `includes`.list_opportunitiesList opportunities (deals) in pages, optionally only the given `ids`.list_opportunity_notesList notes attached to an opportunity (`opportunity_id`).list_page_fieldsList fields for a page. Optional filters: ids or types. Results are paginated. API summary: Get field values on a single List Entry.list_peopleList people in pages (use `cursor` for the next page), optionally only the given `ids`, with requested field values.list_person_listsList the lists a person (`person_id`) is on.list_person_notesList notes attached to a person (`person_id`).list_rate_limitsList rate limits. API summary: Get rate limit usage.list_remindersList reminders, optionally with a `filter`.list_saved_views_entriesList saved views. Results are paginated. API summary: Get all List Entries on a Saved View.list_transcript_fragmentsList fragments for a transcript. Optional filters: total count. Results are paginated. API summary: Get fragments of a transcript.list_usersList the users (teammates) in your Affinity organization, optionally matching `term`.search_callsSearch calls by filter. Use this to find existing calls before creating a new call. Results are paginated. API summary: Get metadata on all Calls.search_companiesChanges dataSearch companies in Affinity by name or domain with `search`, optionally with filters and sorts. Use this to find a company's ID.search_company_relationshipsSearch relationships for a company by filter, order by or total count. Use this to find existing relationships before creating a new relationship. Results are paginated. API summary: Get Relationships for a Company.search_contact_relationshipsSearch relationships for a contact by filter, order by or total count. Use this to find existing relationships before creating a new relationship. Results are paginated. API summary: Get Relationships for a Person.search_contactsSearch contacts by total count, term, filter or order by. Use this to find existing contacts before creating a new contact. Results are paginated. API summary: Get All Person Duplicate Suggestions.search_coworkersSearch coworkers by filter or total count. Use this to find existing coworkers before creating a new coworker. Results are paginated. API summary: Get Coworker Inferred Connections.search_documentsChanges dataSearch documents. Use this to find existing documents before creating a new document. API summary: Search Files by Keyword.search_field_value_changesSearch field value changes by filter or order by. Use this to find existing field value changes before creating a new field value change. Results are paginated. API summary: Get all field value changes.search_fieldsSearch fields by filter or includes. Use this to find existing fields before creating a new field. Results are paginated. API summary: Get metadata on Company Fields.search_investor_executive_connectionsSearch investor executive connections by filter or total count. Use this to find existing investor executive connections before creating a new investor executive connection. Results are paginated. API summary: Get Investor-Executive Inferred Connections.search_list_entriesChanges dataSearch the entries on a list by `list_id` with `search`, filters and sorts.search_messagesSearch messages by filter. Use this to find existing messages before creating a new message. Results are paginated. API summary: Get metadata on all Emails.search_notes_by_keywordChanges dataSearch messages. Use this to find existing messages before creating a new message. API summary: Search Notes by Keyword.search_page_field_value_changesSearch field value changes for a page by filter. Use this to find existing field value changes before creating a new field value change. Results are paginated. API summary: Get Field Value Changes on a List Entry.search_peopleChanges dataSearch people in Affinity by name or email with `search`, optionally with filters and sorts. Use this to find a person's ID before other lookups.search_transcriptsSearch transcripts by total count or filter. Use this to find existing transcripts before creating a new transcript. Results are paginated. API summary: Get all Transcripts.search_webhooksSearch webhooks by total count or filter. Use this to find existing webhooks before creating a new webhook. Results are paginated. API summary: Get all Webhooks.update_companiesVisible to othersUpdate an existing company identified by company id. Only the fields you pass are changed. Has effects visible outside this system. API summary: Perform batch operations on a company's fields.update_companyChanges dataUpdate an existing company identified by company id 2. API summary: Update a single field value on a Company.update_contactChanges dataUpdate an existing contact identified by contact id. API summary: Update a single field value on a Person.update_contactsVisible to othersUpdate an existing contact identified by person id. Only the fields you pass are changed. Has effects visible outside this system. API summary: Perform batch operations on a person's fields.update_field_dropdown_optionChanges dataUpdate an existing dropdown option identified by dropdown option id. API summary: Update a dropdown option for a List Field.update_list_entry_fieldChanges dataSet one field on a list entry, e.g. its status: pass `list_id`, `list_entry_id`, `field_id` and the new `value`.update_messageChanges dataUpdate an existing message identified by message id. API summary: Update a single Note.update_page_fieldsVisible to othersUpdate an existing field identified by list entry id. Only the fields you pass are changed. Has effects visible outside this system. API summary: Perform batch operations on a list entry's fields.update_reminderChanges dataUpdate an existing reminder identified by reminder id. API summary: Update a Reminder.update_webhookDeletesUpdate an existing webhook identified by webhook id. Destructive action; may require approval. API summary: Update a Webhook.
Set up in three steps
- 1
Pick the app
Create a free HeyMyApps account and choose Affinity from the app list.
- 2
Paste your key
Paste your Affinity API key. In Affinity open Settings and go to the Manage Apps page, then generate an API key. You need the "Generate an API key" permission from your Affinity admin.
- 3
Add the link to your AI
You get a personal MCP link. Add it to Claude, ChatGPT or Cursor:
- Click your name, then Settings › Connectors › Add custom connector.
- Paste your link as the Remote MCP server URL.
- Switch it on from the + menu in a chat.
Questions
What can the AI do in Affinity?
The AI can search and read people, companies, opportunities, lists, list entries, notes, meetings, reminders and users. It can create people, add a person, company or opportunity to a list, and set a field on a list entry. It cannot write notes or delete records.
Does the AI see my Affinity API key?
No. Your Affinity API key is encrypted at rest and never shown to the AI. After you save it, it is not shown again, not even to you. The AI only sees the results of the tools it calls.
Can I control what the AI is allowed to do?
Yes. You choose which tools are switched on, so you can start read-only with search and lookups. Adding list entries and changing fields can require your approval before they run. Every tool call is logged.
Does it work with ChatGPT?
Yes. In ChatGPT go to Settings › Apps & Connectors › Advanced and turn on Developer mode, then add your HeyMyApps link. Developer mode needs a paid ChatGPT plan: Plus, Pro, Business or Enterprise. The same link also works in Claude (Settings › Connectors › Add custom connector), Cursor and other MCP clients.
What does it cost?
HeyMyApps has a free plan with no credit card required. Paid plans bill per completed task. You also need your own Affinity account.
Do I need a special permission in Affinity?
Yes. Generating an API key needs the "Generate an API key" permission, which your Affinity admin can give you. API access is also only included on some Affinity license types, so check your plan with Affinity if you do not see the option under Settings › Manage Apps.
Related integrations
Let your AI work in Affinity today.
Start free. Your key stays encrypted, and you decide what the AI may do.
Connect Affinity freeHeyMyApps is not affiliated with Affinity. Product names are trademarks of their owners.





