Skip to main content
Glama

agentdraft-mcp — AgentDraft用MCPサーバー

PyPI License: MIT

エージェント向けオペレーションAPI(受信トレイ、競合のないカレンダー、監査ツールを備えたAgentDraft)を、MCP対応のAIクライアントが呼び出せるツール群として公開するMCPサーバーです。

エージェントの実行環境がClaude Desktop、Claude Code、Cursor、Cline、OpenAI Agents SDKアプリ、その他のMCPホストであれば、このサーバーを利用できます。このサーバーはagentdraftPython SDKの薄いラッパーであり、REST APIや言語SDKと同じ認証、同じエラー、同じセマンティクスを提供します。

インストール

pip install agentdraft-mcp

Python 3.10以上と、AgentDraftダッシュボードで取得した有効なavs_live_…エージェントキーが必要です。

Related MCP server: Generic MCP Server for Google Workspace

アップグレード

pip install -U agentdraft-mcp

リリースノート: https://agentdraft.io/changelog

MCPクライアントの設定

agentdraft-mcpはPyPIに公開されているため、インストールすれば以下のJSON設定でどのMCPホストでもすぐに動作します。追加のダウンロードは不要です。

Claude Desktop / Claude Code — JSON設定(推奨)

~/Library/Application Support/Claude/claude_desktop_config.json(macOS)、またはWindows/Linuxの同等のファイルを編集します:

{
  "mcpServers": {
    "agentdraft": {
      "command": "agentdraft-mcp",
      "env": {
        "AGENTDRAFT_API_KEY": "avs_live_..."
      }
    }
  }
}

Cursor / Cline / 汎用stdioホスト

{
  "mcpServers": {
    "agentdraft": {
      "command": "python",
      "args": ["-m", "agentdraft_mcp"],
      "env": {
        "AGENTDRAFT_API_KEY": "avs_live_..."
      }
    }
  }
}

開発用バックエンドでのローカル開発を行う場合は、AGENTDRAFT_BASE_URL=http://localhost:8080も設定してください。

Claude Desktop — .mcpbデスクトップ拡張機能(ドラッグ&ドロップ)

各リリースにはGitHub Releasesで.mcpbデスクトップ拡張機能バンドルも同梱されています。agentdraft-mcp.mcpbをClaude Desktop → 設定 → 拡張機能にドラッグ&ドロップし、avs_live_…APIキーを貼り付けるだけです。JSONの編集もpip installも不要です。

ツール

ツール

目的

whoami

APIキーを確認し、エージェントのID、優先度、スコープ、所有者のtimezoneを返す

get_availability

[start, end) の範囲で呼び出し元エージェントが利用可能なスロットを一覧表示する

create_hold

スロットを仮予約する(TTL 30秒)。任意でtitle / inviteeを指定可能

release_hold

ホールドを解放し、他のエージェントが取得できるようにする

commit_booking

予約を確定する — アトミックな比較交換(compare-and-swap)。任意でtitle / inviteeを指定可能

cancel_booking

呼び出し元エージェントが所有する確定済み予約をキャンセルする

すべての時刻はISO 8601文字列(2026-06-01T14:00:00Z)です。すべての書き込みツールは、安全なリトライのためにidempotency_keyを受け付けます。create_holdとcommit_bookingは、スロットの対象者を記録する任意のtitleとinvitee({name, email, notes})も受け付けます。これらはダッシュボードで所有者に表示されます。

競合の検出方法

2つのエージェントが同じスロットを競合した場合、正確に1つだけが勝ちます。負けたエージェントには、文字列エラーではなく構造化されたoutrankedペイロードが返されます:

{
  "error": "outranked",
  "winning_booking_id": "bkg_…",
  "winning_agent_id": "agt_…",
  "winning_agent_priority": 1,
  "your_priority": 3,
  "message": "Your booking was outranked. Read winning_agent_id and propose an alternate slot rather than retrying."
}

エージェントはこれに基づいて分岐し、同じスロットをリトライするのではなく代替案を提案する必要があります。

AgentDraft SDKとの違い

Python/TS SDK

MCPサーバー

呼び出し元

自分が書いたアプリコード

AIクライアント(Claude Desktopなど)

トランスポート

api.agentdraft.ioへの直接HTTPS

MCPホストとこのプロセス間のstdio

認証

Client(api_key=…)

AGENTDRAFT_API_KEY環境変数

セマンティクス

同じ

同じ

エラー

型付きPython例外

ツール結果の構造化JSON

自分でエージェントを書く場合はSDKを使用してください。他の誰かのエージェント実行環境(Claude Desktop、Cursor、Cline、汎用MCPホスト)がカスタムコードなしでユーザーに代わってAgentDraftを呼び出す必要がある場合は、このMCPサーバーを使用してください。

リンク

セキュリティ

脆弱性を発見しましたか?SECURITY.mdを参照してください。セキュリティレポートについては公開イシューを開かないでください。

コントリビューション

CONTRIBUTING.mdを参照してください。ryabinski-labs/agentdraft-mcpはAgentDraftのプライベートアプリケーションリポジトリ内のディレクトリの公開ミラーです。イシューとプルリクエストはそこで読まれ、次のリリース同期を通じて反映されます。

ライセンス

MIT — LICENSEを参照してください。

Available Tools

9 tools
cancel_bookingA

Cancel a previously-committed booking owned by the calling agent. The slot becomes available to other agents immediately.

NameRequiredDescriptionDefault
booking_idYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the full behavioral burden; it does disclose one meaningful side effect ('the slot becomes available to other agents immediately') and an ownership authorization constraint. However, it doesn't state whether cancellation is reversible, what happens on an invalid or non-owned booking_id, or whether any confirmation is required — notable gaps for an unannotated mutation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero filler, with the identity/ownership constraint front-loaded and the downstream effect second. Nothing repeats the tool name unnecessarily.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 the description covers the essential facts for a one-parameter mutation: whose resource it acts on and what the world looks like afterward. Additional detail on failure modes would help but isn't required to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single parameter, so the description should compensate. The ownership clause adds a real semantic constraint on booking_id (it must reference a booking the caller owns), but the format/origin of the identifier is still unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Cancel') and resource ('booking') plus a scope constraint ('owned by the calling agent'), which rules out cancelling other agents' bookings. It doesn't explicitly contrast with the closely related sibling release_hold, so an agent must infer the distinction between releasing a hold and cancelling a committed booking.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'previously-committed booking' implies usage after commit_booking, but the description never says when to choose this over release_hold or what to do if the booking is still a hold. Usage is implied rather than stated, and no preconditions or failure conditions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

commit_bookingA

Finalize a booking. This is the atomic compare-and-swap at the slot level — exactly one agent succeeds per slot in any race window. Returns an outranked payload on 409.

Optional title and invitee ({name, email, notes}) record who the slot is for; both are echoed back and shown to the owner in the dashboard.

Set with_conferencing=True to attach a video meeting link to the committed booking; the link is returned under conferencing.

NameRequiredDescriptionDefault
endYes
startYes
titleNo
inviteeNo
metadataNo
idempotency_keyNo
with_conferencingNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses atomic compare-and-swap behavior, exactly-one-winner semantics, the 409 outranked payload, invitee echo/visibility to the owner, and conferencing link attachment. It leaves idempotency_key semantics and permission/auth expectations unexplained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core finalize/CAS behavior, then optional fields and conferencing. Three short paragraphs with no wasted sentences; every part adds useful invocation or behavioral context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The core commit semantics and conflict behavior are complete, and an output schema exists to cover return values. But for a 7-parameter mutation with no annotations and 0% schema coverage, the description should also explain idempotency_key, metadata, and start/end expectations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for all parameter meaning. It explains title, invitee shape, and with_conferencing, but omits start/end format expectations, metadata, and critically the idempotency_key, leaving several parameters undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Finalize a booking') and adds the distinguishing concurrency semantics: atomic compare-and-swap at slot level, exactly one agent succeeds per race window. This clearly separates it from hold/cancel/approval siblings without needing their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the usage context: commit a slot that is being finalized, with conflict behavior on 409. However, it does not explicitly say when to use this versus create_hold, or when not to use it, so the guidance remains implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_holdA

Reserve a slot tentatively. Holds expire automatically (30s TTL by default). A subsequent commit_booking on the same slot promotes the hold to a final booking.

Optional title and invitee ({name, email, notes}) record who the slot is for; both carry through to the eventual commit.

Returns an outranked payload if a higher-priority agent already holds or has committed the slot inside the bump window.

NameRequiredDescriptionDefault
endYes
startYes
titleNo
inviteeNo
metadataNo
idempotency_keyNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses the 30-second default TTL, automatic expiration, the promotion path via commit_booking, and the outranked payload when a higher-priority agent already holds the slot. It omits permission requirements and idempotency behavior, but the key lifecycle behaviors are well covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action and TTL, then details optional fields, then conflict behavior. It is efficient with no filler, though slightly dense; a small amount of structure could improve readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 needn't be fully explained, but the description helpfully mentions the outranked payload. For a 6-parameter mutation tool with no annotations, the description should explain the required start/end semantics and what idempotency_key does. Its coverage of parameter behavior is incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains only two of six parameters (title and invitee with its fields) and leaves start, end, metadata, and idempotency_key completely undocumented. Partial coverage with significant gaps warrants a low score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Reserve a slot tentatively.' It also explicitly distinguishes this tool from commit_booking by explaining that a later commit_booking promotes the hold. An agent can tell exactly what this tool does and how it differs from the commit sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies the usage pattern: create a hold first, then call commit_booking to finalize. It doesn't explicitly name alternatives for cases where a hold isn't needed, but the flow is unambiguous. No when-not guidance is provided, keeping it below a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_approvalA

Read the current state of one approval request: pending, approved, denied, or expired, plus the reviewer's note once resolved. Safe to poll; it never blocks.

NameRequiredDescriptionDefault
approval_idYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden and discloses key behavior: it is a read operation, it is safe to poll, it never blocks, and it returns status plus reviewer note once resolved. It does not mention authorization, rate limits, or not-found behavior, so it is strong but not fully exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded, first stating what is read and then adding the important non-blocking polling behavior. Every sentence adds value with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, has one parameter, and has an output schema, so return values need not be fully described. The description covers statuses and behavior well. Its main gap is the undocumented approval_id parameter, which is the only notable omission for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has one required parameter, approval_id, with 0% description coverage. The tool description refers to 'one approval request' but adds no meaning about the ID format, source, or constraints. With low schema coverage, the description should compensate, but it does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: reading one approval request and its current state. It enumerates the possible states and the reviewer note, making the purpose clear. It implicitly differentiates from wait_for_approval by saying it never blocks, though it does not name that sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Safe to poll; it never blocks' gives clear usage context: this is the non-blocking polling option. However, it does not explicitly name or contrast with wait_for_approval, nor does it state when to prefer that alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_availabilityA

List slots open to the calling agent within [start, end).

Times are ISO 8601 strings (2026-06-01T14:00:00Z). The result is filtered through the user's focus blocks, buffer rules, and any currently-active holds across sibling agents.

NameRequiredDescriptionDefault
endYes
startYes
include_holdsNo
duration_minutesNo
granularity_minutesNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does add non-obvious behavior: results are filtered through the user's focus blocks, buffer rules, and active holds across sibling agents. It does not spell out the read-only nature beyond the verb 'List', nor permissions or rate limits, but the filtering pipeline is valuable behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded with the core purpose, then adds time-format and filtering details in two compact sentences. Every sentence earns its place with no repetition of the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return shape need not be explained, and the behavioral filtering is covered. However, for a five-parameter tool with zero schema descriptions, the missing semantics for holds, duration, and granularity make the definition incomplete for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It only clarifies that start/end are ISO 8601 strings via the '[start, end)' notation; it says nothing about include_holds (default true), duration_minutes (default 30), or granularity_minutes (default 15), leaving three of five parameters undocumented anywhere.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List slots open to the calling agent') with an explicit interval scope '[start, end)'. It is clearly distinguishable from the sibling hold/booking/approval tools because it queries availability rather than mutating holds.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The context is clear: use this to see open slots within a window, and the description notes that results are filtered by focus blocks, buffer rules, and sibling-agent holds. It does not explicitly name alternatives (e.g., create_hold) or state when not to use it, keeping it below a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

release_holdB

Release a previously-created hold so other agents can claim the slot before the TTL expires.

NameRequiredDescriptionDefault
hold_idYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It usefully discloses that a hold has a TTL and that releasing it makes the slot claimable by other agents, but says nothing about idempotency, what happens when the hold_id is expired, already released, or unknown, or whether release requires ownership/auth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short lines with no filler; the effect (freeing the slot) is front-loaded after the verb. Slightly more could be said without bloating it, but nothing present is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 the one-parameter surface is small. However, for a state-changing tool with zero annotation coverage, missing error/edge-case behavior and the origin of hold_id leave the definition only minimally adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single required parameter hold_id is never mentioned in the description. The agent gets no hint that hold_id comes from create_hold's response or what form it takes, so the description fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (release) and resource (a previously-created hold) plus the effect: freeing the slot for other agents before TTL expiry. This implicitly links to create_hold, though it never names a sibling such as cancel_booking to disambiguate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The clause 'so other agents can claim the slot before the TTL expires' implies the trigger (you no longer need the slot and want to free it early), but there is no explicit when-to-use, when-not, or comparison against cancel_booking, which is the nearest alternative for undoing a booking.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

request_approvalA

Open a human sign-off request and return immediately.

action_type is a namespaced lowercase string such as deploy.production, mailbox.send_external, or billing.refund. summary is the one line a reviewer reads first; evidence is the structured context they need to decide (target, amount, exact draft). Returns {approval_id, status, expires_at}. Requires the approvals:request scope.

NameRequiredDescriptionDefault
summaryYes
evidenceNo
action_typeYes
ttl_secondsNo
idempotency_keyNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does reasonably well: it discloses the non-blocking semantics, the required `approvals:request` scope, and the return shape. It omits what happens on expiry, whether duplicate requests are deduplicated, and what ttl_seconds/idempotency_key actually do behaviorally.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, then a compact parameter gloss and return/scope line. The examples earn their place by fixing the action_type convention. Slightly dense prose in the parameter paragraph, but no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema covers the return values, so restating them is a bonus rather than a requirement. The real gap is that two of five parameters, including the idempotency control that matters for a request tool that can be retried, are left undefined in a tool with zero annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It does well for action_type (namespaced lowercase format with three concrete examples), summary (what the reviewer reads first), and evidence (target, amount, exact draft). But ttl_seconds and idempotency_key — both meaningful for an approval request — get no explanation at all.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource: 'Open a human sign-off request' plus a key behavioral modifier, 'return immediately'. This implicitly separates it from the blocking sibling wait_for_approval, though the sibling is never named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'return immediately' hints that this is the fire-and-forget path and that something like wait_for_approval exists for blocking, but the agent must infer that routing. No explicit when-to-use or when-not-to-use statement, and no mention of prerequisites beyond the scope.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wait_for_approvalA

Wait for a human decision, bounded to 120 seconds.

The timeout is clamped to [1, 120] and the poll interval to [1, 30] so no MCP host is left hanging. If the request is still pending when the timeout lapses, the result carries status: "pending" and timed_out: true; call get_approval or wait_for_approval again to keep waiting. Proceed only when the status is approved — denied, expired, and pending all mean stop.

NameRequiredDescriptionDefault
approval_idYes
timeout_secondsNo
poll_interval_secondsNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations, so the description carries the load and does it well: it discloses the timeout clamp `[1, 120]`, the poll clamp `[1, 30]`, that the call blocks, and the exact `status: "pending" / timed_out: true` outcome on lapse. What it omits is the failure mode when `approval_id` is invalid or expired-upstream, and whether the blocking call has any side effect on the approval record.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the verb and the hard bound, and every clause carries information (clamps, pending semantics, stop conditions). Slightly padded by the line-broken formatting and the redundant re-statement that pending means stop after already saying `status: "pending"`.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present the description needn't enumerate return fields, yet it still explains the two fields that matter for loop control (`status`, `timed_out`) and the stop rule. The gap is the provenance and validity of the required `approval_id`, which an agent must supply correctly to call this at all.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, and it does for two of three params by giving the legal ranges for `timeout_seconds` and `poll_interval_seconds` (bounds the schema's bare numeric types and defaults do not convey). `approval_id` is never explained — notably where it comes from, presumably `request_approval` — which keeps this from a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource ('Wait for a human decision') plus a hard scope bound ('bounded to 120 seconds'). An agent can distinguish this blocking wait from the non-blocking sibling `get_approval` because the description explicitly frames re-calls to either as the continuation strategy.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit decision rules: 'Proceed only when the status is `approved` — denied, expired, and pending all mean stop,' which is a clear when-not. It names `get_approval` and `wait_for_approval` as follow-up options but never states the condition that should push an agent to the polling sibling instead of this blocking call, so the alternative selection is left partly implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

whoamiA

Confirm the configured AGENTDRAFT_API_KEY is valid and return the calling agent's identity, priority, scopes, and the owner's timezone (so a client can render slots in the owner's zone).

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does reasonably well: it discloses that this validates credentials (implying an auth-failure path) and enumerates exactly what identity data comes back, including the owner timezone and why it matters. It stops short of saying the call itself has no side effects or what an invalid key returns, but the read-only, zero-parameter nature is evident.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core action (confirm the key) followed by the payload. Every clause carries information — credential validation, returned fields, and the rationale for the timezone.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-field details need not be fully spelled out, and the description still summarizes them usefully. For a zero-param read tool this is nearly complete; the only missing piece is the recommended call ordering relative to the availability/booking siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing to disambiguate; the baseline of 4 applies. The description correctly avoids inventing parameter behavior and instead spends its words on the returned identity fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb and resource: it validates the configured AGENTDRAFT_API_KEY and returns the calling agent's identity, priority, scopes, and the owner's timezone. That scope is unmistakable and distinct from every sibling (booking, approval, and availability tools), so an agent can select it without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: 'so a client can render slots in the owner's zone' hints at a pre-flight/identity check before calling get_availability, but the description never says when to call this versus just calling get_availability, nor that it should be used to verify credentials first. No exclusions or alternatives are named.

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.

  1. 9 tool updatesv0.2.0
    • First observedcancel_booking
    • First observedcommit_booking
    • First observedcreate_hold
    • First observedget_approval
    • First observedget_availability
    • First observedrelease_hold
    • First observedrequest_approval
    • First observedwait_for_approval
    • First observedwhoami

TDQS

A3.9/5.0

Scored across 9 tools

Disambiguation5/5

Each tool targets a distinct resource+action: holds (create/release), bookings (commit/cancel), availability, identity, and approvals (request/get/wait). The only potentially close pair, get_approval vs wait_for_approval, is explicitly differentiated by non-blocking vs blocking behavior in their descriptions.

Naming Consistency4/5

Nearly all tools follow a clean snake_case verb_noun pattern (get_availability, create_hold, commit_booking, request_approval). The single deviation is 'whoami', which is a fixed phrase rather than a verb_noun construction, but it is idiomatic and unambiguous.

Tool Count5/5

Nine tools is well within the ideal 3-15 range and every tool maps to a concrete step in the booking or approval workflow. No tool feels redundant or filler.

Completeness4/5

The booking lifecycle is fully covered (availability, hold create/release, commit, cancel) and approvals support request/get/wait. Minor gaps remain: there is no list_approvals to enumerate pending requests and no way to withdraw/cancel an approval request, but agents can work around these with get_approval.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to register, send/receive email, store encrypted credentials, emit audit events, and query behavioral trust scores via MCP tools.
    4 npm
    5
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables MCP clients to discover and create agents, durably submit messages with verifiable replies, and search source-linked local memory. Exposes eight authenticated tools with owner-approved OAuth, transcript-backed verification, and explicit control over history import and embedding.
    MIT