Skip to main content

Admin utilities

API keys, custom fields, activity logs, and navigation counters.

13 endpoints. Every request needs an Authorization: Bearer mtro_... header, and responses follow the envelope described in Errors and conventions.

POST /api-keys/delete​

Delete an API key. This is destructive and should require owner confirmation when used by an agent.

Required scope: api_keys.manage
MCP tool: api_keys_delete

Request body

note

Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.

FieldTypeRequiredDescription
apiKeyIdanyno

Example

curl -X POST 'https://core.mtro.app/api-keys/delete' \
-H 'Authorization: Bearer mtro_your_api_key' \
-H 'Content-Type: application/json' \
-d '{}'

POST /api-keys/generate​

Generate a new API key. This creates a secret and should require owner confirmation when used by an agent.

Required scope: api_keys.manage
MCP tool: api_keys_generate

Request body

note

Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.

FieldTypeRequiredDescription
descriptionanyno
expiresAtanyno
nameanyno
scopesanyno

Example

curl -X POST 'https://core.mtro.app/api-keys/generate' \
-H 'Authorization: Bearer mtro_your_api_key' \
-H 'Content-Type: application/json' \
-d '{}'

GET /api-keys/list​

List API keys for the authenticated owner/entity.

Required scope: api_keys.manage
MCP tool: api_keys_list

Example

curl -X GET 'https://core.mtro.app/api-keys/list' \
-H 'Authorization: Bearer mtro_your_api_key'

Response

FieldType
messagestring
errorboolean
apiKeysany[]

POST /api-keys/revoke​

Revoke an API key. This is security-sensitive and should require owner confirmation when used by an agent.

Required scope: api_keys.manage
MCP tool: api_keys_revoke

Request body

note

Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.

FieldTypeRequiredDescription
apiKeyIdanyno

Example

curl -X POST 'https://core.mtro.app/api-keys/revoke' \
-H 'Authorization: Bearer mtro_your_api_key' \
-H 'Content-Type: application/json' \
-d '{}'

POST /fields/create​

Create a custom field. This writes account data and should require owner confirmation when used by an agent.

Required scope: templates.write
MCP tool: fields_create

Request body

note

Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.

FieldTypeRequiredDescription
defaultToTodayanyno
entityIdanyno
fieldNameanyno
fieldTypeanyno
optionsanyno

Example

curl -X POST 'https://core.mtro.app/fields/create' \
-H 'Authorization: Bearer mtro_your_api_key' \
-H 'Content-Type: application/json' \
-d '{}'

POST /fields/delete​

Delete a custom field. This is destructive and should require owner confirmation when used by an agent.

Required scope: templates.write
MCP tool: fields_delete

Request body

note

Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.

FieldTypeRequiredDescription
fieldIdanyno

Example

curl -X POST 'https://core.mtro.app/fields/delete' \
-H 'Authorization: Bearer mtro_your_api_key' \
-H 'Content-Type: application/json' \
-d '{}'

GET /fields/get/all​

List custom fields.

Required scope: any valid API key for the entity.
MCP tool: fields_list

Example

curl -X GET 'https://core.mtro.app/fields/get/all' \
-H 'Authorization: Bearer mtro_your_api_key'

Response

FieldType
fieldsany[]
errorboolean

GET /fields/get/entity/{entityId}​

List custom fields for an entity.

Required scope: any valid API key for the entity.
MCP tool: fields_get_by_entity

Path parameters

NameTypeRequiredDescription
entityIdstringyesEntity ID.

Example

curl -X GET 'https://core.mtro.app/fields/get/entity/<entityId>' \
-H 'Authorization: Bearer mtro_your_api_key'

Response

FieldType
fieldsany[]
errorboolean

POST /fields/update​

Update a custom field. This writes account data and should require owner confirmation when used by an agent.

Required scope: templates.write
MCP tool: fields_update

Request body

note

Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.

FieldTypeRequiredDescription
defaultToTodayanyno
fieldIdanyno
fieldNameanyno
fieldTypeanyno
optionsanyno

Example

curl -X POST 'https://core.mtro.app/fields/update' \
-H 'Authorization: Bearer mtro_your_api_key' \
-H 'Content-Type: application/json' \
-d '{}'

POST /logs/actions​

List audit log action types.

Required scope: any valid API key for the entity.
MCP tool: logs_actions

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 POST 'https://core.mtro.app/logs/actions' \
-H 'Authorization: Bearer mtro_your_api_key' \
-H 'Content-Type: application/json' \
-d '{}'

POST /logs/get​

Search audit logs.

Required scope: any valid API key for the entity.
MCP tool: logs_get

Request body

note

Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.

FieldTypeRequiredDescription
actionanyno
endDateanyno
ipanyno
limitanyno
pageanyno
startDateanyno
userEmailanyno

Example

curl -X POST 'https://core.mtro.app/logs/get' \
-H 'Authorization: Bearer mtro_your_api_key' \
-H 'Content-Type: application/json' \
-d '{}'

POST /logs/stats​

Get audit log stats.

Required scope: any valid API key for the entity.
MCP tool: logs_stats

Request body

note

Field names are taken from the Core handler, which reads exactly these. Types and which of them are required are not yet documented.

FieldTypeRequiredDescription
endDateanyno
startDateanyno

Example

curl -X POST 'https://core.mtro.app/logs/stats' \
-H 'Authorization: Bearer mtro_your_api_key' \
-H 'Content-Type: application/json' \
-d '{}'

GET /nav/counts​

Get sidebar/navigation badge counts for the authenticated owner.

Required scope: applications.read, bookings.read, conversations.read, guests.read, leads.read, payments.read, tasks.read
MCP tool: nav_counts

Example

curl -X GET 'https://core.mtro.app/nav/counts' \
-H 'Authorization: Bearer mtro_your_api_key'

Response

FieldType
newLeadsinteger
pendingBookingsinteger
applicationActionsinteger
currentGuestsinteger
unreadMessagesinteger
pendingPaymentsinteger
todoTasksinteger
errorboolean