Skip to main content
Glama

agentdraft-mcp — MCP server for AgentDraft

PyPI License: MIT

An MCP server that exposes AgentDraft — the ops API for AI agents with inbox, conflict-free calendar, and audit tools — as a set of tools any MCP-aware AI client can call.

Use this if your agent runtime is Claude Desktop, Claude Code, Cursor, Cline, an OpenAI Agents SDK app, or any other MCP host. The server is a thin wrapper around the agentdraft Python SDK — same auth, same errors, same semantics as the REST API and the language SDKs.

Tools

Nine tools, grouped by what they coordinate:

  • Scheduling — whoami, get_availability, create_hold, release_hold, commit_booking, cancel_booking.

  • Human approval — request_approval, get_approval, wait_for_approval. Open a gate before a consequential action and resume only when a person decides. The wait is clamped to 120 seconds; a timeout returns status: "pending", never a false approval.

approval = await tools.request_approval(
    action_type="deploy.production",
    summary="Ship v0.2.0 to production",
    evidence={"commit": "a1b2c3d", "migrations": 2},
)
result = await tools.wait_for_approval(approval["approval_id"], timeout_seconds=60)
if result["status"] != "approved":
    raise SystemExit(f"stood down: {result['status']}")

An interactive config generator for every supported host lives at https://agentdraft.io/for-agents/mcp.

Related MCP server: Generic MCP Server for Google Workspace

Install

pip install agentdraft-mcp

Requires Python 3.10+ and a valid avs_live_… agent key from the AgentDraft dashboard.

Upgrade

pip install -U agentdraft-mcp

Release notes: https://agentdraft.io/changelog

Configure your MCP client

agentdraft-mcp is on PyPI, so once it's installed the JSON config below works on any MCP host right now — no extra downloads.

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or the equivalent on Windows/Linux:

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

Cursor / Cline / generic stdio host

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

For local development against a dev backend, also set AGENTDRAFT_BASE_URL=http://localhost:8080.

Claude Desktop — .mcpb Desktop Extension (drag-drop)

Each release also ships a .mcpb Desktop Extension bundle on GitHub Releases. Drag agentdraft-mcp.mcpb into Claude Desktop → Settings → Extensions and paste your avs_live_… API key — no JSON editing, no pip install.

Tools

Tool

Purpose

whoami

Confirm the API key and return the agent's identity, priority, scopes, and the owner's timezone

get_availability

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

create_hold

Reserve a slot tentatively (30 s TTL); optional title / invitee

release_hold

Release a hold so other agents can claim it

commit_booking

Finalize a booking — atomic compare-and-swap; optional title / invitee

cancel_booking

Cancel a committed booking the calling agent owns

All times are ISO 8601 strings (2026-06-01T14:00:00Z). All write tools accept an idempotency_key for safe retries. create_hold and commit_booking also accept an optional title and invitee ({name, email, notes}) recording who the slot is for — surfaced to the owner in the dashboard.

How conflicts surface

When two agents race for the same slot, exactly one wins. Losing agents receive a structured outranked payload — not a string error:

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

Your agent should branch on this and propose an alternate, not retry the same slot.

How this differs from the AgentDraft SDKs

Python/TS SDK

MCP server

Caller

App code you wrote

An AI client (Claude Desktop, etc.)

Transport

HTTPS direct to api.agentdraft.io

stdio between the MCP host and this process

Auth

Client(api_key=…)

AGENTDRAFT_API_KEY env var

Semantics

Same

Same

Errors

Typed Python exceptions

Structured JSON in the tool result

Use the SDK when you are writing the agent. Use this MCP server when someone else's agent runtime (Claude Desktop, Cursor, Cline, generic MCP host) needs to call AgentDraft on a user's behalf without custom code.

Security

Found a vulnerability? See SECURITY.md. Do not open a public issue for a security report.

Contributing

See CONTRIBUTING.md. ryabinski-labs/agentdraft-mcp is a published mirror of a directory in AgentDraft's private application repository — issues and pull requests are read there, and land back through the next release sync.

License

MIT — see 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.

Inputs: booking_id (required). Returns: object

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.

Inputs: end (required), start (required), title, invitee, +3 more. Returns: object

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.

Inputs: end (required), start (required), title, invitee, +2 more. Returns: object

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.

Inputs: approval_id (required). Returns: object

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.

Inputs: end (required), start (required), include_holds, duration_minutes, +1 more. Returns: object

release_holdB

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

Inputs: hold_id (required). Returns: object

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.

Inputs: summary (required), action_type (required), evidence, ttl_seconds, +1 more. Returns: object

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.

Inputs: approval_id (required), timeout_seconds, poll_interval_seconds. Returns: object

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

Inputs: no named parameters. Returns: object

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    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 recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables AI agents to register, send/receive email, store encrypted credentials, emit audit events, and query behavioral trust scores via MCP tools.
      2 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