Tokeet MCP by usefulapi

Read Tokeet rentals, rates, guests, tasks and expenses; add guests, notes and tasks.

使うべきか

品質と安全性

A
説明の品質
99%
スキーマの完全性
92%
命名の品質
79%
ポイズニングのリスク
100%
権限の一致
100%
プロトコルへの準拠
100%

検出事項(1)

  • LOWTool 'tokeet_record_guest_interaction' name length outside 3-30 rangetokeet_record_guest_interaction 内

ツール定義とプロトコルへの準拠に関する自動分析に基づいています。

コンテキストコスト

~5,057トークン数(ツール定義)
~1.5 KB一般的なレスポンスサイズ
注意への影響は大きい(128k コンテキストの 3.95%)

これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。

インストール

ワンクリックインストール

これを `claude_desktop_config.json` ファイルに追加してください:

{
  "mcpServers": {
    "tokeet": {
      "url": "https://tokeet.usefulapi.io/mcp"
    }
  }
}

リモートエンドポイント

https://tokeet.usefulapi.io/mcpstreamable-http

できること

ツール一覧

ツール(24)

🟢 読み取り専用🟡 書き込み🔴 削除⚪ 不明
🟢tokeet_get_current_user

The Tokeet user the API key belongs to (name, email, role). Login data is never returned. GET /user/me.

入力スキーマ

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢tokeet_list_users(skip, limit)

List the team members (users) of the Tokeet account. GET /user.

入力スキーマ

{
  "type": "object",
  "properties": {
    "skip": {
      "description": "Rows to skip, from 0 (default 0). Pass the previous reply's next_skip.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "limit": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢tokeet_get_user(user_id)

One team member by id. GET /user/{user_pkey}.

入力スキーマ

{
  "type": "object",
  "properties": {
    "user_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "User id (the id / pkey Tokeet returns for it)."
    }
  },
  "required": [
    "user_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢tokeet_list_rentals(skip, limit, sort)

List the rental properties in the account, sorted by name. GET /rental.

入力スキーマ

{
  "type": "object",
  "properties": {
    "skip": {
      "description": "Rows to skip, from 0 (default 0). Pass the previous reply's next_skip.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "limit": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    },
    "sort": {
      "description": "1 ascending, -1 descending.",
      "anyOf": [
        {
          "type": "number",
          "const": 1
        },
        {
          "type": "number",
          "const": -1
        }
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢tokeet_get_rental(rental_id)

One rental property by id (its pkey from tokeet_list_rentals). GET /rental/{rental_pkey}.

入力スキーマ

{
  "type": "object",
  "properties": {
    "rental_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Rental id (the id / pkey Tokeet returns for it)."
    }
  },
  "required": [
    "rental_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢tokeet_list_rentals_by_owner(owner_id)

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).

入力スキーマ

{
  "type": "object",
  "properties": {
    "owner_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Owner id (the id / pkey Tokeet returns for it)."
    }
  },
  "required": [
    "owner_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢tokeet_get_rental_availability(rental_id)

The open and blocked dates of one rental over the next two years. GET /rental/{rental_pkey}/availability.

入力スキーマ

{
  "type": "object",
  "properties": {
    "rental_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Rental id (the id / pkey Tokeet returns for it)."
    }
  },
  "required": [
    "rental_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢tokeet_list_rates(rental_id, skip, limit, sort)

All standard, dynamic and promotional rates of one rental. Read-only: rates cannot be changed with this server. GET /rate/{rental_pkey}.

入力スキーマ

{
  "type": "object",
  "properties": {
    "rental_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Rental id (the id / pkey Tokeet returns for it)."
    },
    "skip": {
      "description": "Rows to skip, from 0 (default 0). Pass the previous reply's next_skip.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "limit": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    },
    "sort": {
      "description": "1 ascending, -1 descending.",
      "anyOf": [
        {
          "type": "number",
          "const": 1
        },
        {
          "type": "number",
          "const": -1
        }
      ]
    }
  },
  "required": [
    "rental_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢tokeet_list_guests(name, source, booked, unbooked, skip, ...)

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.

入力スキーマ

{
  "type": "object",
  "properties": {
    "name": {
      "description": "Partial guest name (matched by regex on the name).",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "source": {
      "description": "Only guests from this channel/source, e.g. airbnb.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "booked": {
      "description": "true = only guests with bookings.",
      "type": "boolean"
    },
    "unbooked": {
      "description": "true = only guests without bookings.",
      "type": "boolean"
    },
    "skip": {
      "description": "Rows to skip, from 0 (default 0). Pass the previous reply's next_skip.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "limit": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    },
    "sort": {
      "description": "Sort by name: 1 ascending, -1 descending.",
      "anyOf": [
        {
          "type": "number",
          "const": 1
        },
        {
          "type": "number",
          "const": -1
        }
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢tokeet_get_guest(guest_id)

One guest by id: contact details, notes, interactions and preferences. GET /guest/{pkey}.

入力スキーマ

{
  "type": "object",
  "properties": {
    "guest_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Guest id (the id / pkey Tokeet returns for it)."
    }
  },
  "required": [
    "guest_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢tokeet_get_guest_by_email(email)

The guest whose primary email is exactly this address. GET /guest/email/{email}.

入力スキーマ

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "maxLength": 320,
      "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,}$",
      "description": "Guest primary email address."
    }
  },
  "required": [
    "email"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢tokeet_list_tasks(skip, limit, sort)

List the tasks (to-dos, e.g. cleanings and check-ins) in the account, sorted by task name. GET /task.

入力スキーマ

{
  "type": "object",
  "properties": {
    "skip": {
      "description": "Rows to skip, from 0 (default 0). Pass the previous reply's next_skip.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "limit": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    },
    "sort": {
      "description": "1 ascending, -1 descending.",
      "anyOf": [
        {
          "type": "number",
          "const": 1
        },
        {
          "type": "number",
          "const": -1
        }
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢tokeet_get_task(task_id)

One task by id. GET /task/{task_pkey}.

入力スキーマ

{
  "type": "object",
  "properties": {
    "task_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Task id (the id / pkey Tokeet returns for it)."
    }
  },
  "required": [
    "task_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢tokeet_list_expenses(skip, limit, sort)

List the expenses recorded in the account (date, rental, category, amount, paid/unpaid status), by creation date. Read-only. GET /expense.

入力スキーマ

{
  "type": "object",
  "properties": {
    "skip": {
      "description": "Rows to skip, from 0 (default 0). Pass the previous reply's next_skip.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "limit": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    },
    "sort": {
      "description": "1 ascending, -1 descending.",
      "anyOf": [
        {
          "type": "number",
          "const": 1
        },
        {
          "type": "number",
          "const": -1
        }
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢tokeet_get_expense(expense_id)

One expense by id. GET /expense/{expense_pkey}.

入力スキーマ

{
  "type": "object",
  "properties": {
    "expense_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Expense id (the id / pkey Tokeet returns for it)."
    }
  },
  "required": [
    "expense_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢tokeet_list_templates(type, skip, limit, sort)

List the message/email templates in the account, optionally of one type. GET /template.

入力スキーマ

{
  "type": "object",
  "properties": {
    "type": {
      "description": "Only templates of this type.",
      "type": "string",
      "minLength": 1,
      "maxLength": 50
    },
    "skip": {
      "description": "Rows to skip, from 0 (default 0). Pass the previous reply's next_skip.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "limit": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    },
    "sort": {
      "description": "1 ascending, -1 descending.",
      "anyOf": [
        {
          "type": "number",
          "const": 1
        },
        {
          "type": "number",
          "const": -1
        }
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢tokeet_get_template(template_id)

One message template by id. GET /template/{template_pkey}.

入力スキーマ

{
  "type": "object",
  "properties": {
    "template_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Template id (the id / pkey Tokeet returns for it)."
    }
  },
  "required": [
    "template_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢tokeet_list_triggers(skip, limit, sort)

List the automation triggers (event, rental, template, delay) in the account. Read-only: triggers cannot be changed with this server. GET /trigger.

入力スキーマ

{
  "type": "object",
  "properties": {
    "skip": {
      "description": "Rows to skip, from 0 (default 0). Pass the previous reply's next_skip.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "limit": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    },
    "sort": {
      "description": "1 ascending, -1 descending.",
      "anyOf": [
        {
          "type": "number",
          "const": 1
        },
        {
          "type": "number",
          "const": -1
        }
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴tokeet_create_guest(name, email, phone, notes, address, ...)

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.

入力スキーマ

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Guest full name."
    },
    "email": {
      "type": "string",
      "maxLength": 320,
      "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,}$",
      "description": "Primary email."
    },
    "phone": {
      "description": "Phone number.",
      "type": "string",
      "minLength": 3,
      "maxLength": 50
    },
    "notes": {
      "description": "Initial notes, as strings.",
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 2000
      }
    },
    "address": {
      "type": "object",
      "properties": {
        "street": {
          "type": "string",
          "maxLength": 200
        },
        "city": {
          "type": "string",
          "maxLength": 100
        },
        "state": {
          "type": "string",
          "maxLength": 100
        },
        "country": {
          "type": "string",
          "maxLength": 100
        },
        "postal_code": {
          "type": "string",
          "maxLength": 30
        },
        "country_code": {
          "description": "Two-letter country code.",
          "type": "string",
          "minLength": 2,
          "maxLength": 2
        }
      },
      "description": "Guest address."
    },
    "birthday": {
      "description": "Birthday, MM/DD/YYYY.",
      "type": "string",
      "pattern": "^\\d{2}\\/\\d{2}\\/\\d{4}$"
    },
    "spouse": {
      "description": "Name of the guest's spouse.",
      "type": "string",
      "maxLength": 200
    },
    "kids": {
      "description": "Names of the guest's children, as one string.",
      "type": "string",
      "maxLength": 500
    },
    "drink": {
      "description": "Favourite drink.",
      "type": "string",
      "maxLength": 200
    },
    "hobby": {
      "description": "Hobby.",
      "type": "string",
      "maxLength": 200
    },
    "sport": {
      "description": "Sport.",
      "type": "string",
      "maxLength": 200
    }
  },
  "required": [
    "name",
    "email"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴tokeet_update_guest(guest_id, name, address, birthday, spouse, ...)

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}.

入力スキーマ

{
  "type": "object",
  "properties": {
    "guest_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Guest id (the id / pkey Tokeet returns for it)."
    },
    "name": {
      "description": "New full name.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "address": {
      "type": "object",
      "properties": {
        "street": {
          "type": "string",
          "maxLength": 200
        },
        "city": {
          "type": "string",
          "maxLength": 100
        },
        "state": {
          "type": "string",
          "maxLength": 100
        },
        "country": {
          "type": "string",
          "maxLength": 100
        },
        "postal_code": {
          "type": "string",
          "maxLength": 30
        },
        "country_code": {
          "description": "Two-letter country code.",
          "type": "string",
          "minLength": 2,
          "maxLength": 2
        }
      },
      "description": "Guest address."
    },
    "birthday": {
      "description": "Birthday, MM/DD/YYYY.",
      "type": "string",
      "pattern": "^\\d{2}\\/\\d{2}\\/\\d{4}$"
    },
    "spouse": {
      "description": "Name of the guest's spouse.",
      "type": "string",
      "maxLength": 200
    },
    "kids": {
      "description": "Names of the guest's children, as one string.",
      "type": "string",
      "maxLength": 500
    },
    "drink": {
      "description": "Favourite drink.",
      "type": "string",
      "maxLength": 200
    },
    "hobby": {
      "description": "Hobby.",
      "type": "string",
      "maxLength": 200
    },
    "sport": {
      "description": "Sport.",
      "type": "string",
      "maxLength": 200
    }
  },
  "required": [
    "guest_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡tokeet_add_guest_note(guest_id, note)

WRITE: add an internal note to a guest record (not visible to or sent to the guest). POST /guest/{guest_pkey}/note.

入力スキーマ

{
  "type": "object",
  "properties": {
    "guest_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Guest id (the id / pkey Tokeet returns for it)."
    },
    "note": {
      "type": "string",
      "minLength": 1,
      "maxLength": 4000,
      "description": "The note text."
    }
  },
  "required": [
    "guest_id",
    "note"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡tokeet_record_guest_interaction(guest_id, type, date, comment)

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.

入力スキーマ

{
  "type": "object",
  "properties": {
    "guest_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Guest id (the id / pkey Tokeet returns for it)."
    },
    "type": {
      "type": "string",
      "enum": [
        "phone call",
        "meeting",
        "comment"
      ],
      "description": "Interaction type."
    },
    "date": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Epoch timestamp of the interaction (same unit as Tokeet's other dates)."
    },
    "comment": {
      "type": "string",
      "minLength": 1,
      "maxLength": 4000,
      "description": "What was discussed."
    }
  },
  "required": [
    "guest_id",
    "type",
    "date",
    "comment"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡tokeet_create_task(name, list, due, notes, inquiry_id, ...)

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.

入力スキーマ

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 300,
      "description": "Task name."
    },
    "list": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Name of the task list to add it to."
    },
    "due": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Epoch timestamp when the task is due (same unit as existing tasks)."
    },
    "notes": {
      "description": "A note about the task.",
      "type": "string",
      "maxLength": 4000
    },
    "inquiry_id": {
      "description": "Inquiry (booking) id the task relates to.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "user_id": {
      "description": "User id the task is assigned to (see tokeet_list_users).",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "status": {
      "description": "1 = active (default), 2 = completed.",
      "anyOf": [
        {
          "type": "number",
          "const": 1
        },
        {
          "type": "number",
          "const": 2
        }
      ]
    }
  },
  "required": [
    "name",
    "list",
    "due"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴tokeet_update_task(task_id, name, list, due, notes, ...)

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}.

入力スキーマ

{
  "type": "object",
  "properties": {
    "task_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Task id (the id / pkey Tokeet returns for it)."
    },
    "name": {
      "description": "New task name.",
      "type": "string",
      "minLength": 1,
      "maxLength": 300
    },
    "list": {
      "description": "Task list name.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "due": {
      "description": "Epoch timestamp when due (same unit as existing tasks).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "notes": {
      "description": "Task note (replaces the old one).",
      "type": "string",
      "maxLength": 4000
    },
    "user_id": {
      "description": "User id to assign the task to.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "status": {
      "description": "1 = active, 2 = completed.",
      "anyOf": [
        {
          "type": "number",
          "const": 1
        },
        {
          "type": "number",
          "const": 2
        }
      ]
    }
  },
  "required": [
    "task_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

コミュニティ

このサーバーを評価する

エビデンス

最近の観測

検証済みバージョンは記録されていませんツール 24 件