API reference
Update a person's note / tags
people_update — Replace the note and/or tags X-Buddy keeps for a person (never changes anything on X).
people_update · Changes an X-Buddy setting
Replace the note and/or tags X-Buddy keeps for a person (never changes anything on X). Pass expected_revision (from people_get / the last update) to refuse the write if someone changed them meanwhile.
| REST | PATCH /api/public/v1/people/{person} |
| MCP tool | people_update |
| Permission needed | leads.manage — Owner, Manager, Operator |
| Scope group | audience:write |
| Group | Contacts and lists |
| Shown up front in profiles | Contacts & lists |
Input
| Field | Type | Required | Description |
|---|---|---|---|
person |
string (1–60 chars) | Yes | person_id, @handle or #user_id. |
note |
string (0–2000 chars) | No | |
tags |
array of string (1–40 chars) (0–30 items) | No | |
expected_revision |
integer (0–∞) | No | The person's revision you last read; a newer one → revision_conflict, nothing written. |
Result
Returns the operation's result in the { data, meta } envelope.
Needs an idempotency key (Idempotency-Key, 8–128 characters). Retrying with the same key never repeats the action.
Example
Call over REST
curl -X PATCH "https://reach-link-craft.lovable.app/api/public/v1/people/%40example_person" \
-H "Authorization: Bearer $XBUDDY_API_KEY" \
-H "Idempotency-Key: 6f1c2a90-example-key" \
-H "Content-Type: application/json" \
-d '{}'
Call over MCP
{
"method": "tools/call",
"params": {
"name": "people_update",
"arguments": {
"person": "@example_person",
"idempotency_key": "6f1c2a90-example-key"
}
}
}
Errors you may get
| Code | HTTP | Retryable |
|---|---|---|
unauthorized |
401 | No |
key_expired |
401 | No |
integration_revoked |
401 | No |
connection_not_linked |
403 | No |
integration_paused |
403 | No |
workspace_integrations_paused |
403 | No |
integration_authorization_lost |
403 | No |
workspace_suspended |
403 | No |
forbidden |
403 | No |
invalid_input |
422 | No |
rate_limited |
429 | Yes |
internal |
500 | Yes |
read_only |
403 | No |
idempotency_key_required |
428 | No |
idempotency_conflict |
409 | No |
idempotency_processing |
409 | Yes |
conflict |
409 | No |
precondition_failed |
422 | No |
revision_required |
428 | No |
revision_conflict |
412 | No |
not_found |
404 | No |