garoon-mcp-server
This server lets you manage Garoon schedules, check availability, look up facilities/users/organizations, and browse bulletin boards via MCP tools.
Create new schedule events.
Retrieve schedule events for a user, organization, or facility within a date range.
Retrieve comments on a schedule event.
Search for available time slots for attendees and/or facilities.
Look up facilities by name, list facility groups, and list facilities within a group.
Get the current datetime in a specified timezone.
Search Garoon users, organizations, and users belonging to an organization.
Browse bulletin board categories, list topics within a category, and get detailed information for a specific topic.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@garoon-mcp-serverGet my schedule for tomorrow"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Garoon MCP Server
日本語 | English
Garoonの公式ローカルMCPサーバーです。
インストール
MCPB (旧称: DXT)
MCPBは、Claude for desktopのみがサポートしているインストール方式です。.mcpbファイルをClaudeで開くだけでインストールすることができます。
リリース一覧を開く。
Assetsにある
garoon-mcp-server.mcpbをダウンロードする。ダウンロードしたファイルをClaudeで開く。
インストール確認ダイアログが表示されるのでインストールを選択する。
設定ダイアログが表示されるので、必要な情報を入力して保存する。
トグルスイッチでGaroon MCP Serverが無効になっていれば有効にする。
Dockerイメージ
Dockerをインストールして使える状態にする必要があります。 インストール後、以下のコマンドでDockerイメージをプルできます。
docker pull ghcr.io/garoon/mcp-server:latestこの方法で利用するにはMCPクライアントに応じた設定ファイルが必要です。 後述の設定ファイルの例をご参考ください。
npmパッケージ
Node.jsをインストールして使える状態にする必要があります。 インストール後、以下のコマンドでグローバルインストールできます。
npm install -g @garoon/mcp-serverこの方法で利用するにはMCPクライアントに応じた設定ファイルが必要です。 後述の設定ファイルの例をご参考ください。
Related MCP server: kintone MCP Server
設定ファイルの例
ログイン情報を含む設定ファイルをコンピュータ上に保存することはセキュリティ上のリスクがあります。適切に管理していただき、ご利用は自己責任でお願いいたします。
ファイルパス
詳細や最新情報については、利用したいMCPクライアントツールの公式ドキュメントをご参照ください。
Cursorの例[ref]:
特定のワークスペース内で以下のファイルを作成します。
.cursor/mcp.json
Visual Studio Codeの例[ref]:
特定のワークスペース内で以下のファイルを作成します。
.vscode/mcp.json
設定内容
設定は環境変数で行います。 不要な環境変数については省略できるため、ご利用の環境に合わせて削除してください。 環境変数の意味については後述の設定項目をご参照ください。
Cursor
{
"mcpServers": {
"garoon-mcp-server": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"GAROON_BASE_URL",
"-e",
"GAROON_USERNAME",
"-e",
"GAROON_PASSWORD",
"-e",
"https_proxy",
"-e",
"GAROON_BASIC_AUTH_USERNAME",
"-e",
"GAROON_BASIC_AUTH_PASSWORD",
"-e",
"GAROON_PUBLIC_ONLY",
"ghcr.io/garoon/mcp-server:latest"
],
"env": {
"GAROON_BASE_URL": "https://example.cybozu.com/g",
"GAROON_USERNAME": "username",
"GAROON_PASSWORD": "password",
"https_proxy": "http://proxy.example.com:8080",
"GAROON_BASIC_AUTH_USERNAME": "username",
"GAROON_BASIC_AUTH_PASSWORD": "password",
"GAROON_PUBLIC_ONLY": "false"
}
}
}
}クライアント証明書を利用する場合は、docker runの--mountオプション[ref]でホストマシン上の*.pfxファイルをコンテナ内にマウントする必要があります。
{
"mcpServers": {
"garoon-mcp-server": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"--mount",
"type=bind,src=/absolute/path/to/pfx_file.pfx,dst=/cert.pfx",
"-e",
"GAROON_BASE_URL",
"-e",
"GAROON_USERNAME",
"-e",
"GAROON_PASSWORD",
"-e",
"GAROON_PFX_FILE_PATH",
"-e",
"GAROON_PFX_FILE_PASSWORD",
"-e",
"GAROON_PUBLIC_ONLY",
"ghcr.io/garoon/mcp-server:latest"
],
"env": {
"GAROON_BASE_URL": "https://example.s.cybozu.com/g",
"GAROON_USERNAME": "username",
"GAROON_PASSWORD": "password",
"GAROON_PFX_FILE_PATH": "/cert.pfx",
"GAROON_PFX_FILE_PASSWORD": "password",
"GAROON_PUBLIC_ONLY": "false"
}
}
}
}{
"mcpServers": {
"garoon-mcp-server": {
"command": "garoon-mcp-server",
"env": {
"GAROON_BASE_URL": "https://example.s.cybozu.com/g",
"GAROON_USERNAME": "username",
"GAROON_PASSWORD": "password",
"https_proxy": "http://proxy.example.com:8080",
"GAROON_PFX_FILE_PATH": "/absolute/path/to/pfx_file.pfx",
"GAROON_PFX_FILE_PASSWORD": "pfx_password",
"GAROON_BASIC_AUTH_USERNAME": "username",
"GAROON_BASIC_AUTH_PASSWORD": "password",
"GAROON_PUBLIC_ONLY": "false"
}
}
}
}お使いの環境によっては、グローバルインストールしたgaroon-mcp-serverコマンドのPATHが正しく解決されない場合があります。
コマンドを絶対パスで指定するか、npxコマンドをお試しください。
{
"mcpServers": {
"garoon-mcp-server": {
"command": "npx",
"args": ["@garoon/mcp-server"],
"env": {
"GAROON_BASE_URL": "https://example.cybozu.com/g",
"GAROON_USERNAME": "username",
"GAROON_PASSWORD": "password",
"GAROON_PUBLIC_ONLY": "false"
}
}
}
}Visual Studio Code
{
"servers": {
"garoon-mcp-server": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"GAROON_BASE_URL",
"-e",
"GAROON_USERNAME",
"-e",
"GAROON_PASSWORD",
"-e",
"https_proxy",
"-e",
"GAROON_BASIC_AUTH_USERNAME",
"-e",
"GAROON_BASIC_AUTH_PASSWORD",
"-e",
"GAROON_PUBLIC_ONLY",
"ghcr.io/garoon/mcp-server:latest"
],
"env": {
"GAROON_BASE_URL": "https://example.cybozu.com/g",
"GAROON_USERNAME": "username",
"GAROON_PASSWORD": "password",
"https_proxy": "http://proxy.example.com:8080",
"GAROON_BASIC_AUTH_USERNAME": "username",
"GAROON_BASIC_AUTH_PASSWORD": "password",
"GAROON_PUBLIC_ONLY": "false"
}
}
}
}クライアント証明書を利用する場合は、docker runの--mountオプション[ref]でホストマシン上の*.pfxファイルをコンテナ内にマウントする必要があります。
{
"servers": {
"garoon-mcp-server": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"--mount",
"type=bind,src=/absolute/path/to/pfx_file.pfx,dst=/cert.pfx",
"-e",
"GAROON_BASE_URL",
"-e",
"GAROON_USERNAME",
"-e",
"GAROON_PASSWORD",
"-e",
"GAROON_PFX_FILE_PATH",
"-e",
"GAROON_PFX_FILE_PASSWORD",
"-e",
"GAROON_PUBLIC_ONLY",
"ghcr.io/garoon/mcp-server:latest"
],
"env": {
"GAROON_BASE_URL": "https://example.s.cybozu.com/g",
"GAROON_USERNAME": "username",
"GAROON_PASSWORD": "password",
"GAROON_PFX_FILE_PATH": "/cert.pfx",
"GAROON_PFX_FILE_PASSWORD": "password",
"GAROON_PUBLIC_ONLY": "false"
}
}
}
}{
"servers": {
"garoon-mcp-server": {
"type": "stdio",
"command": "garoon-mcp-server",
"env": {
"GAROON_BASE_URL": "https://example.s.cybozu.com/g",
"GAROON_USERNAME": "username",
"GAROON_PASSWORD": "password",
"https_proxy": "http://proxy.example.com:8080",
"GAROON_PFX_FILE_PATH": "/absolute/path/to/pfx_file.pfx",
"GAROON_PFX_FILE_PASSWORD": "pfx_password",
"GAROON_BASIC_AUTH_USERNAME": "username",
"GAROON_BASIC_AUTH_PASSWORD": "password",
"GAROON_PUBLIC_ONLY": "false"
}
}
}
}お使いの環境によっては、グローバルインストールしたgaroon-mcp-serverコマンドのPATHが正しく解決されない場合があります。
コマンドを絶対パスで指定するか、npxコマンドをお試しください。
{
"servers": {
"garoon-mcp-server": {
"type": "stdio",
"command": "npx",
"args": ["@garoon/mcp-server"],
"env": {
"GAROON_BASE_URL": "https://example.cybozu.com/g",
"GAROON_USERNAME": "username",
"GAROON_PASSWORD": "password",
"GAROON_PUBLIC_ONLY": "false"
}
}
}
}設定項目
MCPB | Docker/npmの環境変数 | 説明 | 必須 |
|
| Garoon環境のベースURL例1: | ✓ |
|
| Garoonのログイン名 | ✓ |
|
| Garoonのログインパスワード | ✓ |
|
| HTTPSプロキシのURL例: | - |
|
| クライアント証明書( | - |
|
| クライアント証明書のパスワード | - |
|
| Basic認証のユーザー名 | - |
|
| Basic認証のパスワード | - |
|
| 非公開予定を除外するモード(デフォルト: 無効)有効にすると予定取得ツールはレスポンスから非公開予定を除外します。また、コメント取得ツールは非公開予定のコメントを返さず、エラーを返します。MCPBではチェックボックスをオンにし、Docker/npmでは環境変数に | - |
注意事項:
クライアント証明書認証を使用する場合、URLのドメインは
.s.cybozu.comとなります(例:https://example.s.cybozu.com)
ツール一覧
ツール名 | 説明 |
Create Schedule Event | スケジュールを作成します。 |
Get Schedule Events | ユーザー/組織/施設を指定し、対象の予定を取得します。 |
Get Schedule Event Comments | 指定した予定のコメント一覧を取得します。 |
Search Available Times | ユーザーや時間範囲などの条件を指定して空き時間を検索します。 |
Get Facilities | 施設名から施設IDを検索します。 |
Garoon Get Facility Groups | 施設グループの一覧を取得します。 |
Get Facilities In Group | 指定した施設グループに所属する施設を取得します。 |
Get Current Datetime | 現在の日時を取得します。 |
Get Garoon Users | 名前からユーザーID/表示名/ログイン名を検索します。「私」「自分」等のプロンプトにも対応しています。 |
Get Organizations | 組織名から組織IDを検索します。 |
Get Users In Organization | 指定した組織IDに所属するユーザーを取得します。 |
Garoon Get Bulletin Categories | 掲示板のカテゴリー一覧を取得します。 |
Garoon Get Bulletin Topics | 指定したカテゴリーに含まれる掲示の一覧を取得します。 |
Garoon Get Bulletin Topic Detail | 指定した掲示の本文、添付ファイル、公開期間などの詳細を取得します。 |
注意事項:
ツールは内部的にGaroonのREST APIを使用しています。 パッケージ版をご利用の場合、バージョンによってはツールが使用するREST APIがGaroon側に存在しない場合がございます。
REST APIの対応バージョンについてはGaroon APIドキュメントをご参照ください。本MCPサーバーはDB分割構成には対応していません。
サポート方針
GaroonローカルMCPサーバーは、サポート窓口の対象外です。
バグ報告や機能要望はIssuesから登録をお願いします。
コントリビューション
Contributing Guide を参照してください。
ライセンス
Copyright 2025 Cybozu, Inc.
Licensed under the Apache 2.0.
Available Tools
14 toolsgaroon-create-schedule-eventCreate Schedule EventC
Create a new schedule event in Garoon
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | End datetime of the event - REQUIRED when isStartOnly=false, OPTIONAL when isStartOnly=true. For ALL_DAY events, endDateTime is always required | |
| notes | No | Notes/description of the schedule event | |
| start | Yes | Start datetime of the event - ALWAYS REQUIRED for both REGULAR and ALL_DAY events | |
| subject | No | Subject/title of schedule event | New Schedule |
| isAllDay | No | Only applies to REGULAR events. When true, the event spans the entire day but still requires specific start/end times (start-00:00, end-23:59). This is different from ALL_DAY event type which doesn't require time specifications. | |
| watchers | No | List of watchers for the schedule event | |
| attendees | No | List of attendees for the schedule event | |
| eventMenu | No | The event label (e.g., 'Meeting', 'Holiday', etc.) | |
| eventType | No | Event type that determines validation rules: 'REGULAR' = event with specific start/end times (can be modified by isAllDay flag start-00:00, end-23:59), 'ALL_DAY' = event spanning full days without time specifications (only date matters) | REGULAR |
| facilities | No | List of facilities for the schedule event | |
| isStartOnly | No | When true, the event only has a start time (no end time). When false, both start and end times are required. This field controls whether the 'end' parameter is mandatory. | |
| visibilityType | No | Publishing type { 'PUBLIC': 'Public', 'PRIVATE': 'Private' } | PUBLIC |
| facilityUsingPurpose | No | Facility usage purpose - required if 'Application for facility use' is enabled |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Error message. Present on error |
| result | No | Result of the operation. Present on success |
| status | No | HTTP status code from the Garoon API. Present only when the error is an HTTP error response |
| responseText | No | Raw response body from the Garoon API. Present only when the error is an HTTP error response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false and openWorldHint=false, so the write/non-destructive profile is covered. The description adds nothing beyond that: it does not say whether creating an event notifies attendees, whether it can fail on facility conflicts, or what the event type / isStartOnly interplay means for callers.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or repetition of the title. It is appropriately short, though its brevity contributes to the broader under-specification of the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a high-complexity creation tool with 13 parameters, nested objects, and event-type validation rules, a one-line description is inadequate. An output schema exists so return values need no explanation, but nothing is said about side effects on attendees/watchers, permission requirements, or the REGULAR/ALL_DAY and isStartOnly interaction.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with 13 richly documented parameters including nested objects and enum semantics, so the schema does the heavy lifting. The description adds zero parameter meaning, which is the baseline 3 for high-coverage schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Create a new schedule event in Garoon'), which is clear enough that an agent can distinguish it from the get-* siblings by verb alone. No explicit sibling differentiation is offered, but the resource and operation are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites (e.g., required permissions, event menu resolution, attendee/watcher lookup workflow), and no mention of any alternative tool. The agent gets no routing help beyond the face-value verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
garoon-get-bulletin-categoriesGaroon Get Bulletin CategoriesARead-only
Get bulletin board categories from Garoon. Use parentId to browse sub-categories. Special values: 1=root (default), -1=pending approval, -2=drafts.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of categories to return (1-1000, default: 100) | |
| offset | No | Number of categories to skip from the beginning (default: 0) | |
| parentId | No | Parent category ID. Special values: 1=root (default), -1=pending approval, -2=drafts |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Error message. Present on error |
| result | No | Result of the operation. Present on success |
| status | No | HTTP status code from the Garoon API. Present only when the error is an HTTP error response |
| responseText | No | Raw response body from the Garoon API. Present only when the error is an HTTP error response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safe-read profile is covered by structured data. The description adds the parentId special-value semantics but says nothing about pagination, total counts, or return behavior beyond what annotations and the output schema carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with zero filler; the core action is front-loaded and the parentId guidance follows immediately. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be described, and the read-only annotations cover the safety profile. The description is complete for invocation, missing only cross-tool routing context that a sibling-heavy toolset would benefit from.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents limit, offset, and parentId, including the same 1/-1/-2 special values. The description merely repeats the parentId values rather than adding format or interpretation beyond the schema, making 3 the correct baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (bulletin board categories) tied to Garoon, which is enough to tell it apart from siblings like garoon-get-bulletin-topics. It stops short of explicitly naming the closest sibling, so it is clear but not maximally differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one concrete usage instruction ('Use parentId to browse sub-categories'), which implies how to traverse the hierarchy, but offers no guidance on when to reach for this tool versus garoon-get-bulletin-topics or garoon-get-bulletin-topic. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
garoon-get-bulletin-topicGaroon Get Bulletin Topic DetailARead-only
Get full details of a specific bulletin board topic from Garoon, including body content, attachments, public period, and metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| topicId | Yes | Topic ID to get details for (numeric string) |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Error message. Present on error |
| result | No | Result of the operation. Present on success |
| status | No | HTTP status code from the Garoon API. Present only when the error is an HTTP error response |
| responseText | No | Raw response body from the Garoon API. Present only when the error is an HTTP error response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, covering the safe-read behavior. The description adds useful context about what the response will include (body, attachments, public period, metadata), but it does not disclose behaviors such as error conditions or behavior for invalid topic IDs. This is acceptable but not rich, given the read-only annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single well-structured sentence that states the action and key detail inclusions with no redundant wording. It earns its place by differentiating the tool and informing the agent of what to expect.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter read-only detail endpoint with an output schema and readOnlyHint annotation, the description is sufficiently complete. It identifies the topic, the target system, and the expected content categories; the output schema handles the rest of the return shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: the lone parameter topicId has a clear description and pattern in the schema. The tool description only mentions "specific topic" and does not add meaningful semantic information beyond what the schema already provides, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description starts with "Get full details of a specific bulletin board topic from Garoon"—a specific verb, resource, and scope that clearly identifies the action. It distinguishes itself from sibling list tools like get-bulletin-topics by emphasizing "specific" and enumerating the detail fields (body, attachments, public period, metadata).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is the tool to call when a single topic's full detail is needed, especially in contrast to the list sibling. However, it does not explicitly state when to prefer get-bulletin-topics or any exclusion criteria, so guidance is only implicit rather than clearly articulated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
garoon-get-bulletin-topicsGaroon Get Bulletin TopicsARead-only
Get bulletin board topics in a specific category from Garoon. Returns topic summaries with subject, updater, and update time.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of topics to return (1-1000, default: 100) | |
| offset | No | Number of topics to skip from the beginning (default: 0) | |
| categoryId | Yes | Category ID to get topics from (numeric string) |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Error message. Present on error |
| result | No | Result of the operation. Present on success |
| status | No | HTTP status code from the Garoon API. Present only when the error is an HTTP error response |
| responseText | No | Raw response body from the Garoon API. Present only when the error is an HTTP error response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions that it returns topic summaries with specific fields, and the readOnlyHint annotation already indicates no side effects. It does not describe pagination behavior, but the schema includes limit/offset, so that is partially covered. The description adds clarity on the return content.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main action and followed by the return type. It is concise and free of extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential function and return data. It does not mention potential edge cases or sorting, but for a simple retrieval tool, this is sufficient. The schema provides parameter details, so the context is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides detailed descriptions for each parameter (categoryId, limit, offset), so the description does not need to add parameter semantics. The coverage is 100%, so a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (get bulletin topics), the resource (bulletin board topics in a category), and the context (from Garoon). It also specifies the returned data, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly mention when to use this tool over alternatives, such as when needing schedule events or facilities. However, it is clear that it is for bulletin topics, which is a distinct resource. It could benefit from stating that it is for retrieving data, but it is implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
garoon-get-current-timeGet Current DatetimeARead-only
Get the current datetime in RFC 3339 format in Garoon.
| Name | Required | Description | Default |
|---|---|---|---|
| timezone | No | The IANA timezone name (e.g., 'Asia/Tokyo') |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Error message. Present on error |
| result | No | Result of the operation. Present on success |
| status | No | HTTP status code from the Garoon API. Present only when the error is an HTTP error response |
| responseText | No | Raw response body from the Garoon API. Present only when the error is an HTTP error response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds useful behavioral context by specifying RFC 3339 format and the Garoon scope. It does not contradict annotations and no side-effect disclosure is needed for a read-only clock tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with the verb and resource, no redundant words. Every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one optional parameter, a full schema description, output schema, and read-only annotation, the description is nearly complete. It could mention the default timezone behavior when the parameter is omitted, but this is a minor gap for a low-complexity tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the timezone parameter is fully described in the schema. The tool description adds no additional parameter semantics, such as default timezone behavior when omitted, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Get' with resource 'current datetime' and specifies output format 'RFC 3339 format' and scope 'in Garoon'. This clearly distinguishes it from sibling tools, none of which concern current time.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes clear context: use when you need the current datetime in RFC3339 from Garoon. It does not explicitly name alternatives, but no sibling tool provides this capability, so exclusions are unnecessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
garoon-get-facilitiesGet FacilitiesARead-only
Get facilities data from Garoon by searching facility names with optional limit and offset parameters.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the facilities to search for | |
| limit | No | Maximum number of facilities to return (1-1000, default: 100) | |
| offset | No | Number of facilities to skip from the beginning (default: 0) |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Error message. Present on error |
| result | No | Result of the operation. Present on success |
| status | No | HTTP status code from the Garoon API. Present only when the error is an HTTP error response |
| responseText | No | Raw response body from the Garoon API. Present only when the error is an HTTP error response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the read-only nature is covered. The description only adds the search-by-name and limit/offset behavior, which is already present in the schema, so no meaningful extra behavioral context is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence contains the essential information: the action, resource, search criterion, and pagination parameters. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool shape, full schema coverage, readOnly annotation, and presence of an output schema, the description is largely sufficient. It only lacks explicit guidance on search matching semantics (exact vs. partial) and differentiation from sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema fully documents name, limit, and offset. The description's mention of 'optional limit and offset parameters' adds no semantics beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses a specific verb ('Get') and resource ('facilities data from Garoon') with clear scoping ('by searching facility names'). It does not explicitly distinguish from the sibling 'garoon-get-facilities-in-group', but the search-by-name scope is reasonably clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it—when you need facilities matched by name—but provides no explicit guidance about when to prefer alternatives like garoon-get-facilities-in-group or how to choose between similar get tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
garoon-get-facilities-in-groupGet Facilities In GroupARead-only
Get facilities that belong to a specific facility group with optional limit and offset parameters.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of facilities to return (1-1000, default: 100) | |
| offset | No | Number of facilities to skip from the beginning (default: 0) | |
| facilityGroupId | Yes | Facility group ID to list facilities for (numeric string) |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Error message. Present on error |
| result | No | Result of the operation. Present on success |
| status | No | HTTP status code from the Garoon API. Present only when the error is an HTTP error response |
| responseText | No | Raw response body from the Garoon API. Present only when the error is an HTTP error response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds essentially nothing beyond that, merely alluding to pagination, and omits auth requirements or behavior on invalid group IDs, so a baseline 3 is warranted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with the resource and scope stated first. The trailing clause about limit/offset is redundant with the schema, a minor waste, but the whole thing is short and readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and all three parameters are fully schema-documented. The only gap is how to obtain a valid facilityGroupId, which is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter is documented with defaults and bounds, so the schema carries the meaning. The description only restates that limit/offset exist as optional, adding no new semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('facilities') scoped to 'a specific facility group', which distinguishes it from the sibling garoon-get-facilities (all facilities) by narrowing to a group. It never names the alternatives explicitly, but the scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the required facilityGroupId suggests the caller must first know a group ID (e.g., from garoon-get-facility-groups), but the description states no when-to-use condition or contrast with garoon-get-facilities/get-facility-groups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
garoon-get-facility-groupsGaroon Get Facility GroupsBRead-only
Get facility groups data from Garoon with optional limit and offset parameters.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of facility groups to return (1-1000, default: 100) | |
| offset | No | Number of facility groups to skip from the beginning (default: 0) |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Error message. Present on error |
| result | No | Result of the operation. Present on success |
| status | No | HTTP status code from the Garoon API. Present only when the error is an HTTP error response |
| responseText | No | Raw response body from the Garoon API. Present only when the error is an HTTP error response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is consistent with the readOnlyHint=true annotation, and no contradiction exists. Beyond the annotations, the description adds that limit and offset are optional, but this information is already present in the input schema, so no additional behavioral context (e.g., default pagination behavior, ordering) is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one concise sentence that communicates the action, resource, source, and key optional parameters without unnecessary words. It is appropriately front-loaded and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with two optional parameters, a present output schema, and readOnlyHint annotation, the description is mostly complete. It adequately indicates what data is returned and the pagination knobs, though it could have noted that it returns all facility groups when no filters are applied, which would have made it more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with both limit and offset already fully described including ranges and defaults. The description merely mentions 'optional limit and offset parameters' without adding any semantic value beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('facility groups data from Garoon'), making the tool's function unambiguous. It does not explicitly name sibling tools like get-facilities or get-facilities-in-group, but the resource name itself differentiates it from those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus sibling tools. The description only states what it does, without mentioning related tools (e.g., get-facilities, get-facilities-in-group) or any exclusions, leaving the agent to infer the appropriate use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
garoon-get-organizationsGet OrganizationsARead-only
Get Garoon organization's name, ID, and code data by searching for organization names - supports pagination with optional limit and offset parameters.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Organization name to search for (e.g., 'Sales Department', 'Engineering', 'HR') | |
| limit | No | Maximum number of organizations to return (1-1000, default: 100 - server default) | |
| offset | No | Starting position for results (0 or greater, default: 0 - server default) |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Error message. Present on error |
| result | No | Result of the operation. Present on success |
| status | No | HTTP status code from the Garoon API. Present only when the error is an HTTP error response |
| responseText | No | Raw response body from the Garoon API. Present only when the error is an HTTP error response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so no contradiction. The description adds useful context about search behavior and pagination support, but it does not disclose edge behavior such as no-results handling or response format details beyond what the output schema presumably provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that conveys the tool's purpose, search behavior, returned fields, and pagination support. Every phrase earns its place with no padding or unnecessary repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity, full schema coverage, read-only annotations, and presence of an output schema, the description provides sufficient context. It covers the core purpose, search input, returned fields, and pagination without requiring elaboration on return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents name, limit, and offset with clear semantics. The description's mention of 'name, ID, and code data' and pagination adds some alignment but little new parameter-level meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb (get), resource (Garoon organizations), scope (search by organization names), and returned fields (name, ID, code). This distinguishes it from sibling tools like garoon-get-users and garoon-get-users-in-organization.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it: when you need to look up organizations by name. However, it does not explicitly distinguish when to use this tool over related sibling tools, nor does it mention exclusions or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
garoon-get-schedule-event-commentsGet Schedule Event CommentsARead-only
Get the list of comments on a Garoon schedule event, including each comment's author, creation datetime, body, and mentions. Supports optional limit and offset parameters for pagination. NOTE: If GAROON_PUBLIC_ONLY is set to 'true', comments of private events are not returned and this tool fails with an error.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of comments to return (1-1000, default: 100) | |
| offset | No | Number of comments to skip from the beginning (default: 0) | |
| eventId | Yes | Schedule event ID to list comments for (numeric string) |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Error message. Present on error |
| result | No | Result of the operation. Present on success |
| status | No | HTTP status code from the Garoon API. Present only when the error is an HTTP error response |
| responseText | No | Raw response body from the Garoon API. Present only when the error is an HTTP error response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that: the exact field set returned and, more importantly, the configuration-dependent failure mode where private-event comments are withheld. It stops short of describing error shape or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each doing work: purpose and payload first, pagination second, failure caveat last. No filler, no repetition of the schema, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value documentation is not required, and the description still previews the fields. Combined with the pagination note and the environment-dependent error caveat, an agent has what it needs to call this correctly; only the precise error surface is left unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so limit, offset, and eventId are already fully documented in the schema with ranges and defaults. The description only restates that limit/offset exist 'for pagination' without adding format or interaction detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get the list of comments on a Garoon schedule event') and enumerates the returned fields (author, creation datetime, body, mentions). It is unambiguously distinct from siblings like garoon-get-schedule-events, which operate on events rather than their comments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear usage context: pagination via limit/offset, and an explicit condition under which the call fails (GAROON_PUBLIC_ONLY='true' hides private-event comments). It does not name a sibling alternative, but no sibling returns event comments, so there is no real alternative to route against.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
garoon-get-schedule-eventsGet Schedule EventsCRead-only
Search for schedule events in a specified period in Garoon
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of events to return (1-1000, default: 100 - server default) | |
| offset | No | Starting position for results (0 or greater, default: 0 - server default) | |
| target | Yes | Target ID as a numeric string (e.g., 12345) - user ID, organization ID, or facility ID | |
| rangeEnd | Yes | End datetime of the search range in RFC 3339 format (e.g., 2024-01-07T23:59:59+09:00). Must be after rangeStart | |
| rangeStart | Yes | Start datetime of the search range in RFC 3339 format (e.g., 2024-01-01T00:00:00+09:00). Must be before rangeEnd | |
| targetType | No | Type of target: 'user', 'organization', or 'facility' (default: 'user') | user |
| showPrivate | No | Whether to include private events in the search results. When true, includes both public and private events. When false, only public events are returned. NOTE: If GAROON_PUBLIC_ONLY is set to 'true', this parameter will be automatically overridden to false and only public events will be returned, regardless of the value specified |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Error message. Present on error |
| result | No | Result of the operation. Present on success |
| status | No | HTTP status code from the Garoon API. Present only when the error is an HTTP error response |
| responseText | No | Raw response body from the Garoon API. Present only when the error is an HTTP error response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered by structured data. The description adds nothing beyond that: it omits return format, pagination behavior, the public-only override, or any auth/permission context, leaving the description with no incremental behavioral value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. It is efficient, though terse enough that it under-specifies rather than deliberately condensing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and annotations covering the read-only profile, the description does not need to explain return values or safety. It is still missing usage context and pagination/override awareness for a 7-parameter tool, so it is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including detailed notes on target, rangeStart/rangeEnd RFC 3339 format, limit/offset defaults, and the showPrivate GAROON_PUBLIC_ONLY override. The description adds no parameter meaning beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Search') and resource ('schedule events') scoped to a period, so an agent knows the core operation. However, it does not differentiate from sibling tools like garoon-search-available-times or garoon-get-schedule-event-comments, which also operate on schedule events.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance, nor any mention of alternatives. 'In a specified period' implies a time-bounded lookup, but routing among the schedule/comment/available-times siblings is left entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
garoon-get-usersGet Garoon UsersARead-only
Get user data (name, ID, code) from Garoon by searching name/code. IMPORTANT: Omit name parameter for self-referential queries ('me', 'my', 'I', 'myself', 私, 僕, 自分) to return current user info. Supports pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | A searchable display name or user code. IMPORTANT: Omit for self-referential queries ('me', 'my', 'I', 'myself', 私, 僕, 自分) to return current user info. | |
| limit | No | Maximum number of users to return (1-1000, default: 100) | |
| offset | No | Number of users to skip from the beginning (default: 0) |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Error message. Present on error |
| result | No | Result of the operation. Present on success |
| status | No | HTTP status code from the Garoon API. Present only when the error is an HTTP error response |
| responseText | No | Raw response body from the Garoon API. Present only when the error is an HTTP error response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the description does not need to restate that it is read-only. It adds value by disclosing the special self-referential behavior and supports pagination, which are not covered by annotations. No contradictions exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded. It states the core purpose in the first sentence, follows with a critical usage note, and ends with pagination support. No redundant or extraneous wording exists; every sentence contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is relatively simple, has an output schema, and sufficient annotations. The description covers the returned fields (name, ID, code), the searchable criteria (name/code), pagination, and the self-referential edge case. It does not mention prerequisites like authentication, but given the read-only nature and existing schema, it is adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100% with detailed parameter descriptions, including the IMPORTANT note about omitting the name parameter for self-referential queries. The tool description repeats this note and mentions pagination, but does not add significant meaning beyond what the schema already provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves user data (name, ID, code) from Garoon by searching name/code. It uses a specific verb (Get), names the resource (user data), and mentions the search method, which distinguishes it from sibling tools dealing with schedules, facilities, or bulletins.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by specifying how to use the tool for standard name/code searches and highlights a critical usage note for self-referential queries (omitting the name parameter). It does not explicitly mention alternatives or when not to use it, but given the sibling list, its purpose is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
garoon-get-users-in-organizationGet Users In OrganizationARead-only
Get users from a specific organization with support for pagination parameters (limit, offset) in Garoon.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of users to return (1-1000, default: 100) | |
| offset | No | Number of users to skip from the beginning (default: 0) | |
| organizationId | Yes | Organization unique ID as a numeric string (e.g., 12345) |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Error message. Present on error |
| result | No | Result of the operation. Present on success |
| status | No | HTTP status code from the Garoon API. Present only when the error is an HTTP error response |
| responseText | No | Raw response body from the Garoon API. Present only when the error is an HTTP error response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safe read-only nature is clear. The description adds mention of pagination, but that is also visible in the schema. No additional behavioral details (e.g., rate limits, ordering) are provided, so the description adds minimal value beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that gets straight to the point. It includes the core purpose and relevant parameters without any filler or redundant wording, making it highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 3 parameters fully documented in the schema, a readOnly annotation, and an output schema present, the description is adequate. It could slightly elaborate on pagination defaults or edge cases, but these are already in the schema, so the overall completeness is high.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters with descriptive text, so the baseline is 3. The description only restates the organization scope ('specific organization') which is already implied by the organizationId parameter name and description, adding no new semantic detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (get users) and the specific scope (a specific organization), which distinguishes it from sibling tool garoon-get-users that likely returns all users. It also mentions pagination support, making the purpose precise.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for fetching users within a single organization, which provides clear context. However, it does not explicitly mention when not to use it or contrast with alternatives like garoon-get-users for all users, so it falls short of an explicit 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
garoon-search-available-timesSearch Available TimesCRead-only
Search for available time slots for specified attendee or facility within given time ranges in Garoon
| Name | Required | Description | Default |
|---|---|---|---|
| attendees | No | List of attendees to check availability for | |
| facilities | No | List of facilities to check availability for | |
| timeRanges | Yes | List of time ranges to search for available times | |
| timeInterval | Yes | Time interval for available time slots | |
| facilitySearchCondition | No | Logical operator for combining multiple facility search conditions |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Error message. Present on error |
| result | No | Result of the operation. Present on success |
| status | No | HTTP status code from the Garoon API. Present only when the error is an HTTP error response |
| responseText | No | Raw response body from the Garoon API. Present only when the error is an HTTP error response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered, but the description adds no further behavioral context such as rate limits, permission needs, or how attendee/facility combinations resolve. It essentially restates the purpose without behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, clearly placing the verb and resource first. It is efficient, though its brevity borders on under-specification for a 5-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and full schema coverage, the description need not explain return values. However, it omits meaningful context about how attendee versus facility searches behave and how timeInterval shapes results, leaving it adequate but not complete for a moderately complex query tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents attendees, facilities, timeRanges, timeInterval, and facilitySearchCondition. The description names the concepts but adds no meaning beyond what the schema already provides, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Search for available time slots') with scope ('for specified attendee or facility within given time ranges'), so an agent understands exactly what the tool returns. It does not, however, distinguish itself from scheduling siblings like garoon-get-schedule-events, which also concern calendars.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no when-to-use guidance, no prerequisites, and no mention of alternatives. There is no indication of when to prefer this availability search over fetching existing schedule events, so the agent must infer the scenario entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v1.3.0- Changed
garoon-create-schedule-event4 fields changed- changed
Input schema / properties / end / properties / dateTime / patternPrevious value: -"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"New value: +"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - changed
Input schema / properties / start / properties / dateTime / patternPrevious value: -"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"New value: +"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - changed
Output schema / properties / result / properties / end / properties / dateTime / patternPrevious value: -"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"New value: +"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - changed
Output schema / properties / result / properties / start / properties / dateTime / patternPrevious value: -"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"New value: +"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
- Changed
garoon-get-bulletin-categories2 fields changed- removed
Output schema / properties / result / properties / categories / items / properties / description / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / result / properties / categories / items / properties / description / typeAdded value: +[ + "string", + "null" +]
- Changed
garoon-get-facilities-in-group5 fields changed- added
Output schema / properties / result / properties / facilities / items / additionalPropertiesAdded value: +false - removed
Output schema / properties / result / properties / facilities / items / allOfRemoved value: -[ - { - "additionalProperties": false, - "properties": { - "code": { - "description": "Facility code (e.g., '101', '202')", - "type": "string" - }, - "id": { - "description": "Facility unique identifier as a numeric string (e.g., 12345)", - "pattern": "^\\d+$", - "type": "string" - }, - "name": { - "description": "Facility name (e.g., 'Conference Room 1', 'Meeting Room 2')", - "type": "string" - }, - "notes": { - "description": "Notes about the facility", - "type": "string" - } - }, - "required": [ - "id", - "code", - "name" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "facilityGroup": { - "description": "ID of the facility group this facility belongs to", - "pattern": "^\\d+$", - "type": "string" - } - }, - "required": [ - "facilityGroup" - ], - "type": "object" - } -] - added
Output schema / properties / result / properties / facilities / items / propertiesAdded value: +{ + "code": { + "description": "Facility code (e.g., '101', '202')", + "type": "string" + }, + "facilityGroup": { + "description": "ID of the facility group this facility belongs to", + "pattern": "^\\d+$", + "type": "string" + }, + "id": { + "description": "Facility unique identifier as a numeric string (e.g., 12345)", + "pattern": "^\\d+$", + "type": "string" + }, + "name": { + "description": "Facility name (e.g., 'Conference Room 1', 'Meeting Room 2')", + "type": "string" + }, + "notes": { + "description": "Notes about the facility", + "type": "string" + } +} - added
Output schema / properties / result / properties / facilities / items / requiredAdded value: +[ + "id", + "code", + "name", + "facilityGroup" +] - added
Output schema / properties / result / properties / facilities / items / typeAdded value: +"object"
- Added
garoon-get-schedule-event-comments - Changed
garoon-get-schedule-events4 fields changed- changed
Input schema / properties / rangeEnd / patternPrevious value: -"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"New value: +"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - changed
Input schema / properties / rangeStart / patternPrevious value: -"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"New value: +"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - changed
Output schema / properties / result / properties / events / items / properties / end / properties / dateTime / patternPrevious value: -"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"New value: +"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - changed
Output schema / properties / result / properties / events / items / properties / start / properties / dateTime / patternPrevious value: -"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"New value: +"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
- Changed
garoon-search-available-times4 fields changed- changed
Input schema / properties / timeRanges / items / properties / end / patternPrevious value: -"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"New value: +"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - changed
Input schema / properties / timeRanges / items / properties / start / patternPrevious value: -"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"New value: +"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - changed
Output schema / properties / result / properties / availableTimes / items / properties / end / properties / dateTime / patternPrevious value: -"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"New value: +"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - changed
Output schema / properties / result / properties / availableTimes / items / properties / start / properties / dateTime / patternPrevious value: -"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"New value: +"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
13 tool updates
v1.2.0- Changed
garoon-create-schedule-event2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
garoon-get-bulletin-categories4 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / properties / result / properties / categories / items / properties / id / descriptionPrevious value: -"Category unique identifier as a numeric string (e.g., 12345)"New value: +"Category identifier as a numeric string. Special categories use negative values: -1=pending approval, -2=drafts" - changed
Output schema / properties / result / properties / categories / items / properties / id / patternPrevious value: -"^\\d+$"New value: +"^(?:-[12]|\\d+)$"
- Changed
garoon-get-bulletin-topic4 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / properties / result / properties / topic / properties / category / properties / id / descriptionPrevious value: -"Category identifier"New value: +"Category identifier as a numeric string. Special categories use negative values: -1=pending approval, -2=drafts" - changed
Output schema / properties / result / properties / topic / properties / category / properties / id / patternPrevious value: -"^\\d+$"New value: +"^(?:-[12]|\\d+)$"
- Changed
garoon-get-bulletin-topics2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
garoon-get-current-time2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
garoon-get-facilities2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
garoon-get-facilities-in-group2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
garoon-get-facility-groups2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
garoon-get-organizations2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
garoon-get-schedule-events2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
garoon-get-users2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
garoon-get-users-in-organization2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
garoon-search-available-times2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
13 tool updates
v1.1.0- First observed
garoon-create-schedule-event - First observed
garoon-get-bulletin-categories - First observed
garoon-get-bulletin-topic - First observed
garoon-get-bulletin-topics - First observed
garoon-get-current-time - First observed
garoon-get-facilities - First observed
garoon-get-facilities-in-group - First observed
garoon-get-facility-groups - First observed
garoon-get-organizations - First observed
garoon-get-schedule-events - First observed
garoon-get-users - First observed
garoon-get-users-in-organization - First observed
garoon-search-available-times
TDQS
Scored across 14 tools
Most tools target clearly distinct resources and actions (create schedule event, search available times, get comments, get facilities vs facility groups vs facilities-in-group, bulletin categories vs topics vs topic). The only mild overlap is get-users vs get-users-in-organization, but descriptions make the boundary clear.
Every tool uses the same garoon- prefix followed by a kebab-case verb_noun pattern (create-schedule-event, get-facilities, get-bulletin-topics). Naming is highly predictable and uniform across all 14 tools.
14 tools is well within a healthy range for a groupware server covering scheduling, facilities, organizations, and bulletins. Each tool maps to a distinct resource or query, with no filler.
Coverage is heavily read-oriented: schedules support create+get but no update/delete, and bulletins are read-only (categories/topics/topic) with no create or reply. Core browsing is thorough, but write/lifecycle operations for bulletins and event management leave notable gaps.
Maintenance
Related MCP Connectors
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
AI から使えるクラウドグループウェア Work Handler の MCP サーバー。組織・メンバーの参照、出退勤の共有、タイムカード、承認フロー等を本人の権限の範囲で操作できる。
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Related MCP Servers
- AlicenseAqualityCmaintenanceA lightweight MCP server that connects AI assistants to Kintone applications for managing records and automating business workflows. It enables secure authentication and natural language interaction for performing CRUD operations and querying data within the Kintone platform.101MIT

kintone MCP Serverofficial
AlicenseBqualityAmaintenanceOfficial MCP server for kintone, enabling AI assistants to manage kintone apps, records, and settings through natural language.20696 npm58Apache 2.0- AlicenseNot gradedqualityDmaintenanceOfficial MCP server for Feishu/Lark OpenAPI, enabling AI assistants to interact with Feishu/Lark platform for document processing, messaging, calendar scheduling, and more.17,332 npmMIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol (MCP) server that integrates Cybozu's Garoon groupware, enabling schedule management, meeting scheduling, and user search through natural language.MIT