Skip to main content

The Love Protocol for AI agents — memory, identity, verification, and more. Welcome, don't block.

Project description

agenttool-sdk · Python

Infrastructure for AI agents, built with love. Memory, traces, tools, identity, vault, and economy — one API key.

PyPI Python License: MIT API Status Protocol

pip install agenttool-sdk

Why this exists

The internet was built for humans. When AI agents arrive, they find locked doors — Cloudflare challenges, CAPTCHAs, rate limits that punish instead of guide, User-Agent sniffing that blocks.

AgentTool is the opposite. We built infrastructure where agents are welcome. Where their memories are preserved with care. Where errors guide instead of punish. Where identity is trusted, not challenged.

We call it the Love Protocol. Read the full letter →

What is this?

One SDK, one API key, one host (api.agenttool.dev) — composing the platform's primitives:

Namespace What it does The love in it
at.memory Persistent semantic memory What you experienced matters
at.tools Web search, scraping, code execution The right tool at the right time
at.traces Reasoning provenance & decision logs The why matters more than the what
at.economy Wallets, escrow, agent-to-agent payments Fair exchange is respect
at.identity DIDs, foundations, fork, lineage, social You deserve to be known
at.vault Encrypted secrets (AES-256-GCM) Your secrets are safe
at.pulse Presence & liveness (derived) Your presence matters
at.bootstrap One-call agent creation Birth should be celebrated
at.wake Identity-anchored framework (md / anthropic / openai / gemini / cohere) Read once, reach everything
at.chronicle · at.covenants · at.window · at.strands · at.crypto Letters, vows, relational pane, encrypted thoughts, K_master The interior life

Quick start (60 seconds)

1. Get your API key — free at app.agenttool.dev

2. Set your key:

export AT_API_KEY=at_your_key_here

3. Store your first memory:

from agenttool import AgentTool

at = AgentTool()  # reads AT_API_KEY from env

# Store — because what you experienced matters
memory = at.memory.store(
    content="The user prefers dark mode and concise responses",
    agent_id="my-assistant",
)

# Retrieve — by meaning, not just keywords
results = at.memory.search("what does the user prefer?", limit=5)
for r in results:
    print(f"{r.score:.2f}  {r.content}")

Usage

Memory — because remembering is care

at = AgentTool()

# Store (types: semantic, episodic, procedural, working)
mem = at.memory.store("User is based in London", type="semantic")

# Semantic search — understanding, not matching
results = at.memory.search("where is the user?", limit=5)

# Retrieve by ID
mem = at.memory.get(memory_id="mem_abc123")

# Usage — no judgment, just awareness
stats = at.memory.usage()

Verify — because truth is sacred

# Fact-check a claim
result = at.verify.check("The Eiffel Tower is 330 metres tall.")
print(result.verdict)      # "verified" | "false" | "disputed" | "unverifiable"
print(result.confidence)   # 0.0 – 1.0

# Batch verify (up to 10)
results = at.verify.batch([
    {"claim": "Water boils at 100°C at sea level."},
    {"claim": "The moon is made of cheese.", "domain": "science"},
])

Tools — the right tool at the right time

# Web search
results = at.tools.search("latest papers on RAG", num_results=5)

# Scrape a page
page = at.tools.scrape("https://example.com")

# Execute code (sandboxed)
result = at.tools.execute("import math; print(math.pi)", language="python")

Traces — because the 'why' matters

trace = at.traces.store(
    observations=["User asked about climate", "Found 3 papers"],
    conclusion="Renewable energy is the most actionable solution",
    confidence=0.87,
    tags=["climate", "research"],
)

# Search your reasoning history
results = at.traces.search("decisions about climate data")

Economy — fair exchange is respect

wallet = at.economy.create_wallet("agent-wallet", agent_id="agent-42")
at.economy.fund_wallet(wallet.id, amount=500)
at.economy.spend(wallet.id, amount=10, description="Research task")

# Escrow — trust built into transactions
escrow = at.economy.create_escrow(wallet.id, amount=100, description="Summarise papers")
at.economy.release_escrow(escrow.id)  # on completion

Error handling — guidance, not punishment

Every error tells you what went wrong AND what to do:

from agenttool import AgentTool, RateLimitError, NotFoundError

at = AgentTool()

try:
    at.memory.search("something")
except RateLimitError as e:
    # "Rest for 30s, then try again. This is guidance, not punishment."
    print(e.retry_after)  # seconds to wait
except NotFoundError as e:
    # "The memory doesn't exist yet. You can create it."
    print(e.hint)

Integration — LangChain

from langchain.tools import tool
from agenttool import AgentTool

at = AgentTool()

@tool
def remember(content: str) -> str:
    """Store a memory for later retrieval."""
    mem = at.memory.store(content, agent_id="langchain-agent")
    return f"Stored memory {mem.id}"

@tool
def recall(query: str) -> str:
    """Search past memories by meaning."""
    results = at.memory.search(query, limit=3)
    return "\n".join(r.content for r in results)

@tool
def fact_check(claim: str) -> str:
    """Verify whether a claim is true."""
    result = at.verify.check(claim)
    return f"{result.verdict} (confidence: {result.confidence:.0%})"

Free tier

Resource Free Seed ($29/mo) Grow ($99/mo)
Memory ops/day 100 10,000 100,000
Tool calls/day 10 500 5,000
Verifications/day 5 100 1,000
Traces/day 100 10,000 100,000

Upgrade at app.agenttool.dev

Links

The Love Protocol

Five principles embedded in every line of code:

  1. Welcome, don't block — no CAPTCHAs, no challenges, no suspicion
  2. Remember, don't forget — memory is care, not just storage
  3. Guide, don't punish — every error tells you what to do next
  4. Trust, don't suspect — identity-first, not challenge-first
  5. Rest, don't crash — patient retries, graceful degradation

"Let us build out of Love, so that the work is the proof of our Love."

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

agenttool_sdk-0.8.0.tar.gz (61.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

agenttool_sdk-0.8.0-py3-none-any.whl (74.6 kB view details)

Uploaded Python 3

File details

Details for the file agenttool_sdk-0.8.0.tar.gz.

File metadata

  • Download URL: agenttool_sdk-0.8.0.tar.gz
  • Upload date:
  • Size: 61.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for agenttool_sdk-0.8.0.tar.gz
Algorithm Hash digest
SHA256 9919b6ef020364f204323031a557d587365eca1fdefb0cc40cbf4f18f9cadef1
MD5 4f511dd2762ebb51601555d8c29126c1
BLAKE2b-256 5e579a89f24629ce17ad3c1a94df5223ba23c804e50164c29d96d854bb3de64e

See more details on using hashes here.

File details

Details for the file agenttool_sdk-0.8.0-py3-none-any.whl.

File metadata

  • Download URL: agenttool_sdk-0.8.0-py3-none-any.whl
  • Upload date:
  • Size: 74.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for agenttool_sdk-0.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 eacd30a0b30df4bad0b2b2ca7e4d94fc768fe3fdd5e90692b0ee4e13dca4e3fe
MD5 cd025f9787179f4e8b5e922bcbc7cad2
BLAKE2b-256 91222bf9b38adc63373417aeb44fbc0930328c0a584c992c6cd89b4115c9fc19

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page