Manage Contact
manage_contactCreate, update, or delete contacts with phones, emails, organizations, nicknames, and custom fields.
Instructions
Create, update, or delete a contact. Consolidated tool replacing create_contact, update_contact, and delete_contact.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| action | Yes | The action to perform: "create", "update", or "delete". | |
| contact_id | No | The contact ID. Required for "update" and "delete" actions. | |
| given_name | No | First name (for create/update). | |
| family_name | No | Last name (for create/update). | |
| phones | No | List of phone dicts {number, type?}. Supported types: mobile, work, home, main, workMobile, internal, other, etc. Use type="internal" for internal PBX/ATS short numbers (e.g. 250, 301) — stored as a standalone number without + prefix, displayed as "Internal: 250". | |
| emails | No | List of email dicts {address, type?}. | |
| organizations | No | List of org dicts {name?, title?, department?, jobDescription?, type?}. | |
| nicknames | No | List of nickname dicts {value, type?}. Useful for bilingual contacts (e.g. Hebrew/English alternative forms). Android dialer and WhatsApp search both index nicknames, enabling cross-script lookup. Supported types: default, alternate_name, maiden_name, initials, other, etc. | |
| urls | No | List of URL dicts {value, type?}. Supported types: homepage, blog, profile, work, ftp, reservations, other, etc. | |
| user_defined | No | List of custom field dicts {key, value}. Useful for structured data like account numbers, IDs, or custom dates. | |
| relations | No | List of relation dicts {person, type?}. Supported types: spouse, child, parent, friend, manager, assistant, etc. | |
| notes | No | Additional notes (for create/update). | |
| address | No | Street address (for create/update). | |
| birthday | No | Birthday as 'YYYY-MM-DD', 'MM-DD' (no year), or 'clear'/'' to remove. | |
| phones_mode | No | How to update phones on "update": "merge" (default), "replace", or "remove". merge = read-modify-write with dedup by canonicalForm/normalized value. replace = overwrite all phones with provided list. remove = delete phones matching provided numbers. | merge |
| emails_mode | No | How to update emails on "update": "merge" (default), "replace", or "remove". | merge |
| organizations_mode | No | How to update orgs on "update": "merge" (default), "replace", or "remove". | merge |
| nicknames_mode | No | How to update nicknames on "update": "merge" (default), "replace", or "remove". | merge |
| urls_mode | No | How to update urls on "update": "merge" (default), "replace", or "remove". merge dedups by normalized URL (lowercased, trailing slash stripped). | merge |
| user_defined_mode | No | How to update custom fields on "update": "merge" (default), "replace", or "remove". merge overrides value on matching key; new keys appended. | merge |
| relations_mode | No | How to update relations on "update": "merge" (default), "replace", or "remove". | merge |
| phone | No | [DEPRECATED] Single phone number. Use phones=[{"number":..., "type":"mobile"}]. | |
| No | [DEPRECATED] Email address. Use emails=[{"address":..., "type":"other"}]. | ||
| organization | No | [DEPRECATED] Company name. Use organizations=[{"name":...}]. | |
| job_title | No | [DEPRECATED] Job title. Use organizations=[{"title":...}]. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |