TIDY — AI Property Management Platform
TIDY is an AI-powered property management platform. This skill provides complete access to all TIDY capabilities: property management, cleaning scheduling, guest reservations, maintenance tasks, service professionals, and a natural language AI assistant.
Base URL: https://public-api.tidy.com
Interactive API docs: https://public-api.tidy.com/docs
MCP endpoint: INLINECODE2
Quick Start
The fastest way to interact with TIDY is the CLI or the natural language message-tidy endpoint.
CLI Quick Start
CODEBLOCK0
API Quick Start
CODEBLOCK1
Authentication
Sign Up
CODEBLOCK2
Log In
CODEBLOCK3
Both return: { "token": "abc123..." }. Tokens do not expire.
Use Authorization: Bearer <token> on all subsequent requests.
CLI Authentication
CODEBLOCK4
Credentials are stored at ~/.config/tidy/credentials. Set TIDY_API_TOKEN as an environment variable to override stored credentials.
MCP Server
TIDY exposes an MCP (Model Context Protocol) server for use with Claude Desktop, Claude Code, Cursor, and any MCP client.
Endpoint: https://public-api.tidy.com/mcp (Streamable HTTP, POST)
Available MCP Tools
| Tool | Auth Required | Description |
|---|
| INLINECODE8 | No | Authenticate with email/password |
| INLINECODE9 |
No | Create account |
|
message_tidy | Yes | Send natural language request (async) |
|
get_message_tidy | Yes | Poll for async message result |
|
list_messages_tidy | Yes | List all previous messages |
|
list_addresses | Yes | List all managed properties |
|
create_address | Yes | Add a new property |
|
get_address | Yes | Get property details |
|
update_address | Yes | Update a property |
|
delete_address | Yes | Remove a property |
|
list_bookings | Yes | List cleaning jobs |
|
create_booking | Yes | Schedule a cleaning |
|
get_booking | Yes | Get job details |
|
update_booking | Yes | Modify a job |
|
cancel_booking | Yes | Cancel a job |
|
reschedule_booking | Yes | Reschedule a job |
|
list_booking_availabilities | Yes | Find available time slots |
|
list_guest_reservations | Yes | List guest stays |
|
create_guest_reservation | Yes | Create a guest stay |
|
get_guest_reservation | Yes | Get reservation details |
|
delete_guest_reservation | Yes | Cancel a guest stay |
|
list_tasks | Yes | List maintenance issues |
|
create_task | Yes | Report a maintenance issue |
|
get_task | Yes | Get task details |
|
update_task | Yes | Update a task |
|
delete_task | Yes | Remove a task |
|
list_to_do_lists | Yes | List cleaning checklists |
|
create_pro | Yes | Add a service professional |
Connect from Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
CODEBLOCK5
Connect from Claude Code
CODEBLOCK6
Stdio Proxy (for clients that only support stdio)
CODEBLOCK7
MCP Async Workflow
INLINECODE37 is asynchronous:
- 1. Call
login or signup to get a token - Call
message_tidy with your request in plain English - Note the returned INLINECODE41
- Poll
get_message_tidy with that ID every 3–5 seconds - When
status is completed, read response_message for the result
Message TIDY (Natural Language AI)
Send any property management request in plain English and TIDY's AI handles it.
Send a message
CODEBLOCK8
Parameters:
- -
message (required): natural language request - INLINECODE47 (optional):
{ address_id, booking_id, issue_id, guest_reservation_id } to scope the request - INLINECODE49 (optional): JSON Schema describing desired structured response format
Status values: queued → in_progress → completed or INLINECODE53
Poll for result
CODEBLOCK9
Poll every 3–5 seconds. When status is completed, the answer is in response_message.
List all messages
CODEBLOCK10
Addresses (Properties)
| Method | Path | Description |
|---|
| GET | INLINECODE57 | List all addresses |
| GET |
/api/v2/addresses/:id | Get address details |
| POST |
/api/v2/addresses | Create an address |
| PUT |
/api/v2/addresses/:id | Update an address |
| DELETE |
/api/v2/addresses/:id | Delete an address |
Create an address
CODEBLOCK11
Required: address, city, postal_code, parking (with paid_parking, parking_spot, parking_notes).
Optional: unit, country_code (default "US"), address_name, notes (with access, closing).
parking_spot values: myspot, meter, street, guest, paidlot.
parking_pay_with values: card, cash (default "card").
Jobs (Cleaning Bookings)
| Method | Path | Description |
|---|
| GET | INLINECODE86 | List all jobs |
| GET |
/api/v2/jobs/:id | Get job details |
| POST |
/api/v2/jobs | Create a job |
| PUT |
/api/v2/jobs/:id | Update a job |
| POST |
/api/v2/jobs/:id/cancel | Cancel a job |
| POST |
/api/v2/jobs/:id/reschedule | Reschedule a job |
Service Types
| Key | Description |
|---|
| INLINECODE92 | 1-hour regular cleaning |
| INLINECODE93 |
2.5-hour regular cleaning |
|
regular_cleaning.four_hours | 4-hour regular cleaning |
|
deep_cleaning.two_and_a_half_hours | 2.5-hour deep cleaning |
|
deep_cleaning.four_hours | 4-hour deep cleaning |
|
turnover_cleaning.two_and_a_half_hours | 2.5-hour turnover cleaning |
|
turnover_cleaning.four_hours | 4-hour turnover cleaning |
Booking Statuses
INLINECODE99 → in_progress → completed or cancelled or INLINECODE103
Create a job
CODEBLOCK12
Required: address_id, service_type_key, start_no_earlier_than (date + time), end_no_later_than (date + time).
Optional: preferred_start_datetime, to_do_list_id.
Cancel a job
CODEBLOCK13
Reschedule a job
CODEBLOCK14
Booking Availability
CODEBLOCK15
Required: address_id, service_type_key.
Guest Reservations
| Method | Path | Description |
|---|
| GET | INLINECODE112 | List reservations (optional address_id filter) |
| GET |
/api/v2/guest-reservations/:id | Get reservation details |
| POST |
/api/v2/guest-reservations | Create a reservation |
| DELETE |
/api/v2/guest-reservations/:id | Delete a reservation |
Create a reservation
CODEBLOCK16
Required: address_id, check_in.date, check_out.date.
Optional: check_in.time, check_out.time.
Tasks (Maintenance / Issues)
| Method | Path | Description |
|---|
| GET | INLINECODE122 | List tasks (filter by address_id, status, type, urgency, assigned_to_concierge) |
| GET |
/api/v2/tasks/:id | Get task details |
| POST |
/api/v2/tasks | Create a task |
| PUT |
/api/v2/tasks/:id | Update a task |
| DELETE |
/api/v2/tasks/:id | Delete a task |
Task Statuses
INLINECODE132 → in_progress → INLINECODE134
Task Urgency Levels
INLINECODE135 , normal, high, INLINECODE138
Create a task
CODEBLOCK17
Required: address_id, title, description, type.
Optional: status, urgency, due_date, assigned_to_concierge.
To-Do Lists
CODEBLOCK18
Service Professionals (Pros)
CODEBLOCK19
Required: name, email. Optional: phone, service_types.
CLI Reference
Install
CODEBLOCK20
Commands
CODEBLOCK21
Environment Variables
| Variable | Description | Default |
|---|
| INLINECODE151 | API base URL | INLINECODE152 |
| INLINECODE153 |
Bearer token (overrides stored credentials) | — |
Complete API Endpoint Reference
| Method | Path | Description |
|---|
| POST | INLINECODE154 | Create account |
| POST |
/api/v2/auth/login | Log in |
| POST |
/api/v2/message-tidy | Send AI message (async) |
| GET |
/api/v2/message-tidy/:id | Poll message result |
| GET |
/api/v2/message-tidy | List messages |
| GET |
/api/v2/addresses | List addresses |
| POST |
/api/v2/addresses | Create address |
| GET |
/api/v2/addresses/:id | Get address |
| PUT |
/api/v2/addresses/:id | Update address |
| DELETE |
/api/v2/addresses/:id | Delete address |
| GET |
/api/v2/jobs | List jobs |
| POST |
/api/v2/jobs | Create job |
| GET |
/api/v2/jobs/:id | Get job |
| PUT |
/api/v2/jobs/:id | Update job |
| POST |
/api/v2/jobs/:id/cancel | Cancel job |
| POST |
/api/v2/jobs/:id/reschedule | Reschedule job |
| GET |
/api/v2/guest-reservations | List reservations |
| POST |
/api/v2/guest-reservations | Create reservation |
| GET |
/api/v2/guest-reservations/:id | Get reservation |
| DELETE |
/api/v2/guest-reservations/:id | Delete reservation |
| GET |
/api/v2/tasks | List tasks |
| POST |
/api/v2/tasks | Create task |
| GET |
/api/v2/tasks/:id | Get task |
| PUT |
/api/v2/tasks/:id | Update task |
| DELETE |
/api/v2/tasks/:id | Delete task |
| GET |
/api/v2/to-do-lists | List to-do lists |
| POST |
/api/v2/pros | Add a pro |
| GET |
/api/v2/booking-availabilities | Check availability |
Full interactive documentation: https://public-api.tidy.com/docs
Date and Time Formats
- - Dates:
YYYY-MM-DD (e.g., 2026-04-10) - Times:
HH:MM 24-hour format (e.g., 09:00, 17:30) - Date-time fields use nested objects: INLINECODE188
Error Handling
All errors return:
CODEBLOCK22
| HTTP Status | Error Type | When |
|---|
| 400 | INLINECODE189 | Missing or invalid parameters |
| 401 |
authentication_error | Bad credentials or missing token |
| 404 |
not_found_error | Resource does not exist |
| 500 |
internal_error | Server error |
Detailed Reference Documentation
Related Skills
TIDY — AI物业管理平台
TIDY是一个由AI驱动的物业管理平台。该技能提供对TIDY所有功能的完整访问:物业管理、清洁排程、客人预订、维护任务、服务专业人员以及自然语言AI助手。
基础URL: https://public-api.tidy.com
交互式API文档: https://public-api.tidy.com/docs
MCP端点: https://public-api.tidy.com/mcp
快速入门
与TIDY交互最快的方式是CLI或自然语言message-tidy端点。
CLI快速入门
bash
安装
brew install tidyapp/tap/tidy-request # 或:npm i -g @tidydotcom/cli
认证
tidy-request signup # 新账户
tidy-request login # 现有账户
用纯英文发送任何物业管理请求
tidy-request 下周二为我的海滨别墅安排一次深度清洁
tidy-request 创建4月10日至14日的客人预订
tidy-request 报告地址123的窗户破损 --address-id 123
API快速入门
bash
获取令牌
curl -X POST https://public-api.tidy.com/api/v2/auth/login \
-H Content-Type: application/json \
-d {email:you@example.com,password:yourpassword}
返回:{ token: abc123... }
export TIDYAPITOKEN=abc123...
发送自然语言请求
curl -X POST https://public-api.tidy.com/api/v2/message-tidy \
-H Authorization: Bearer $TIDY
APITOKEN \
-H Content-Type: application/json \
-d {message:安排下周二进行清洁}
认证
注册
bash
curl -X POST https://public-api.tidy.com/api/v2/auth/signup \
-H Content-Type: application/json \
-d {
first_name: Jane,
last_name: Doe,
email: jane@example.com,
password: secret123
}
登录
bash
curl -X POST https://public-api.tidy.com/api/v2/auth/login \
-H Content-Type: application/json \
-d {email:jane@example.com,password:secret123}
两者都返回:{ token: abc123... }。令牌永不过期。
在所有后续请求中使用 Authorization: Bearer 。
CLI认证
bash
tidy-request signup # 交互式:提示输入姓名、邮箱、密码
tidy-request login # 交互式:提示输入邮箱、密码
tidy-request logout # 移除存储的凭据
凭据存储在 ~/.config/tidy/credentials。设置 TIDYAPITOKEN 环境变量以覆盖存储的凭据。
MCP服务器
TIDY提供一个MCP(模型上下文协议)服务器,用于Claude Desktop、Claude Code、Cursor以及任何MCP客户端。
端点: https://public-api.tidy.com/mcp(可流式HTTP,POST)
可用MCP工具
| 工具 | 需要认证 | 描述 |
|---|
| login | 否 | 使用邮箱/密码认证 |
| signup |
否 | 创建账户 |
| message_tidy | 是 | 发送自然语言请求(异步) |
| get
messagetidy | 是 | 轮询异步消息结果 |
| list
messagestidy | 是 | 列出所有历史消息 |
| list_addresses | 是 | 列出所有管理的物业 |
| create_address | 是 | 添加新物业 |
| get_address | 是 | 获取物业详情 |
| update_address | 是 | 更新物业 |
| delete_address | 是 | 删除物业 |
| list_bookings | 是 | 列出清洁任务 |
| create_booking | 是 | 安排清洁 |
| get_booking | 是 | 获取任务详情 |
| update_booking | 是 | 修改任务 |
| cancel_booking | 是 | 取消任务 |
| reschedule_booking | 是 | 重新安排任务 |
| list
bookingavailabilities | 是 | 查找可用时间段 |
| list
guestreservations | 是 | 列出客人入住 |
| create
guestreservation | 是 | 创建客人入住 |
| get
guestreservation | 是 | 获取预订详情 |
| delete
guestreservation | 是 | 取消客人入住 |
| list_tasks | 是 | 列出维护问题 |
| create_task | 是 | 报告维护问题 |
| get_task | 是 | 获取任务详情 |
| update_task | 是 | 更新任务 |
| delete_task | 是 | 删除任务 |
| list
todo_lists | 是 | 列出清洁检查清单 |
| create_pro | 是 | 添加服务专业人员 |
从Claude Desktop连接
添加到 ~/Library/Application Support/Claude/claudedesktopconfig.json:
json
{
mcpServers: {
tidy: {
url: https://public-api.tidy.com/mcp
}
}
}
从Claude Code连接
bash
claude mcp add tidy --transport http https://public-api.tidy.com/mcp
Stdio代理(适用于仅支持stdio的客户端)
bash
npx @tidydotcom/mcp-server
npx @tidydotcom/mcp-server --api-token YOUR_TOKEN
MCP异步工作流
message_tidy 是异步的:
- 1. 调用 login 或 signup 获取令牌
- 用纯英文调用 messagetidy 发送请求
- 记录返回的 id
- 每3-5秒用该ID轮询 getmessagetidy
- 当 status 为 completed 时,读取 responsemessage 获取结果
Message TIDY(自然语言AI)
用纯英文发送任何物业管理请求,TIDY的AI会处理它。
发送消息
bash
curl -X POST https://public-api.tidy.com/api/v2/message-tidy \
-H Authorization: Bearer $TIDYAPITOKEN \
-H Content-Type: application/json \
-d {
message: 在我的下一位客人4月10日到达前安排一次交接清洁,
context: { addressid: 123, guestreservation_id: 456 }
}
参数:
- - message(必需):自然语言请求
- context(可选):{ addressid, bookingid, issueid, guestreservationid } 用于限定请求范围
- responseschema(可选):描述所需结构化响应格式的JSON Schema
状态值: queued → in_progress → completed 或 failed
轮询结果
bash
curl -s https://public-api.tidy.com/api/v2/message-tidy/123 \
-H Authorization: Bearer $TIDYAPITOKEN
每3-5秒轮询一次。当 status 为 completed 时,答案在 response_message 中。
列出所有消息
bash
curl -s https://public-api.tidy.com/api/v2/message-tidy?status=completed \
-H Authorization: Bearer $TIDYAPITOKEN
地址(物业)
| 方法 | 路径 | 描述 |
|---|
| GET | /api/v2/addresses | 列出所有地址 |
| GET |
/api/v2/addresses/:id | 获取地址详情 |
| POST | /api/v2/addresses | 创建地址 |
| PUT | /api/v2/addresses/:id | 更新地址 |
| DELETE | /api/v2/addresses/:id | 删除地址 |
创建地址
bash
curl -X POST https://public-api.tidy.com/api/v2/addresses \
-H Authorization: Bearer $TIDYAPITOKEN \
-H Content-Type: application/json \
-d {
address: 123 Beach Rd,
city: Miami,
postal_code: 33139,
country_code: US,
address_name: 海滨别墅,
notes: {
access: 侧门密码锁代码4521,
closing: 将钥匙留在厨房台面上