11 operations. Call each with POST https://app.chirply.io/api/v1/actions/<name> and a bearer token; the response is { "data": { "action", "summary", "result" } }. A read badge means the operation changes nothing; write requires the credential’s write scope.
New record
custom_objects.create_recordwriteconfirm
Create a custom-object record with validated field values and optional contact linkage. Queues custom_record_created for enabled workflows, which may send messages or incur provider charges according to their configured steps.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
type_id
string (uuid)
required
The object type to create a record of.
values
map of string → object
required
The record's field values, keyed by field key (see the type's fields from custom_objects.list_types). Example: {"address": "12 Oak St", "price": 950000}. A Team member (kind user) field takes a current team member's email address or user id.
primary_contact_id
string (uuid)
optional
Contact to file this record under. Shows the record on that contact's screen.
Over MCP the same operation is the tool custom_objects_create_record at https://app.chirply.io/api/mcp, same bearer token, same input.
New object type
custom_objects.create_typewriteadmin only
Create a custom object type — a new kind of record this account can store (e.g. "Property"). Takes the singular and plural names plus the typed fields records of this kind carry. The type immediately appears in the app's navigation and its records become creatable everywhere. Owners and admins only: a type is account SCHEMA, not a record — it changes the sidebar and the shape of everyone's data.
Parameters
Field
Type
Required
Description
name_singular
string
required
What one record is called, e.g. "Property". Shown on buttons and headings.
name_plural
string
required
What many records are called, e.g. "Properties". Becomes the navigation label.
icon
string
optional
Optional icon name for the navigation row (a lucide icon name like "home").
key
string
optional
URL slug for the type (lowercase letters, digits, dashes; starts with a letter). Omit to derive it from the plural name. Permanent once created.
fields
object[]
optional
The fields records of this type carry, in display order. The first text field becomes each record's display name. Default: []
fields[].key
string
optional
Storage key for the field's values (snake_case, starts with a letter). Omit to derive it from the label. Keys are permanent once records exist.
fields[].label
string
required
The field's name as people see it, e.g. "Purchase price".
What the field holds: text, number, date (YYYY-MM-DD), select (one choice from `options`), checkbox (yes/no), url, phone, email, contact_link (free-form reference to a contact), or user (a Team member — one current account member, written as their email or user id and stored as the user id). Default: "text"
fields[].options
string[]
optional
For kind=select only: the choices people can pick. Must be non-empty for selects. Default: []
fields[].required
boolean
optional
When true, a record cannot be created without a value for this field. Default: false
Over MCP the same operation is the tool custom_objects_create_type at https://app.chirply.io/api/mcp, same bearer token, same input.
Delete a record
custom_objects.delete_recordwriteconfirm
Permanently delete one custom-object record and all of its stored values. This cannot be undone.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Over MCP the same operation is the tool custom_objects_delete_record at https://app.chirply.io/api/mcp, same bearer token, same input.
Record columns
custom_objects.get_column_layoutread
Read which columns you see on one custom object type's record list and in what order, plus every column that type could show (the record name, each of its fields, the linked contact, and dates). Personal to you — it does not affect what teammates see. Returns the type's defaults when you have never changed them.
Parameters
Field
Type
Required
Description
type_id
string (uuid)
required
The object type whose list columns to read (from custom_objects.list_types).
Over MCP the same operation is the tool custom_objects_get_record at https://app.chirply.io/api/mcp, same bearer token, same input.
List records
custom_objects.list_recordsread
List the records of one custom object type, most recently updated first. Optionally filter to the records linked to a specific contact, to the records where a Team member field names someone ("properties where I'm the agent": member_field + member), or text-search across each record's stored values.
Parameters
Field
Type
Required
Description
limit
integer
optional
Max rows to return (1–100). Default: 25
offset
integer
optional
Rows to skip. Default: 0
type_id
string (uuid)
required
The object type whose records to list (from custom_objects.list_types).
contact_id
string (uuid)
optional
Only records linked to this contact.
member_field
string
optional
Key of one of this type's Team member fields (kind "user"). Requires `member`.
member
string
optional
Who `member_field` must name: "me" (the signed-in person; not available to API keys), a team member's user id, or their email address.
query
string
optional
Text to match in a record's stored values (case-insensitive). Values of 2,000+ characters, such as raw import dumps, are not searched.
Over MCP the same operation is the tool custom_objects_list_records at https://app.chirply.io/api/mcp, same bearer token, same input.
Custom objects
custom_objects.list_typesread
List this account's custom object types — the user-defined record types beyond contacts, companies and deals (e.g. Properties, Pets, Policies) — including each type's field definitions.
Over MCP the same operation is the tool custom_objects_list_types at https://app.chirply.io/api/mcp, same bearer token, same input.
Reset record columns
custom_objects.reset_column_layoutwrite
Forget your saved column choices for one custom object type's record list so it goes back to that type's default columns (the record name, its first few fields, the linked contact, and the first-added date). Personal to you, and affects only which columns are displayed — no record data is changed or deleted.
Parameters
Field
Type
Required
Description
type_id
string (uuid)
required
The object type whose list columns to reset (from custom_objects.list_types).
Over MCP the same operation is the tool custom_objects_reset_column_layout at https://app.chirply.io/api/mcp, same bearer token, same input.
Save record columns
custom_objects.set_column_layoutwrite
Choose which columns you see on one custom object type's record list and in what order — the array order IS the left-to-right order, and any column you leave out is hidden. Personal to you; teammates' lists are unaffected. Unknown keys are dropped and the record's Name column is always kept (it is the link into each record), so the list can never be left unusable. Call custom_objects.get_column_layout for the valid keys.
Parameters
Field
Type
Required
Description
type_id
string (uuid)
required
The object type whose list columns to save (from custom_objects.list_types).
columns
string[]
required
Ordered column keys, e.g. ['label','field:price','primary_contact']. A type's fields use the 'field:<field key>' form.
Over MCP the same operation is the tool custom_objects_set_column_layout at https://app.chirply.io/api/mcp, same bearer token, same input.
Edit a record
custom_objects.update_recordwriteconfirm
Update supplied fields or contact linkage on a custom record, validating its field definitions. Actual changes queue custom_record_updated for enabled workflows, which may send messages or incur provider charges according to their configured steps. Unchanged values do not emit events.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
id
string (uuid)
required
The record to edit.
values
map of string → object
optional
Field values to change, keyed by field key. A null or empty value clears an optional field; omitted keys are left alone.
primary_contact_id
string (uuid) (or null)
optional
Contact to link the record to, or null to unlink it.
Over MCP the same operation is the tool custom_objects_update_record at https://app.chirply.io/api/mcp, same bearer token, same input.
Edit object type
custom_objects.update_typewriteadmin only
Rename a custom object type or change its icon, and optionally add new fields to it. Existing fields and records are untouched; the URL name (key) never changes. Owners and admins only, same as creating one.
Parameters
Field
Type
Required
Description
id
string (uuid)
required
The object type to edit.
name_singular
string
optional
What one record is called, e.g. "Property". Shown on buttons and headings.
name_plural
string
optional
What many records are called, e.g. "Properties". Becomes the navigation label.
icon
string (or null)
optional
Optional icon name for the navigation row (a lucide icon name like "home").
add_fields
object[]
optional
New fields to append to the type, in order after the existing ones. Default: []
add_fields[].key
string
optional
Storage key for the field's values (snake_case, starts with a letter). Omit to derive it from the label. Keys are permanent once records exist.
add_fields[].label
string
required
The field's name as people see it, e.g. "Purchase price".
What the field holds: text, number, date (YYYY-MM-DD), select (one choice from `options`), checkbox (yes/no), url, phone, email, contact_link (free-form reference to a contact), or user (a Team member — one current account member, written as their email or user id and stored as the user id). Default: "text"
add_fields[].options
string[]
optional
For kind=select only: the choices people can pick. Must be non-empty for selects. Default: []
add_fields[].required
boolean
optional
When true, a record cannot be created without a value for this field. Default: false