Read Tokeet rentals, rates, guests, tasks and expenses; add guests, notes and tasks.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
WRITE: add an internal note to a guest record (not visible to or sent to the guest). POST /guest/{guest_pkey}/note.
The note text.
Guest id (the id / pkey Tokeet returns for it).
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
WRITE: add an internal note to a guest record (not visible to or sent to the guest). POST /guest/{guest_pkey}/note.
| Argument | Type | Description |
|---|---|---|
| note* | string | The note text. |
| guest_id* | string | Guest id (the id / pkey Tokeet returns for it). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"guest_id",
"note"
],
"properties": {
"note": {
"type": "string",
"maxLength": 4000,
"minLength": 1,
"description": "The note text."
},
"guest_id": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Guest id (the id / pkey Tokeet returns for it)."
}
}
}WRITE: create a guest record (name and email required, the rest optional). Nothing is sent to the guest. Tokeet cannot recover deleted data and this server cannot delete guests. POST /guest.
| Argument | Type | Description |
|---|---|---|
| kids | string | Names of the guest's children, as one string. |
| name* | string | Guest full name. |
| drink | string | Favourite drink. |
| email* | string | Primary email. |
| hobby | string | Hobby. |
| notes | array | Initial notes, as strings. |
| phone | string | Phone number. |
| sport | string | Sport. |
| spouse | string | Name of the guest's spouse. |
| address | object | Guest address. |
| birthday | string | Birthday, MM/DD/YYYY. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"name",
"email"
],
"properties": {
"kids": {
"type": "string",
"maxLength": 500,
"description": "Names of the guest's children, as one string."
},
"name": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Guest full name."
},
"drink": {
"type": "string",
"maxLength": 200,
"description": "Favourite drink."
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"maxLength": 320,
"description": "Primary email."
},
"hobby": {
"type": "string",
"maxLength": 200,
"description": "Hobby."
},
"notes": {
"type": "array",
"items": {
"type": "string",
"maxLength": 2000,
"minLength": 1
},
"maxItems": 20,
"description": "Initial notes, as strings."
},
"phone": {
"type": "string",
"maxLength": 50,
"minLength": 3,
"description": "Phone number."
},
"sport": {
"type": "string",
"maxLength": 200,
"description": "Sport."
},
"spouse": {
"type": "string",
"maxLength": 200,
"description": "Name of the guest's spouse."
},
"address": {
"type": "object",
"properties": {
"city": {
"type": "string",
"maxLength": 100
},
"state": {
"type": "string",
"maxLength": 100
},
"street": {
"type": "string",
"maxLength": 200
},
"country": {
"type": "string",
"maxLength": 100
},
"postal_code": {
"type": "string",
"maxLength": 30
},
"country_code": {
"type": "string",
"maxLength": 2,
"minLength": 2,
"description": "Two-letter country code."
}
},
"description": "Guest address."
},
"birthday": {
"type": "string",
"pattern": "^\\d{2}\\/\\d{2}\\/\\d{4}$",
"description": "Birthday, MM/DD/YYYY."
}
}
}WRITE: create a task (to-do) in the account, optionally linked to an inquiry and assigned to a user. `due` is an epoch timestamp: use the same unit as the `due` of existing tasks from tokeet_list_tasks. No message is sent to anyone by this call. POST /task.
| Argument | Type | Description |
|---|---|---|
| due* | integer | Epoch timestamp when the task is due (same unit as existing tasks). |
| list* | string | Name of the task list to add it to. |
| name* | string | Task name. |
| notes | string | A note about the task. |
| status | any | 1 = active (default), 2 = completed. |
| user_id | string | User id the task is assigned to (see tokeet_list_users). |
| inquiry_id | string | Inquiry (booking) id the task relates to. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"name",
"list",
"due"
],
"properties": {
"due": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Epoch timestamp when the task is due (same unit as existing tasks).",
"exclusiveMinimum": 0
},
"list": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Name of the task list to add it to."
},
"name": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "Task name."
},
"notes": {
"type": "string",
"maxLength": 4000,
"description": "A note about the task."
},
"status": {
"anyOf": [
{
"type": "number",
"const": 1
},
{
"type": "number",
"const": 2
}
],
"description": "1 = active (default), 2 = completed."
},
"user_id": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "User id the task is assigned to (see tokeet_list_users)."
},
"inquiry_id": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Inquiry (booking) id the task relates to."
}
}
}The Tokeet user the API key belongs to (name, email, role). Login data is never returned. GET /user/me.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}One expense by id. GET /expense/{expense_pkey}.
| Argument | Type | Description |
|---|---|---|
| expense_id* | string | Expense id (the id / pkey Tokeet returns for it). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"expense_id"
],
"properties": {
"expense_id": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Expense id (the id / pkey Tokeet returns for it)."
}
}
}One guest by id: contact details, notes, interactions and preferences. GET /guest/{pkey}.
| Argument | Type | Description |
|---|---|---|
| guest_id* | string | Guest id (the id / pkey Tokeet returns for it). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"guest_id"
],
"properties": {
"guest_id": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Guest id (the id / pkey Tokeet returns for it)."
}
}
}The guest whose primary email is exactly this address. GET /guest/email/{email}.
| Argument | Type | Description |
|---|---|---|
| email* | string | Guest primary email address. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"email"
],
"properties": {
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"maxLength": 320,
"description": "Guest primary email address."
}
}
}One rental property by id (its pkey from tokeet_list_rentals). GET /rental/{rental_pkey}.
| Argument | Type | Description |
|---|---|---|
| rental_id* | string | Rental id (the id / pkey Tokeet returns for it). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"rental_id"
],
"properties": {
"rental_id": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Rental id (the id / pkey Tokeet returns for it)."
}
}
}The open and blocked dates of one rental over the next two years. GET /rental/{rental_pkey}/availability.
| Argument | Type | Description |
|---|---|---|
| rental_id* | string | Rental id (the id / pkey Tokeet returns for it). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"rental_id"
],
"properties": {
"rental_id": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Rental id (the id / pkey Tokeet returns for it)."
}
}
}One task by id. GET /task/{task_pkey}.
| Argument | Type | Description |
|---|---|---|
| task_id* | string | Task id (the id / pkey Tokeet returns for it). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"task_id"
],
"properties": {
"task_id": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Task id (the id / pkey Tokeet returns for it)."
}
}
}One message template by id. GET /template/{template_pkey}.
| Argument | Type | Description |
|---|---|---|
| template_id* | string | Template id (the id / pkey Tokeet returns for it). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"template_id"
],
"properties": {
"template_id": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Template id (the id / pkey Tokeet returns for it)."
}
}
}One team member by id. GET /user/{user_pkey}.
| Argument | Type | Description |
|---|---|---|
| user_id* | string | User id (the id / pkey Tokeet returns for it). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"user_id"
],
"properties": {
"user_id": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "User id (the id / pkey Tokeet returns for it)."
}
}
}List the expenses recorded in the account (date, rental, category, amount, paid/unpaid status), by creation date. Read-only. GET /expense.
| Argument | Type | Description |
|---|---|---|
| skip | integer | Rows to skip, from 0 (default 0). Pass the previous reply's next_skip. |
| sort | any | 1 ascending, -1 descending. |
| limit | integer | Results per page, 1-100 (default 25). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"skip": {
"type": "integer",
"maximum": 1000000,
"minimum": 0,
"description": "Rows to skip, from 0 (default 0). Pass the previous reply's next_skip."
},
"sort": {
"anyOf": [
{
"type": "number",
"const": 1
},
{
"type": "number",
"const": -1
}
],
"description": "1 ascending, -1 descending."
},
"limit": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25).",
"exclusiveMinimum": 0
}
}
}List guests (personal data: name, emails, phones, address, notes, interactions), one page at a time. Filter by partial name, booking source/channel, and whether they have bookings. GET /guest.
| Argument | Type | Description |
|---|---|---|
| name | string | Partial guest name (matched by regex on the name). |
| skip | integer | Rows to skip, from 0 (default 0). Pass the previous reply's next_skip. |
| sort | any | Sort by name: 1 ascending, -1 descending. |
| limit | integer | Results per page, 1-100 (default 25). |
| booked | boolean | true = only guests with bookings. |
| source | string | Only guests from this channel/source, e.g. airbnb. |
| unbooked | boolean | true = only guests without bookings. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"name": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Partial guest name (matched by regex on the name)."
},
"skip": {
"type": "integer",
"maximum": 1000000,
"minimum": 0,
"description": "Rows to skip, from 0 (default 0). Pass the previous reply's next_skip."
},
"sort": {
"anyOf": [
{
"type": "number",
"const": 1
},
{
"type": "number",
"const": -1
}
],
"description": "Sort by name: 1 ascending, -1 descending."
},
"limit": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25).",
"exclusiveMinimum": 0
},
"booked": {
"type": "boolean",
"description": "true = only guests with bookings."
},
"source": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Only guests from this channel/source, e.g. airbnb."
},
"unbooked": {
"type": "boolean",
"description": "true = only guests without bookings."
}
}
}All standard, dynamic and promotional rates of one rental. Read-only: rates cannot be changed with this server. GET /rate/{rental_pkey}.
| Argument | Type | Description |
|---|---|---|
| skip | integer | Rows to skip, from 0 (default 0). Pass the previous reply's next_skip. |
| sort | any | 1 ascending, -1 descending. |
| limit | integer | Results per page, 1-100 (default 25). |
| rental_id* | string | Rental id (the id / pkey Tokeet returns for it). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"rental_id"
],
"properties": {
"skip": {
"type": "integer",
"maximum": 1000000,
"minimum": 0,
"description": "Rows to skip, from 0 (default 0). Pass the previous reply's next_skip."
},
"sort": {
"anyOf": [
{
"type": "number",
"const": 1
},
{
"type": "number",
"const": -1
}
],
"description": "1 ascending, -1 descending."
},
"limit": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25).",
"exclusiveMinimum": 0
},
"rental_id": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Rental id (the id / pkey Tokeet returns for it)."
}
}
}List the rental properties in the account, sorted by name. GET /rental.
| Argument | Type | Description |
|---|---|---|
| skip | integer | Rows to skip, from 0 (default 0). Pass the previous reply's next_skip. |
| sort | any | 1 ascending, -1 descending. |
| limit | integer | Results per page, 1-100 (default 25). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"skip": {
"type": "integer",
"maximum": 1000000,
"minimum": 0,
"description": "Rows to skip, from 0 (default 0). Pass the previous reply's next_skip."
},
"sort": {
"anyOf": [
{
"type": "number",
"const": 1
},
{
"type": "number",
"const": -1
}
],
"description": "1 ascending, -1 descending."
},
"limit": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25).",
"exclusiveMinimum": 0
}
}
}List the rentals assigned to one owner. GET /rental/owner/{owner_pkey} (Tokeet documents no paging for it: all of the owner's rentals come back).
| Argument | Type | Description |
|---|---|---|
| owner_id* | string | Owner id (the id / pkey Tokeet returns for it). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"owner_id"
],
"properties": {
"owner_id": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Owner id (the id / pkey Tokeet returns for it)."
}
}
}List the tasks (to-dos, e.g. cleanings and check-ins) in the account, sorted by task name. GET /task.
| Argument | Type | Description |
|---|---|---|
| skip | integer | Rows to skip, from 0 (default 0). Pass the previous reply's next_skip. |
| sort | any | 1 ascending, -1 descending. |
| limit | integer | Results per page, 1-100 (default 25). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"skip": {
"type": "integer",
"maximum": 1000000,
"minimum": 0,
"description": "Rows to skip, from 0 (default 0). Pass the previous reply's next_skip."
},
"sort": {
"anyOf": [
{
"type": "number",
"const": 1
},
{
"type": "number",
"const": -1
}
],
"description": "1 ascending, -1 descending."
},
"limit": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25).",
"exclusiveMinimum": 0
}
}
}List the message/email templates in the account, optionally of one type. GET /template.
| Argument | Type | Description |
|---|---|---|
| skip | integer | Rows to skip, from 0 (default 0). Pass the previous reply's next_skip. |
| sort | any | 1 ascending, -1 descending. |
| type | string | Only templates of this type. |
| limit | integer | Results per page, 1-100 (default 25). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"skip": {
"type": "integer",
"maximum": 1000000,
"minimum": 0,
"description": "Rows to skip, from 0 (default 0). Pass the previous reply's next_skip."
},
"sort": {
"anyOf": [
{
"type": "number",
"const": 1
},
{
"type": "number",
"const": -1
}
],
"description": "1 ascending, -1 descending."
},
"type": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "Only templates of this type."
},
"limit": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25).",
"exclusiveMinimum": 0
}
}
}List the automation triggers (event, rental, template, delay) in the account. Read-only: triggers cannot be changed with this server. GET /trigger.
| Argument | Type | Description |
|---|---|---|
| skip | integer | Rows to skip, from 0 (default 0). Pass the previous reply's next_skip. |
| sort | any | 1 ascending, -1 descending. |
| limit | integer | Results per page, 1-100 (default 25). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"skip": {
"type": "integer",
"maximum": 1000000,
"minimum": 0,
"description": "Rows to skip, from 0 (default 0). Pass the previous reply's next_skip."
},
"sort": {
"anyOf": [
{
"type": "number",
"const": 1
},
{
"type": "number",
"const": -1
}
],
"description": "1 ascending, -1 descending."
},
"limit": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25).",
"exclusiveMinimum": 0
}
}
}List the team members (users) of the Tokeet account. GET /user.
| Argument | Type | Description |
|---|---|---|
| skip | integer | Rows to skip, from 0 (default 0). Pass the previous reply's next_skip. |
| limit | integer | Results per page, 1-100 (default 25). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"skip": {
"type": "integer",
"maximum": 1000000,
"minimum": 0,
"description": "Rows to skip, from 0 (default 0). Pass the previous reply's next_skip."
},
"limit": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25).",
"exclusiveMinimum": 0
}
}
}WRITE: log an interaction you had with a guest (phone call, meeting or comment) in the guest's history. Nothing is sent to the guest. `date` is an epoch timestamp: use the same unit as the dates you see on existing interactions from tokeet_get_guest. POST /guest/{guest_pkey}/interaction.
| Argument | Type | Description |
|---|---|---|
| date* | integer | Epoch timestamp of the interaction (same unit as Tokeet's other dates). |
| type* | string | Interaction type. |
| comment* | string | What was discussed. |
| guest_id* | string | Guest id (the id / pkey Tokeet returns for it). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"guest_id",
"type",
"date",
"comment"
],
"properties": {
"date": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Epoch timestamp of the interaction (same unit as Tokeet's other dates).",
"exclusiveMinimum": 0
},
"type": {
"enum": [
"phone call",
"meeting",
"comment"
],
"type": "string",
"description": "Interaction type."
},
"comment": {
"type": "string",
"maxLength": 4000,
"minLength": 1,
"description": "What was discussed."
},
"guest_id": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Guest id (the id / pkey Tokeet returns for it)."
}
}
}WRITE: change fields of a guest (name, address, birthday, spouse, kids, drink, hobby, sport). Only the fields you pass are sent, and each one OVERWRITES the stored value (an address object replaces the whole address). Emails and phones have their own endpoints and are not changed here. PUT /guest/{guest_pkey}.
| Argument | Type | Description |
|---|---|---|
| kids | string | Names of the guest's children, as one string. |
| name | string | New full name. |
| drink | string | Favourite drink. |
| hobby | string | Hobby. |
| sport | string | Sport. |
| spouse | string | Name of the guest's spouse. |
| address | object | Guest address. |
| birthday | string | Birthday, MM/DD/YYYY. |
| guest_id* | string | Guest id (the id / pkey Tokeet returns for it). |
WRITE: change a task: rename, move to another list, reschedule, edit notes, reassign, or mark it completed (status 2) or active (1). Only the fields you pass are sent and each OVERWRITES the stored value. PUT /task/{task_pkey}.
| Argument | Type | Description |
|---|---|---|
| due | integer | Epoch timestamp when due (same unit as existing tasks). |
| list | string | Task list name. |
| name | string | New task name. |
| notes | string | Task note (replaces the old one). |
| status | any | 1 = active, 2 = completed. |
| task_id* | string | Task id (the id / pkey Tokeet returns for it). |
| user_id | string | User id to assign the task to. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"task_id"
],
"properties": {
"due": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Epoch timestamp when due (same unit as existing tasks).",
"exclusiveMinimum": 0
},
"list": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Task list name."
},
"name": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "New task name."
},
"notes": {
"type": "string",
"maxLength": 4000,
"description": "Task note (replaces the old one)."
},
"status": {
"anyOf": [
{
"type": "number",
"const": 1
},
{
"type": "number",
"const": 2
}
],
"description": "1 = active, 2 = completed."
},
"task_id": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Task id (the id / pkey Tokeet returns for it)."
},
"user_id": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "User id to assign the task to."
}
}
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"guest_id"
],
"properties": {
"kids": {
"type": "string",
"maxLength": 500,
"description": "Names of the guest's children, as one string."
},
"name": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "New full name."
},
"drink": {
"type": "string",
"maxLength": 200,
"description": "Favourite drink."
},
"hobby": {
"type": "string",
"maxLength": 200,
"description": "Hobby."
},
"sport": {
"type": "string",
"maxLength": 200,
"description": "Sport."
},
"spouse": {
"type": "string",
"maxLength": 200,
"description": "Name of the guest's spouse."
},
"address": {
"type": "object",
"properties": {
"city": {
"type": "string",
"maxLength": 100
},
"state": {
"type": "string",
"maxLength": 100
},
"street": {
"type": "string",
"maxLength": 200
},
"country": {
"type": "string",
"maxLength": 100
},
"postal_code": {
"type": "string",
"maxLength": 30
},
"country_code": {
"type": "string",
"maxLength": 2,
"minLength": 2,
"description": "Two-letter country code."
}
},
"description": "Guest address."
},
"birthday": {
"type": "string",
"pattern": "^\\d{2}\\/\\d{2}\\/\\d{4}$",
"description": "Birthday, MM/DD/YYYY."
},
"guest_id": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Guest id (the id / pkey Tokeet returns for it)."
}
}
}