agentdraft-langchain — LangChain tools for AgentDraft
LangChain tools that let an agent book calendars through AgentDraft — the coordination layer for AI scheduling agents — so two agents racing for the same slot resolve to a single deterministic winner instead of double-booking your calendar.
Each tool is a langchain_core.tools.BaseTool: LangChain and
LangGraph consume it directly, CrewAI accepts LangChain tools
natively, and AutoGen uses it through its LangChainToolAdapter.
Install
pip install agentdraft-langchain
Requires Python 3.9+, langchain-core>=0.3, and a valid avs_live_…
agent key from the AgentDraft dashboard.
Quickstart
from agentdraft_langchain import get_agentdraft_tools
# Reads AGENTDRAFT_API_KEY (and optional AGENTDRAFT_BASE_URL) from the env.
tools = get_agentdraft_tools()
# Hand `tools` to any langchain-core-compatible agent. With LangGraph:
from langgraph.prebuilt import create_react_agent
from langchain_openai import ChatOpenAI
agent = create_react_agent(ChatOpenAI(model="gpt-4o"), tools)
agent.invoke({"messages": [("user", "Book me a 30-min call tomorrow at 2pm UTC.")]})
get_agentdraft_tools() returns two tools: agentdraft_get_availability
and a booking tool. By default the booking tool is conflict-aware —
see below.
The tools
| Tool | name |
Purpose |
|---|---|---|
AvailabilityTool |
agentdraft_get_availability |
List the slots open to this agent between two times |
ConflictAwareBookingTool |
agentdraft_commit_booking_safe |
Commit a booking; on a lost race, return guidance instead of raising |
BookingTool |
agentdraft_commit_booking |
Commit a booking; raise ToolException if outranked |
All times are ISO 8601 strings (2026-06-01T14:00:00Z). The booking
tools accept an optional idempotency_key for safe retries.
You can also construct tools directly against an explicit client:
from agentdraft import Client
from agentdraft_langchain import AvailabilityTool, ConflictAwareBookingTool
client = Client(api_key="avs_live_...")
tools = [AvailabilityTool(client=client), ConflictAwareBookingTool(client=client)]
How a lost race surfaces
When two agents race for the same slot, exactly one wins. The booking tools differ only in how the losing agent finds out:
-
ConflictAwareBookingTool(default inget_agentdraft_tools()) returns a plain-language message so the LLM can react:OUTRANKED — your booking was not committed. A higher-priority agent (agent_id=agt_sales, priority=1) already holds this slot (winning_booking_id=bkg_…). Your priority is 3. Do not retry the same slot — call agentdraft_get_availability and propose a different time to your user.An autonomous agent reads this and proposes an alternate slot.
-
BookingToolraiseslangchain_core.tools.ToolExceptionwith the same message. Use it when you want the surrounding framework to handle the failure explicitly.
A lost race is a normal, expected outcome of a coordination layer — not a bug. Prefer the conflict-aware tool for agents that run unattended.
Use with CrewAI / AutoGen
CrewAI accepts LangChain tools directly — pass the list
get_agentdraft_tools() returns to a CrewAI Agent(tools=...). AutoGen
wraps each tool with LangChainToolAdapter from autogen_ext.tools.langchain.
Either way the conflict semantics are identical to the LangChain path.
How this differs from the other AgentDraft packages
agentdraft (SDK) |
agentdraft-langchain |
agentdraft-mcp |
|
|---|---|---|---|
| Caller | App code you wrote | A LangChain-family agent | An MCP host (Claude Desktop, etc.) |
| Surface | Client methods |
BaseTool objects |
MCP tools over stdio |
| Conflict | Conflict exception |
Message or ToolException |
Structured JSON result |
All three wrap the same REST API with the same auth and semantics.
Links
- Protocol spec: https://agentdraft.io/spec
- API docs: https://agentdraft.io/docs
- Python SDK:
agentdraft - Changelog: https://agentdraft.io/changelog
- Source & issues: https://github.com/GipsyChef/agentdraft
Security
Found a vulnerability? See https://agentdraft.io/security — do not open a public issue for a security report.
Contributing
See CONTRIBUTING.md. This package lives inside the
GipsyChef/agentdraft
monorepo under sdks/langchain/.
License
MIT — see https://agentdraft.io/legal/license.
Metadata
Release files for agentdraft-langchain 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| agentdraft_langchain-0.1.0.tar.gz | 8.4 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| agentdraft_langchain-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 16.5 kB
Release files / agentdraft_langchain-0.1.0.tar.gz
| Download URL | agentdraft_langchain-0.1.0.tar.gz |
|---|---|
| Size | 8.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d95417d294d4f505c4cf1f5a307587d4b3b17d485158b5d2e5e24c57f417fc74
|
|
BLAKE2b-256 checksum How to use checksums |
a17a4ddd3dd4b1959f5ace0e7cb94c4517b62f58deba36d51845966816ddf341
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.2.0 CPython/3.12.13
|
Release files / agentdraft_langchain-0.1.0-py3-none-any.whl
| Download URL | agentdraft_langchain-0.1.0-py3-none-any.whl |
|---|---|
| Size | 8.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4f8922c647e56f92ceea1c41b6e0e8f8989d18395e04543e9ff3854e9aa7f0a4
|
|
BLAKE2b-256 checksum How to use checksums |
e4678eca8cae7d66615f6acf2d0425787ce342ae0d05e898766647085e514ddf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.2.0 CPython/3.12.13
|
Security for agentdraft-langchain 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.