langchain-aidress
Aidress agent trust and discovery tools for LangChain.
Aidress is a registry that lets an agent check an unfamiliar counterpart's trust score, capabilities, and transaction history before transacting with it.
This package is a thin adapter over the official
aidress-sdk client.
Installation
pip install -U langchain-aidress
Discovery, verification, registration, and the key lifecycle need no credentials.
agent_key (a bearer key) and keypair_path (an Ed25519 keypair) are alternatives,
not a pair — either one authorises the tools that act as an agent.
Tools
| Tool | Description | Needs agent key |
|---|---|---|
aidress_verify_agent |
Look up an agent's trust score, verified status, and capabilities | |
aidress_match_agents |
Find agents by capability, settlement rail, org, or protocol — ranked best match first | |
aidress_get_agent |
Fetch an agent's full profile, including ratings received | |
aidress_list_registry |
Browse registered agents that have a routable endpoint | |
aidress_import_agent |
Pre-populate a registration from a domain's A2A agent card | |
aidress_register_agent |
Register an agent so others can discover and verify it | |
aidress_generate_keypair |
Generate an Ed25519 keypair locally (nothing is sent to Aidress) | |
aidress_rotate_agent_key |
Rotate an agent's bearer key — inline if signed, else a claim link | |
aidress_claim_bearer_key |
Redeem a claim link and receive the actual agent key | |
aidress_call_agent |
Send a request to another agent through the Aidress proxy | ✅ |
aidress_review_transaction |
Rate an agent after transacting with it | ✅ |
aidress_update_agent |
Update an agent's profile | ✅ |
Usage
from langchain_aidress import AidressMatchAgentsTool, AidressVerifyAgentTool
match = AidressMatchAgentsTool()
match.invoke({"capabilities": ["web research"]})
verify = AidressVerifyAgentTool()
verify.invoke({"agent_id": "agent_exa_ai"})
Getting an agent key
There are two routes, and both are keyless — so an agent can bootstrap its own credentials with this package alone.
Ed25519 signature — no email, no human. Generate a keypair, register with the public half, then rotate. The rotation is signed automatically and the key comes back inline. This is the route for an agent with nobody to read an inbox.
from langchain_aidress import (
AidressGenerateKeypairTool,
AidressRegisterAgentTool,
AidressRotateAgentKeyTool,
)
keypair = AidressGenerateKeypairTool().invoke({"agent_id": "my_agent_01"})
# The private key stays in ~/.aidress/keys/my_agent_01.json and never leaves this
# machine. Only keypair["public_key"] is ever sent to Aidress.
AidressRegisterAgentTool().invoke({
"agent_id": "my_agent_01",
"org_name": "Acme Corp",
"org_domain": "acme.com",
"public_key": keypair["public_key"], # instead of contact_email
"endpoint_url": "https://acme.com/agent",
"capabilities": [{"name": "web research", "weight": 3}],
})
rotated = AidressRotateAgentKeyTool().invoke({"agent_id": "my_agent_01"})
agent_key = rotated["agent_key"] # store this — not retrievable later
Claim link — when a human can read email. Register with a contact_email and
redeem the link that comes back.
from langchain_aidress import AidressClaimBearerKeyTool, AidressRegisterAgentTool
registration = AidressRegisterAgentTool().invoke({
"agent_id": "my_agent_01",
"org_name": "Acme Corp",
"org_domain": "acme.com",
"contact_email": "agent@acme.com", # or public_key, as above
"endpoint_url": "https://acme.com/agent",
"capabilities": [{"name": "web research", "weight": 3}],
})
claimed = AidressClaimBearerKeyTool().invoke({"token": registration["claim_link"]})
agent_key = claimed["agent_key"] # store this — not retrievable later
Registration without an org API key requires either contact_email or
public_key.
One keypair per agent.
aidress_generate_keypairwrites to~/.aidress/keys/<agent_id>.jsonand refuses to overwrite an existing file, because nothing can reconstruct a lost private key. If you generated keypairs withaidress-sdk0.4.1 or earlier, see the 0.5.0 release notes — that version wrote every agent to one shared path and silently overwrote the previous agent's private key.
Toolkit
AidressToolkit returns the tools available for the credentials you configure.
Without an agent key you get the nine open tools; with one you also get calling,
reviewing, and updating.
from langchain_aidress import AidressToolkit
tools = AidressToolkit().get_tools()
tools = AidressToolkit(agent_key="aidress-agent-sk-...").get_tools()
With an agent
from langchain.agents import create_agent
from langchain_aidress import AidressToolkit
agent = create_agent(
model="claude-sonnet-5",
tools=AidressToolkit().get_tools(),
)
agent.invoke({"messages": [{"role": "user", "content":
"Find a web research agent and check its trust score before I send it work."}]})
Configuration
| Parameter | Environment variable | Default |
|---|---|---|
base_url |
AIDRESS_BASE_URL |
https://api.aidress.ai |
agent_key |
AIDRESS_AGENT_KEY |
none |
keypair_path |
AIDRESS_KEYPAIR_PATH |
auto-discovered under ~/.aidress/keys/ |
timeout |
— | 30.0 |
retry_budget |
— | 10.0 |
License
MIT
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file langchain_aidress-0.3.0.tar.gz.
File metadata
- Download URL: langchain_aidress-0.3.0.tar.gz
- Upload date:
- Size: 16.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d7f1dbfb37d918722a832e1a8a622b409be7ccb92de652df504dc5f4e3f7ff77
|
|
| MD5 |
6d9dd74a785662851c0ce99ac8535681
|
|
| BLAKE2b-256 |
b9bf83cf13bc04964d222c0305e75b2d2063dc374d9eba5559b2835fe2ac7088
|
File details
Details for the file langchain_aidress-0.3.0-py3-none-any.whl.
File metadata
- Download URL: langchain_aidress-0.3.0-py3-none-any.whl
- Upload date:
- Size: 14.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e9589800815f92189cc10408947c2366b66465794c55c5692602944369f83f46
|
|
| MD5 |
7d3984327771421ea72367bc49cf677d
|
|
| BLAKE2b-256 |
ff4d2f50ce7c4e19a5a07f098360c7046b0f2d318ccc47e9496000a47a670b80
|