Log touch
log_touchRecord a call, email, meeting or LinkedIn activity; link account_id, contact_id or opportunity_id (resolve IDs first). Check existing activity: source_touch_id reuses captured work and fills missing details; don't narrate routine duplicates. New work needs request_id + occurred_at for retries. sequence_action records an explicit step outcome; retry the same payload for pending tracking. Process captured meetings without another touch: propose_updates(source_touch_id) then review_proposed_updates.
When to use: After any meaningful interaction. commit_reviewed_updates often applies this from an approved review. Logging an email or call the system also collects? Pass its id (the Gmail message id, the call id) as external_id, so the sync and the agent land on one activity.
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 | sms | 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. | |
| external_id | No | The activity's id in the system it came from (a Gmail message id, a dialer call id). An activity this workspace already holds under that id is returned instead of logged again (duplicate_suppressed), with only its blank details filled from this call. | |
| 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 | Requires outbound matching-channel evidence. Call attempts or LinkedIn requests hold the step and need follow_up_on; not_now pauses. Acceptance needs confirmation. Omitted outcome means completed. | |
| source_touch_id | No | Reuse captured activity; fill missing facts only. Conflicts need explicit correction. Use instead of request_id. | |
| duration_minutes | No | An integer ≥ 0. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | ||
| touch | No | ||
| account | No | ||
| sequence_tracking | No | ||
| duplicate_suppressed | No |