Log touch
log_touchRecord an activity (call / email / meeting / LinkedIn). MUST link to at least one of account_id, contact_id, opportunity_id (auto-resolve names with search_* before calling — never invent ids). Recorder- and scheduler-captured meetings file themselves as touches automatically — when the touch already exists, don't stop at "already logged": process it (its transcript when the call was recorded, the user's notes otherwise) and propose updates for approval (propose_updates with source_touch_id → review_proposed_updates). Returns the created row. Supply request_id (UUID) plus occurred_at for a durable retry. For a recorded outbound sequence step, include sequence_action:{enrollment_id,step}; the saved activity advances that exact step through the same governed update and returns sequence_tracking (updated, pending or unchanged). Retrying the same request repairs a pending update without another activity.
When to use: After any meaningful interaction. commit_reviewed_updates often applies this from an approved review.
Example: Log a 45-min discovery call with Sarah at Acme yesterday — covered pain, impact, decision criteria.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Defaults: call | email | meeting | linkedin | other. A workspace admin may rename or add values — see the live set in propose_updates' workspace.enum_values, or an admin's describe_schema. | |
| source | No | Defaults: manual | transcript_paste | api | mcp | inbox_import | calendar_import | imported_csv | scheduler | recorder | reply_io | instantly. A workspace admin may rename or add values — see the live set in propose_updates' workspace.enum_values, or an admin's describe_schema. | |
| subject | No | Short title of the activity (an email's subject line, a meeting's title); searchable and part of the duplicate fingerprint. | |
| summary | No | Plain-text account of what happened or was discussed — the rep's notes for an unrecorded call; searchable together with the subject. | |
| direction | No | Defaults: inbound | outbound. A workspace admin may rename or add values — see the live set in propose_updates' workspace.enum_values, or an admin's describe_schema. | |
| account_id | No | A uuid. | |
| contact_id | No | A uuid. | |
| request_id | No | A uuid. | |
| occurred_at | No | An ISO 8601 datetime. | |
| participants | No | Email addresses of the people on the activity (sender or recipients, meeting attendees), stored as a flat list and matched by participant search. | |
| custom_fields | No | Values for the workspace's custom touch fields, keyed by field key (see describe_schema); the reserved capable_sequence_action key is refused — use sequence_action. | |
| opportunity_id | No | A uuid. | |
| sequence_action | No | Completes a sequence step: {enrollment_id: uuid, step: the person's current step}; needs request_id, contact_id, occurred_at, direction 'outbound' and the step's channel as type. | |
| duration_minutes | No | An integer ≥ 0. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| touch | No | ||
| account | No | ||
| sequence_tracking | No | ||
| duplicate_suppressed | No |