Inventory
Per-property inventory items and the shared catalog.
5 endpoints. Every request needs an Authorization: Bearer mtro_... header, and responses follow the envelope described in Errors and conventions.
GET /inventory/{propertyId}
List inventory rows for a property.
Required scope: inventory.read
MCP tool: inventory_list
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
propertyId | string | yes | Property ID. |
Example
curl -X GET 'https://core.mtro.app/inventory/<propertyId>' \
-H 'Authorization: Bearer mtro_your_api_key'
Response
| Field | Type |
|---|---|
property | object |
inventoryType | string |
items | any[] |
catalog | object[] |
categories | string[] |
units | string[] |
lowStockCount | integer |
error | boolean |
Fields of property
| Field | Type |
|---|---|
id | string |
propertyName | string |
internalName | string |
address | string |
heroImage | any |
images | any[] |
POST /inventory/{propertyId}/items
Create an inventory row for a property. This writes account data and should require owner confirmation when used by an agent.
Required scope: inventory.write
MCP tool: inventory_create_item
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
propertyId | string | yes | Property ID. |
Request body
Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.
| Field | Type | Required | Description |
|---|---|---|---|
brand | any | no | |
catalogKey | any | no | |
category | any | no | |
inventoryType | any | no | |
lastCheckedAt | any | no | |
location | any | no | |
minimumQuantity | any | no | |
model | any | no | |
name | any | no | |
notes | any | no | |
notifyBelowMinimum | any | no | |
quantity | any | no | |
serialNumber | any | no | |
sortOrder | any | no | |
unit | any | no |
Example
curl -X POST 'https://core.mtro.app/inventory/<propertyId>/items' \
-H 'Authorization: Bearer mtro_your_api_key' \
-H 'Content-Type: application/json' \
-d '{}'
DELETE /inventory/{propertyId}/items/{itemId}
Delete an inventory row for a property. This is destructive and should require owner confirmation when used by an agent.
Required scope: inventory.write
MCP tool: inventory_delete_item
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
propertyId | string | yes | Property ID. |
itemId | string | yes | Inventory item ID. |
Example
curl -X DELETE 'https://core.mtro.app/inventory/<propertyId>/items/<itemId>' \
-H 'Authorization: Bearer mtro_your_api_key'
PATCH /inventory/{propertyId}/items/{itemId}
Update an inventory row for a property. This writes account data and should require owner confirmation when used by an agent.
Required scope: inventory.write
MCP tool: inventory_update_item
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
propertyId | string | yes | Property ID. |
itemId | string | yes | Inventory item ID. |
Request body
A JSON object. This endpoint's fields are not documented yet — send the same body the admin panel sends, or ask MTRO PRO for the field list.
Example
curl -X PATCH 'https://core.mtro.app/inventory/<propertyId>/items/<itemId>' \
-H 'Authorization: Bearer mtro_your_api_key' \
-H 'Content-Type: application/json' \
-d '{}'
GET /inventory/catalog
List common property inventory catalog items, categories, and units.
Required scope: any valid API key for the entity.
MCP tool: inventory_catalog
Example
curl -X GET 'https://core.mtro.app/inventory/catalog' \
-H 'Authorization: Bearer mtro_your_api_key'
Response
| Field | Type |
|---|---|
catalog | object[] |
categories | string[] |
units | string[] |
error | boolean |
Fields of catalog[]
| Field | Type |
|---|---|
key | string |
name | string |
category | string |
unit | string |
suggestedMinimum | integer |