Skip to main content

Managing Contact Properties via API & MCP

Create, update, and delete custom contact properties programmatically via the Inrō public API or your AI agent (MCP).

Contact properties are custom fields you define to store extra information about your contacts: their subscription plan, location, birthday, or anything else useful to your business. You can create, update, and delete them through the Inrō public API or your AI agent (via the MCP Server).

For how properties work in the CRM and how to use them in filters and segments, see Contact Profiles & Custom Properties. This article covers managing them programmatically.

Property types

When you create a property, you pick one of these ten types:

  • text: Free text (the default).

  • number: A numeric value.

  • date: A date.

  • email: An email address.

  • phone: A phone number.

  • url: A web link.

  • boolean: True or false.

  • list: A list of text values, stored as an array. Use it for several free-form entries with no preset options.

  • single_choice: One value from a preset list of options. Requires choices.

  • multiple_choice: One or more values from a preset list of options. Requires choices.

Via the public API

All endpoints are under /api/v1/contact_properties and need a Bearer token (see The Inrō Private API: Getting Started).

Create a property

POST /api/v1/contact_properties{  "contact_property": {    "title": "Subscription Plan",    "property_type": "single_choice",    "choices": ["Free", "Pro", "Business"]  }}

Returns the new property with its auto-generated slug (here, subscription-plan) and a 201 status. You can also pass an optional description, and agent_active: true to let your AI agent detect and fill this property during conversations.

Update a property

Updates are keyed by slug, not by a numeric ID:

PUT /api/v1/contact_properties/:slug{  "contact_property": {    "title": "Plan",    "choices": ["Starter", "Pro", "Business"]  }}

Only the fields you include change. Returns 200.

Delete a property

DELETE /api/v1/contact_properties/:slug

Returns 204.

⚠️ Deleting a property is irreversible. Every stored value for that property, across all your contacts, is deleted with it.

Via your AI agent (MCP)

If you've connected Claude or ChatGPT to Inrō, you can manage properties right in a conversation:

  • Create: "Create a contact property called 'Birthday' with type date"

  • Update: "Rename the 'Plan' property to 'Subscription Plan' and add a 'Business' option"

  • Delete: "Delete the contact property with slug 'old-field'"

Your agent uses the create_contact_property, update_contact_property, and delete_contact_property tools for you.

🐾 Netsuke's Tips

  • The slug is generated from the title when you create the property, and it's what update and delete calls use. List your properties first (GET /api/v1/contact_properties) if you're not sure of a slug.

  • Changing a property's type after it has values can leave old values behind. Decide on the type up front where you can.

  • Set agent_active on properties you want filled automatically, like email or a plan tier, so your AI agent captures them as it chats.

What's next?

Did this answer your question?