360 Secure SkillHub
360 安全技能中心

Tidy

该 Skill 面向 TIDY 房产管理平台,覆盖地址、清洁工单、住客预订、维护任务、待办清单与服务人员的查询和增删改,并可通过自然语言接口下发请求;接入方式包括远程 REST API、远程 MCP 端点和配套 CLI,需用 TIDY_API_TOKEN 认证。

mchusma
mchusma
热度 46.77
最近更新 2026-05-11 17:38:22
分类:自动化依赖:代码执行 / 第三方 API / MCP 服务应用场景:日程安排 / 任务管理 / 工作流

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add tidy
Metadata
name
tidy
description
Full-featured AI property management — addresses, cleanings, reservations, tasks, pros, and natural language messaging.
version
1.0.0
metadata
{"openclaw":{"requires":{"env":["TIDY_API_TOKEN"],"bins":["tidy-request"]},"primaryEnv":"TIDY_API_TOKEN","emoji":"✨","homepage":"https://tidy.com","os":["macos","linux"]},"keywords":["tidy","property management","cleaning","maintenance","vacation rental","Airbnb","VRBO","short-term rental","booking","guest reservation","MCP server","AI assistant","natural language","service professional"]}

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: https://public-api.tidy.com/mcp

Quick Start

The fastest way to interact with TIDY is the CLI or the natural language message-tidy endpoint.

CLI Quick Start

# Install
brew install tidyapp/tap/tidy-request   # or: npm i -g @tidydotcom/cli

# Authenticate
tidy-request signup    # new account
tidy-request login     # existing account

# Send any property management request in plain English
tidy-request "Schedule a deep clean for next Tuesday at my Beach House"
tidy-request "Create a guest reservation for April 10-14"
tidy-request "Report a broken window at address 123" --address-id 123

API Quick Start

# Get a token
curl -X POST https://public-api.tidy.com/api/v2/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email":"you@example.com","password":"yourpassword"}'
# Returns: { "token": "abc123..." }

export TIDY_API_TOKEN="abc123..."

# Send a natural language request
curl -X POST https://public-api.tidy.com/api/v2/message-tidy \
  -H "Authorization: Bearer $TIDY_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"message":"Schedule a cleaning for next Tuesday"}'

Authentication

Sign Up

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"
  }'

Log In

curl -X POST https://public-api.tidy.com/api/v2/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email":"jane@example.com","password":"secret123"}'

Both return: { "token": "abc123..." }. Tokens do not expire.

Use Authorization: Bearer <token> on all subsequent requests.

CLI Authentication

tidy-request signup    # interactive: prompts for name, email, password
tidy-request login     # interactive: prompts for email, password
tidy-request logout    # removes stored credentials

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
login No Authenticate with email/password
signup 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:

{
  "mcpServers": {
    "tidy": {
      "url": "https://public-api.tidy.com/mcp"
    }
  }
}

Connect from Claude Code

claude mcp add tidy --transport http https://public-api.tidy.com/mcp

Stdio Proxy (for clients that only support stdio)

npx @tidydotcom/mcp-server
npx @tidydotcom/mcp-server --api-token YOUR_TOKEN

MCP Async Workflow

message_tidy is asynchronous:

  1. Call login or signup to get a token
  2. Call message_tidy with your request in plain English
  3. Note the returned id
  4. Poll get_message_tidy with that ID every 3–5 seconds
  5. 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

curl -X POST https://public-api.tidy.com/api/v2/message-tidy \
  -H "Authorization: Bearer $TIDY_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "message": "Schedule a turnover cleaning before my next guest arrives on April 10",
    "context": { "address_id": 123, "guest_reservation_id": 456 }
  }'

Parameters:

  • message (required): natural language request
  • context (optional): { address_id, booking_id, issue_id, guest_reservation_id } to scope the request
  • response_schema (optional): JSON Schema describing desired structured response format

Status values: queued → in_progress → completed or failed

Poll for result

curl -s https://public-api.tidy.com/api/v2/message-tidy/123 \
  -H "Authorization: Bearer $TIDY_API_TOKEN"

Poll every 3–5 seconds. When status is completed, the answer is in response_message.

List all messages

curl -s "https://public-api.tidy.com/api/v2/message-tidy?status=completed" \
  -H "Authorization: Bearer $TIDY_API_TOKEN"

Addresses (Properties)

Method Path Description
GET /api/v2/addresses 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

curl -X POST https://public-api.tidy.com/api/v2/addresses \
  -H "Authorization: Bearer $TIDY_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "address": "123 Beach Rd",
    "city": "Miami",
    "postal_code": "33139",
    "country_code": "US",
    "address_name": "Beach House",
    "notes": {
      "access": "Lockbox code 4521 on side gate",
      "closing": "Leave keys on kitchen counter"
    },
    "parking": {
      "paid_parking": false,
      "parking_spot": "myspot",
      "parking_pay_with": "card",
      "max_parking_cost": 0,
      "parking_notes": "Park in driveway spot #2"
    }
  }'

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 /api/v2/jobs 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
regular_cleaning.one_hour 1-hour regular cleaning
regular_cleaning.two_and_a_half_hours 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

scheduled → in_progress → completed or cancelled or failed

Create a job

curl -X POST https://public-api.tidy.com/api/v2/jobs \
  -H "Authorization: Bearer $TIDY_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "address_id": 123,
    "service_type_key": "regular_cleaning.two_and_a_half_hours",
    "start_no_earlier_than": { "date": "2026-04-10", "time": "09:00" },
    "end_no_later_than": { "date": "2026-04-10", "time": "17:00" },
    "preferred_start_datetime": { "date": "2026-04-10", "time": "10:00" },
    "to_do_list_id": 789
  }'

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

curl -X POST https://public-api.tidy.com/api/v2/jobs/456/cancel \
  -H "Authorization: Bearer $TIDY_API_TOKEN"

Reschedule a job

curl -X POST https://public-api.tidy.com/api/v2/jobs/456/reschedule \
  -H "Authorization: Bearer $TIDY_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "service_type_key": "regular_cleaning.two_and_a_half_hours",
    "start_no_earlier_than": { "date": "2026-04-15", "time": "09:00" },
    "end_no_later_than": { "date": "2026-04-15", "time": "17:00" }
  }'

Booking Availability

curl -s "https://public-api.tidy.com/api/v2/booking-availabilities?address_id=123&service_type_key=regular_cleaning.two_and_a_half_hours" \
  -H "Authorization: Bearer $TIDY_API_TOKEN"

Required: address_id, service_type_key.


Guest Reservations

Method Path Description
GET /api/v2/guest-reservations 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

curl -X POST https://public-api.tidy.com/api/v2/guest-reservations \
  -H "Authorization: Bearer $TIDY_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "address_id": 123,
    "check_in": { "date": "2026-04-10", "time": "15:00" },
    "check_out": { "date": "2026-04-14", "time": "11:00" }
  }'

Required: address_id, check_in.date, check_out.date.

Optional: check_in.time, check_out.time.


Tasks (Maintenance / Issues)

Method Path Description
GET /api/v2/tasks 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

reported → in_progress → completed

Task Urgency Levels

low, normal, high, emergency

Create a task

curl -X POST https://public-api.tidy.com/api/v2/tasks \
  -H "Authorization: Bearer $TIDY_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "address_id": 123,
    "title": "Broken window in master bedroom",
    "description": "Left pane is cracked, needs glass replacement.",
    "type": "repair",
    "urgency": "high",
    "due_date": "2026-04-05",
    "assigned_to_concierge": true
  }'

Required: address_id, title, description, type.

Optional: status, urgency, due_date, assigned_to_concierge.


To-Do Lists

curl -s "https://public-api.tidy.com/api/v2/to-do-lists?address_id=123" \
  -H "Authorization: Bearer $TIDY_API_TOKEN"

Service Professionals (Pros)

curl -X POST https://public-api.tidy.com/api/v2/pros \
  -H "Authorization: Bearer $TIDY_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Maria Garcia",
    "email": "maria@example.com",
    "phone": "+1-555-0199",
    "service_types": ["regular_cleaning"]
  }'

Required: name, email. Optional: phone, service_types.


CLI Reference

Install

brew install tidyapp/tap/tidy-request   # macOS/Linux via Homebrew
npm install -g @tidydotcom/cli          # via npm

Commands

tidy-request login                          # authenticate
tidy-request signup                         # create account
tidy-request logout                         # remove credentials

tidy-request "your request"                 # natural language request
tidy-request "message" --address-id 123     # with address context
tidy-request "message" --booking-id 456     # with booking context
tidy-request "message" --issue-id 789       # with task context
tidy-request "message" --reservation-id 101 # with reservation context

tidy-request --list                         # list all messages
tidy-request --get ID                       # get a specific message
tidy-request --help                         # help
tidy-request --version                      # version

Environment Variables

Variable Description Default
TIDY_API_HOST API base URL https://public-api.tidy.com
TIDY_API_TOKEN Bearer token (overrides stored credentials) —

Complete API Endpoint Reference

Method Path Description
POST /api/v2/auth/signup 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: { "date": "2026-04-10", "time": "09:00" }

Error Handling

All errors return:

{
  "object": "error",
  "type": "authentication_error",
  "code": "ErrorCode",
  "message": "Human-readable description",
  "invalid_params": []
}
HTTP Status Error Type When
400 invalid_request_error 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