> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bizzyco.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Property tools

> Read and set properties on contacts, customers, and businesses

Use these 6 tools to read and set properties on contacts, customers, and
businesses, and to manage the property definitions they use. Reading or writing
a record's properties also needs read access to that record, allowed without
approval: `contacts:read`, `customers:read`, or `businesses:read`.

Values pass as one `value` field: text, a number, `true`/`false`, or a list of
text for multi-select properties.

## Values on a record

### listProperties

List every property that applies to a contact, customer, or business, including
properties with no value yet. Properties with a confirmed value come first.

**Permission:** `properties:read`

**Parameters:**

| Name | Type | Required | Description |
| - | - | - | - |
| `objectType` | string | Yes | `contact`, `customer`, or `business` |
| `objectId` | string (UUID) | Yes | The record's ID |
| `includeSuggested` | boolean | No | Include suggestions awaiting the user (default `true`) |
| `includeDismissed` | boolean | No | Include values the user dismissed (default `false`) |

**Returns:** `properties`, each with its `key`, `label`, `valueType`,
`description`, and select `options`; the `confirmed` value or `null`; and
`suggested` values with their `sources`. `dismissed` is included only when you
ask for it.

***

### setProperty

Set a property on a record. The first value written under a new key creates the
property, with its type taken from the value unless you pass `valueType`. A
confirmed value replaces the current one. A suggested value waits for the user
to confirm or dismiss it.

**Permission:** `properties:write`

**Parameters:**

| Name | Type | Required | Description |
| - | - | - | - |
| `objectType` | string | Yes | `contact`, `customer`, or `business` |
| `objectId` | string (UUID) | Yes | The record's ID |
| `key` | string | Yes | Lowercase letters, digits, and underscores, such as `industry` |
| `value` | string, number, boolean, or string\[] | Yes | The value |
| `label` | string | No | Display name, used when this call creates the property |
| `valueType` | string | No | `text`, `number`, `boolean`, `date`, `url`, `select`, or `multi_select`, used when this call creates the property |
| `suggested` | boolean | No | `true` to suggest the value for the user to confirm (default `false`) |
| `sources` | object\[] | No | Where a suggested value came from: `url` (absolute http or https) and optional `title` |

**Returns:** `status` and `definitionCreated`, which is `true` when this call
created the property. With `status: "set"`, `property` holds the written value.
With `status: "suppressed"`, nothing was written: the user already dismissed this
value, or it's already the confirmed value (`reason`).

***

### removeProperty

Clear a property's confirmed value on a record. Suggestions awaiting the user
stay, and the property itself stays available. Agents ask before removing by
default, so this tool is unavailable over MCP until the agent allows
`properties:delete`.

**Permission:** `properties:delete`

**Parameters:**

| Name | Type | Required | Description |
| - | - | - | - |
| `objectType` | string | Yes | `contact`, `customer`, or `business` |
| `objectId` | string (UUID) | Yes | The record's ID |
| `key` | string | Yes | The property key |

**Returns:** `status: "removed"`, or `status: "not_found"` when the record has
no confirmed value for that key.

***

## Property definitions

### listPropertyDefinitions

List the organization's property definitions, newest first.

**Permission:** `properties:read`

**Parameters:**

| Name | Type | Required | Description |
| - | - | - | - |
| `objectType` | string | No | Only definitions for `contact`, `customer`, or `business` records |
| `limit` | number | No | Number of definitions to return |
| `offset` | number | No | Number of definitions to skip |

**Returns:** `definitions` and the `total` count.

***

### updatePropertyDefinition

Change a property's label, description, select options, or the kinds of record
it applies to. `options` and `objectTypes` replace the current lists, and
removing an option or record kind that values still use fails. A property's
type can't change: retire it with `retirePropertyDefinition` and set values
under a new key.

**Permission:** `properties:write`

**Parameters:**

| Name | Type | Required | Description |
| - | - | - | - |
| `key` | string | Yes | The property key |
| `label` | string | No | New display name |
| `description` | string | No | New description, or `null` to clear it |
| `options` | string\[] | No | Select options, for `select` and `multi_select` properties |
| `objectTypes` | string\[] | No | Record kinds it applies to: `contact`, `customer`, `business` |

Pass at least one change besides `key`.

**Returns:** The property definition.

***

### retirePropertyDefinition

Retire a property. Its values stop appearing on every record, and the key
becomes free for a new property. Agents ask before retiring by default, so this
tool is unavailable over MCP until the agent allows `properties:delete`.

**Permission:** `properties:delete`

**Parameters:**

| Name | Type | Required | Description |
| - | - | - | - |
| `key` | string | Yes | The property key |

**Returns:** The retired property definition.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.