Skip to main content

postbridge-langchain

Drop-in PostBridge tools for LangChain and LangGraph — send physical letters to US, France, UK, Canada, and Germany from any LangChain agent, chain, or LangGraph node.

Install

# Core — tools + args validation only
pip install postbridge-langchain

# With AgentExecutor + OpenAI chat support
pip install "postbridge-langchain[agents]"

# With LangGraph
pip install "postbridge-langchain[langgraph]"

Quickstart — llm.bind_tools()

from langchain_openai import ChatOpenAI
from postbridge_langchain import postbridge_tools

llm = ChatOpenAI(model="gpt-4o-mini")
tools = postbridge_tools()                       # all 8 tools
llm_with_tools = llm.bind_tools(tools)

response = llm_with_tools.invoke("Send a letter to Paris saying hello")
# response.tool_calls → [{"name": "send_letter", "args": {...}}, ...]

Quickstart — LangChain 1.x create_agent

from langchain.agents import create_agent
from langchain_openai import ChatOpenAI
from postbridge_langchain import postbridge_tools

agent = create_agent(
    model=ChatOpenAI(model="gpt-4o-mini"),
    tools=postbridge_tools(),
    system_prompt="You are a postal assistant. Use tools to send letters.",
)

result = agent.invoke({"messages": [("human", "Send a letter to Paris saying hello")]})
print(result["messages"][-1].content)

Quickstart — LangChain 0.3.x (AgentExecutor, legacy)

from langchain.agents import AgentExecutor, create_tool_calling_agent
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
from postbridge_langchain import postbridge_tools

llm = ChatOpenAI(model="gpt-4o-mini")
tools = postbridge_tools()
prompt = ChatPromptTemplate.from_messages([
    ("system", "You are a postal assistant..."),
    ("human", "{input}"),
    ("placeholder", "{agent_scratchpad}"),
])
agent = create_tool_calling_agent(llm, tools, prompt)
executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
result = executor.invoke({"input": "Send a letter to Paris..."})

Quickstart — LangGraph

from langchain_openai import ChatOpenAI
from langgraph.prebuilt import create_react_agent
from postbridge_langchain import postbridge_tools

llm = ChatOpenAI(model="gpt-4o-mini")
graph = create_react_agent(llm, tools=postbridge_tools())

result = graph.invoke({"messages": [("human", "Send a letter to Paris saying hello")]})

Tools available

Tool HTTP Purpose
list_services GET /api/services/{country} Discover services per country
quote_letter POST /api/quote Price a letter
send_letter POST /api/send Mail it
track_letter GET /api/track/{letter_id} Live status
get_proof GET /api/proof/{letter_id} Signed PostalProof VC
get_balance GET /api/balance Wallet + ledger
negotiate_pricing POST /api/anp/offer ANP tiered offer
accept_offer POST /api/anp/accept Lock in tier

Subset selection

# Read-only agent
tools = postbridge_tools(only=["list_services", "quote_letter", "track_letter", "get_proof"])

# Send-only dispatcher
tools = postbridge_tools(only=["send_letter", "track_letter"])

# Full ANP flow
tools = postbridge_tools(only=["negotiate_pricing", "accept_offer", "send_letter"])

Async support

Every tool implements both _run (sync) and _arun (async), so LangGraph's async nodes and LangChain's ainvoke work out of the box:

result = await llm_with_tools.ainvoke("Quote a letter to Berlin")

Authentication

Tools call https://api.postbridge.ai and read POSTBRIDGE_API_KEY from the environment. Three ways to get a key:

1. Auto-provision (no signup):

curl -X POST https://api.postbridge.ai/auth/agent \
  -H 'Content-Type: application/json' \
  -d '{"agent_id": "my-agent", "agent_name": "My LangChain Agent"}'

2. Register with email: postbridge.ai/developers.html

3. Pay-per-request with x402 USDC (no API key needed): see postbridge.ai.

How it works

Every tool is a langchain_core.tools.BaseTool subclass generated from the shared tools.json catalog that also powers PostBridge's OpenAI / Anthropic / Gemini / Mistral adapters. JSON Schema → Pydantic args_schema conversion catches bad inputs before they hit the API.

Tool execution delegates to the shared dispatcher.execute() — one HTTP path for all provider integrations, with path-param resolution, auth injection, and error surfacing.

Design rules (enforced by the API)

  • Rate-table pricing — no LLM-estimated prices
  • API-validated addresses — no LLM-composed addresses
  • Recipient-country routing — postal service matches the destination
  • Digital-only proof — certified-mail receipts are webhook/API/email
  • Pricing confidentiality — internal pricing fields scrubbed from every response

Related

Metadata

Release files for postbridge-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)

Source distribution for postbridge-langchain 0.1.0
File Size Uploaded
postbridge_langchain-0.1.0.tar.gz 5.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for postbridge-langchain 0.1.0
File Interpreter ABI Platform
postbridge_langchain-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 10.9 kB

Release files / postbridge_langchain-0.1.0.tar.gz

Download URL postbridge_langchain-0.1.0.tar.gz
Size 5.2 kB
Tags Source
SHA-256 checksum
How to use checksums
dcfd6929bb91a930bf57e523fcd7e02209c1b24adf71ae8adf45030b88f8b361
BLAKE2b-256 checksum
How to use checksums
6cb40776c8e77c9f99b3480efebf5a1a424b4e44dc59c27194b5adfa784549b0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.9

Release files / postbridge_langchain-0.1.0-py3-none-any.whl

Download URL postbridge_langchain-0.1.0-py3-none-any.whl
Size 5.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
27e816298efc7fe28c7b713286b44e323877616e790a10670a82f4fdb411ab78
BLAKE2b-256 checksum
How to use checksums
5d951beb4c7bc619c3f26f8be6c3f4ac3306b55a8f1549047e27bd1327e7df96
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.9

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page