Appty
Find open slots on any appty link and book solo providers. Providers manage bookings by API key.
我該用這個嗎
品質與安全性
發現項目(1)
- LOW在 list_clients 中
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"appty": {
"url": "https://getappty.com/api/mcp"
}
}
}遠端端點
https://getappty.com/api/mcpstreamable-http它能做什麼
工具清單
工具(11)
🟢get_provider(slug)
Public booking page for a provider slug: name, headline, time zone, currency, services, upcoming group sessions, and the booking URL. No client data.
輸入結構描述
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"description": "Booking link slug, the part after getappty.com/"
}
},
"required": [
"slug"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢find_open_slots(slug, service_id, from_date, to_date, timezone)
Open start times for a public service, using the same slot rules as the booking page. from_date and to_date are YYYY-MM-DD and at most 31 days apart. Each start is ISO 8601 with the provider's offset, plus a provider-local label.
輸入結構描述
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"description": "Booking link slug, the part after getappty.com/"
},
"service_id": {
"type": "string",
"format": "uuid",
"description": "Service id from get_provider"
},
"from_date": {
"type": "string",
"description": "First day to include, YYYY-MM-DD"
},
"to_date": {
"type": "string",
"description": "Last day to include, YYYY-MM-DD. At most 31 days after from_date."
},
"timezone": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"description": "IANA zone the dates are in. Defaults to the provider's zone. Slot labels stay in the provider's zone."
}
},
"required": [
"slug",
"service_id",
"from_date",
"to_date"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_booking_link(slug, service_id, start)
Check that a start is still open, then return a link to the booking page with that service and time selected. The client confirms and pays on Appty. Nothing is booked here.
輸入結構描述
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"description": "Booking link slug, the part after getappty.com/"
},
"service_id": {
"type": "string",
"format": "uuid",
"description": "Service id from get_provider"
},
"start": {
"type": "string",
"minLength": 1,
"description": "Slot start, ISO 8601, from find_open_slots"
}
},
"required": [
"slug",
"service_id",
"start"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_bookings(from, to, status, limit)
This provider's bookings. Omit from and to for upcoming sessions. Never includes pay or manage tokens.
輸入結構描述
{
"type": "object",
"properties": {
"from": {
"type": "string",
"minLength": 1,
"description": "Include sessions starting at or after this ISO 8601 time. When from and to are both omitted, this is now."
},
"to": {
"type": "string",
"minLength": 1,
"description": "Include sessions starting before this ISO 8601 time."
},
"status": {
"type": "string",
"enum": [
"held",
"requested",
"confirmed",
"completed",
"cancelled"
]
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"description": "Default 50. Maximum 100."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_clients(query, limit)
This provider's clients: id, name, email, phone, billing currency, and default pay mode.
輸入結構描述
{
"type": "object",
"properties": {
"query": {
"type": "string",
"maxLength": 200,
"description": "Case-insensitive match on the client's name or email."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"description": "Default 50. Maximum 100."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢who_owes
Unpaid balances for this provider, grouped by client and currency. Same figures as the dashboard who-owes page.
輸入結構描述
{
"type": "object",
"properties": {},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴book_session(client_id, service_id, start, confirm)
Book a client into a service at a start time, the same way the dashboard books. Returns a preview first and only acts when confirm=true. A past start is saved as completed with no email. A future start emails the usual confirmation. No money moves through the assistant. Any pay link is only a request the client pays on Appty.
輸入結構描述
{
"type": "object",
"properties": {
"client_id": {
"type": "string",
"format": "uuid",
"description": "Client id from list_clients."
},
"service_id": {
"type": "string",
"format": "uuid",
"description": "Service id. One-off shells are refused."
},
"start": {
"type": "string",
"minLength": 1,
"description": "Session start, ISO 8601. Does not have to be an open public slot."
},
"confirm": {
"type": "boolean",
"description": "Set true only after the caller has seen a preview and wants it done. Anything else, including the string \"true\", is a preview and changes nothing."
}
},
"required": [
"client_id",
"service_id",
"start"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴reschedule_booking(booking_id, new_start, confirm)
Move a booking to an open slot. The client is not emailed. Returns a preview first and only acts when confirm=true. No money moves through the assistant.
輸入結構描述
{
"type": "object",
"properties": {
"booking_id": {
"type": "string",
"format": "uuid"
},
"new_start": {
"type": "string",
"minLength": 1,
"description": "New start, ISO 8601. Must be an open slot for this booking's length."
},
"confirm": {
"type": "boolean",
"description": "Set true only after the caller has seen a preview and wants it done. Anything else, including the string \"true\", is a preview and changes nothing."
}
},
"required": [
"booking_id",
"new_start"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴cancel_booking(booking_id, reason, confirm)
Cancel one booking under the provider's cancellation policy and email the client. Returns a preview first and only acts when confirm=true. No money moves through the assistant. Any refund or fee is applied by Appty, the same as the dashboard. The client pays anything still due on Appty.
輸入結構描述
{
"type": "object",
"properties": {
"booking_id": {
"type": "string",
"format": "uuid"
},
"reason": {
"type": "string",
"maxLength": 500
},
"confirm": {
"type": "boolean",
"description": "Set true only after the caller has seen a preview and wants it done. Anything else, including the string \"true\", is a preview and changes nothing."
}
},
"required": [
"booking_id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴send_pay_link(client_id, booking_id, confirm)
Email a pay link for one booking, or for a client's unpaid sessions and invoices. Returns a preview first and only acts when confirm=true. No money moves through the assistant. This only sends a request the client pays on Appty. Group spots, packages, and fees are not emailed.
輸入結構描述
{
"type": "object",
"properties": {
"client_id": {
"type": "string",
"format": "uuid",
"description": "Email a pay reminder for each unpaid session and invoice this client has. Pass this or booking_id."
},
"booking_id": {
"$ref": "#/properties/client_id",
"description": "Email a pay link for this booking. Pass this or client_id."
},
"confirm": {
"type": "boolean",
"description": "Set true only after the caller has seen a preview and wants it done. Anything else, including the string \"true\", is a preview and changes nothing."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴send_invoice(client_id, booking_ids, period, confirm)
Create one invoice per currency for a client's sessions (by id or by calendar month) and email it. Returns a preview first and only acts when confirm=true. No money moves through the assistant. The invoice only sends a request the client pays on Appty.
輸入結構描述
{
"type": "object",
"properties": {
"client_id": {
"type": "string",
"format": "uuid"
},
"booking_ids": {
"type": "array",
"items": {
"$ref": "#/properties/client_id"
},
"minItems": 1,
"maxItems": 100,
"description": "Sessions to put on the invoice. Pass this or period."
},
"period": {
"type": "string",
"pattern": "^\\d{4}-(0[1-9]|1[0-2])$",
"description": "Calendar month YYYY-MM in the provider's time zone. Uninvoiced sessions in that month."
},
"confirm": {
"type": "boolean",
"description": "Set true only after the caller has seen a preview and wants it done. Anything else, including the string \"true\", is a preview and changes nothing."
}
},
"required": [
"client_id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}社群
證據