AI agent tools API for LangChain

A LangChain agent can load Tillpad's MCP tools, or call the HTTP API itself. Tillpad isn't a LangChain partner and does not ship a LangChain package. For developers connecting LangChain agents. Pro is $9 a month. Checked October 2026.

MCP server for agents

langchain-mcp-adapters documents MultiServerMCPClient with transport http, a url, and headers sent on every request (the project README). The JavaScript adapter documents the same fields (LangChain MCP docs). Point url at https://tillpad.dev/mcp and set Authorization to Bearer plus the tp_ key.

Use any model you like. Only the connection settings are Tillpad specific. Metered tools still follow the spending cap.

import asyncio
import os
from langchain_mcp_adapters.client import MultiServerMCPClient
from langchain.agents import create_agent

async def main():
    client = MultiServerMCPClient(
        {
            "tillpad": {
                "transport": "http",
                "url": "https://tillpad.dev/mcp",
                "headers": {
                    "Authorization": f"Bearer {os.environ['TILLPAD_API_KEY']}",
                },
            }
        }
    )
    tools = await client.get_tools()
    agent = create_agent("openai:gpt-4.1", tools)
    result = await agent.ainvoke(
        {"messages": "Check the Tillpad budget, then store a fact."}
    )
    print(result)

asyncio.run(main())

HTTP calls for memory and email

If you'd rather call a few routes yourself, here are the memory and inbox calls. PUT /api/memory/facts/:key stores a string. POST /api/memory/search queries a scope. POST /api/inboxes creates a receive-only address. All three need an active Pro plan.

import os
import requests

base = "https://tillpad.dev"
headers = {
    "Authorization": f"Bearer {os.environ['TILLPAD_API_KEY']}",
    "Content-Type": "application/json",
}
requests.put(
    f"{base}/api/memory/facts/preference",
    headers=headers,
    json={"value": "Prefers email before noon."},
)
print(requests.post(
    f"{base}/api/memory/search",
    headers=headers,
    json={"query": "email preference", "scope": "facts", "topK": 5},
).json())
print(requests.post(
    f"{base}/api/inboxes",
    headers=headers,
    json={"localPart": "agent-jobs", "kind": "temporary", "ttlSeconds": 86400},
).json())

Other clients

Questions people ask

Which tools show up from the MCP server?

The tools your key is allowed to use. The server registers 18 tools, including manage_memory, search_documents, index_document, manage_inbox, manage_schedule, get_usage, and estimate_usage. A sub key can omit tools from its allow-list.

Do I have to use the MCP adapter?

No. The HTTP routes above are the same product. Use them from a LangChain tool that calls requests, or from any other HTTP client.