update_contact
Update a contact
Changes name, company, phones, emails, addresses, or birthday on a contact card and syncs to iCloud or Google when connected. phones, emails, and addresses are full list replacements (not append). To add one entry, call get_contact, then pass the existing list plus the new item. Omit an array to leave that list unchanged. Pass an empty array to clear that list. Each list allows up to 10 entries.
Annotations
{
"title": "Update a contact",
"readOnlyHint": false,
"destructiveHint": false,
"openWorldHint": true,
"idempotentHint": false
}Input
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"contactId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"firstName": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
]
},
"lastName": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
]
},
"displayName": {
"type": "string",
"maxLength": 200
},
"company": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
]
},
"phones": {
"description": "Full replacement phone list (up to 10). Omit to keep current phones. Empty array clears all phones.",
"maxItems": 10,
"type": "array",
"items": {
"type": "object",
"properties": {
"number": {
"type": "string",
"minLength": 1
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"number"
],
"additionalProperties": false
}
},
"emails": {
"description": "Full replacement email list (up to 10). Omit to keep current emails. Empty array clears all emails.",
"maxItems": 10,
"type": "array",
"items": {
"type": "object",
"properties": {
"address": {
"type": "string",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"address"
],
"additionalProperties": false
}
},
"addresses": {
"description": "Full replacement address list (up to 10). Omit to keep current addresses. Empty array clears all addresses.",
"maxItems": 10,
"type": "array",
"items": {
"type": "object",
"properties": {
"street": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
]
},
"city": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
]
},
"region": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
]
},
"postalCode": {
"anyOf": [
{
"type": "string",
"maxLength": 40
},
{
"type": "null"
}
]
},
"country": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
]
},
"label": {
"anyOf": [
{
"type": "string",
"maxLength": 40
},
{
"type": "null"
}
]
}
},
"additionalProperties": false
}
},
"birthday": {
"anyOf": [
{
"type": "string",
"maxLength": 32
},
{
"type": "null"
}
]
}
},
"required": [
"contactId"
],
"additionalProperties": false
}Auth
Bearer personal token (ml_…) or OAuth access token (mla_…). Memlane Pro and iCloud required.
Errors
- 401 missing or invalid credentials
- 403 account is not Pro or iCloud is not connected
- 429 rate limit
- Tool errors return isError text without a stack trace