connacto
Back to Personal CRM

Personal CRM tools

Every tool in this module, with its full description, parameters, and return value. All of them require the module to be active first. See the Personal CRM overview for how to turn it on.

CRUD

Core tools

Create, read, update, and delete entries. Every module has exactly these four.

personal_crm_add_entry

Add a person to the user's Personal CRM module. Requires the module to be active — see create_database. Before adding, check whether this person is already tracked: call personal_crm_search_contacts (or personal_crm_list_entries if the CRM is small) with the name. If a confident match already exists, use personal_crm_update_entry or personal_crm_log_touchpoint against that entryId instead of creating a second row for the same person — this tool does not deduplicate on your behalf.

Parameters

NameTypeRequiredNotes
personstringYes
relationshipstringNo
companystringNo
birthdaystringNoISO date, e.g. 1990-08-20. Use any year if the birth year is unknown.
last_interactionstringNoISO date, e.g. 2026-08-20
follow_up_datestringNoISO date, e.g. 2026-08-20
important_detailsstringNo
categoryfamily | friend | colleague | client | acquaintance | otherNo
tierclose | regular | distantNo
follow_up_cadence_daysnumberNoCheck in with this contact every N days.

Returns

The created entry as JSON, including its id.

personal_crm_list_entries

List entries in the user's active Personal CRM module.

Parameters

NameTypeRequiredNotes
limitnumberNoMax entries to return (default 100, max 500).

Returns

Every entry in the active database, as a JSON array.

personal_crm_update_entry

Update fields on an existing Personal CRM entry.

Parameters

NameTypeRequiredNotes
entryIdstringYes
personstringNo
relationshipstringNo
companystringNo
birthdaystringNo
last_interactionstringNo
follow_up_datestringNo
important_detailsstringNo
categoryfamily | friend | colleague | client | acquaintance | otherNo
tierclose | regular | distantNo
follow_up_cadence_daysnumberNo

Returns

The updated or deleted entry as JSON. Returns an error if entryId does not belong to an entry in the active database.

personal_crm_delete_entry

Delete an entry from the user's active Personal CRM module.

Parameters

NameTypeRequiredNotes
entryIdstringYes

Returns

The updated or deleted entry as JSON. Returns an error if entryId does not belong to an entry in the active database.

Specialized

Purpose-built tools

Shortcuts and queries shaped around how Personal CRM is actually used, so your agent doesn't have to fetch every entry and filter them itself.

personal_crm_attach_photo

Attach a photo to an existing Personal CRM entry (replacing any photo already on it). If you have the image's raw bytes, pass photo_base64. If the user attached the image in a chat client (e.g. claude.ai), you cannot read its bytes: call this WITHOUT photo_base64 to get a one-time upload link, and give that link to the user so they can upload the photo themselves. The link expires in 30 minutes. Photos are stored privately; the returned viewPath is only viewable signed into the connacto web app as this user.

Parameters

NameTypeRequiredNotes
entryIdstringYesID of the Personal CRM entry to attach the photo to.
photo_base64stringNoThe photo, base64-encoded (no data: URI prefix). Omit when you cannot read the image bytes — the tool then returns an upload link for the user instead.
photo_content_typeimage/jpeg | image/png | image/webp | image/heicNoMIME type of the photo, if photo_base64 is set. Defaults to image/jpeg.

Returns

JSON with a private viewPath when photo_base64 was given, or an uploadUrl to hand the user when it was not.

personal_crm_add_entries

Bulk-add people to the user's Personal CRM module in one call, e.g. importing a contact list. Requires the module to be active — see create_database. Accepts up to 200 contacts per call. This does not deduplicate against existing contacts, unlike personal_crm_add_entry: it's meant for importing a batch wholesale, not for logging one person at a time.

Parameters

NameTypeRequiredNotes
contactsobject[]Yes

Returns

The created entries as JSON, plus a count.

personal_crm_search_contacts

Fuzzy-search contacts in the active Personal CRM by name (and company, as a secondary signal). Use this before personal_crm_add_entry to check whether a person is already tracked, to decide whether to add a new contact or update/log a touchpoint against an existing one.

Parameters

NameTypeRequiredNotes
querystringYesFree-text name to search for, e.g. 'mike' or 'mike chen'.
limitnumberNoMax candidates to return (default 5, max 20).

Returns

Returns the result of this tool call as JSON.

personal_crm_list_due_for_follow_up

List entries in the active Personal CRM whose follow_up_date is on or before a given date (defaults to today).

Parameters

NameTypeRequiredNotes
asOfstringNoISO date, e.g. 2026-08-20. Defaults to today if omitted.

Returns

Matching entries as a JSON array.

personal_crm_log_touchpoint

Convenience tool to record that you just interacted with a contact: sets last_interaction in one call. If type is given, also records a row in the contact's interaction history. follow_up_date is set explicitly if passed; otherwise it's recomputed from the contact's follow-up cadence (if one is set) or left unchanged.

Parameters

NameTypeRequiredNotes
entryIdstringYes
last_interactionstringYesISO date, e.g. 2026-08-20
follow_up_datestringNoISO date, e.g. 2026-08-20. If omitted, recomputed from the contact's follow-up cadence when one is set.
typecall | text | email | coffee | meeting | otherNoIf given, also logs this as an interaction-history row.
notesstringNoNotes for the interaction-history row. Only used when type is given.

Returns

An object with the updated contact and the created interaction row (or null if type was not given).

personal_crm_list_upcoming_birthdays

List contacts in the active Personal CRM whose birthday falls within the next N days, ordered by how soon it comes up. Only the month and day are compared, so the birth year does not matter.

Parameters

NameTypeRequiredNotes
withinDaysnumberYesHow many days ahead to look. Defaults to 30.
asOfstringNoISO date, e.g. 2026-08-20. Defaults to today if omitted.

Returns

Matching entries as a JSON array, each with a daysUntilBirthday field.

personal_crm_set_follow_up_cadence

Set (or clear, by passing null) how often, in days, to check in with a contact. Setting a cadence immediately recomputes follow_up_date from the contact's current last_interaction (or today, if none is logged yet). Clearing it leaves the existing follow_up_date alone.

Parameters

NameTypeRequiredNotes
entryIdstringYes
cadence_daysobjectYesDays between check-ins. Pass null to clear the cadence.

Returns

The updated or deleted entry as JSON. Returns an error if entryId does not belong to an entry in the active database.

personal_crm_interaction_history

List logged interactions for a contact in the active Personal CRM, newest first.

Parameters

NameTypeRequiredNotes
entryIdstringYes
limitnumberNoMax entries to return (default 100, max 500).

Returns

Matching interaction rows as a JSON array.

personal_crm_list_by_category

List entries in the active Personal CRM with a given category.

Parameters

NameTypeRequiredNotes
categoryfamily | friend | colleague | client | acquaintance | otherYes

Returns

Matching entries as a JSON array.

personal_crm_stats

Summarize the active Personal CRM: contact counts by category and tier, plus how many contacts are past their follow_up_date.

Parameters

None. Call it with an empty object.

Returns

An object with totalContacts, byCategory, byTier, and pastFollowUpDate counts.

personal_crm_overdue_followups

List contacts in the active Personal CRM who are overdue for a follow-up, computed server-side: for contacts with a follow_up_cadence_days set, the cadence is recomputed from their last_interaction; for contacts without a cadence, their explicit follow_up_date is used. Ordered most overdue first.

Parameters

NameTypeRequiredNotes
asOfstringNoISO date, e.g. 2026-08-20. Defaults to today if omitted.

Returns

Overdue entries as a JSON array, each with nextDueDate and daysOverdue.

personal_crm_upcoming

List what's coming up in the active Personal CRM within the next N days: birthdays and contacts whose computed follow-up due date falls in that window (contacts already overdue are excluded, see personal_crm_overdue_followups).

Parameters

NameTypeRequiredNotes
withinDaysnumberYesHow many days ahead to look. Defaults to 30.
asOfstringNoISO date, e.g. 2026-08-20. Defaults to today if omitted.

Returns

An object with birthdays and followUps arrays, each entry annotated with daysUntil.

personal_crm_recent_interactions

List the most recently logged interactions across every contact in the active Personal CRM, newest first, each with the contact's name. For a single contact's full history, use personal_crm_interaction_history instead.

Parameters

NameTypeRequiredNotes
limitnumberNoMax entries to return (default 100, max 500).

Returns

Returns the result of this tool call as JSON.