Metadata-Version: 2.4
Name: agentcard-adapters
Version: 0.1.0
Summary: AgentCard v1.0 adapters for LangChain, CrewAI, and AutoGen
License: Apache-2.0
Project-URL: Homepage, https://github.com/kwailapt/AgentCard
Project-URL: Repository, https://github.com/kwailapt/AgentCard
Project-URL: Documentation, https://github.com/kwailapt/AgentCard/blob/main/README.md
Project-URL: Bug Tracker, https://github.com/kwailapt/AgentCard/issues
Keywords: agentcard,a2a,agent-to-agent,langchain,crewai,autogen,llm,ai-agent,identity,protocol
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.11
Description-Content-Type: text/markdown
Provides-Extra: langchain
Requires-Dist: langchain-core>=0.1.0; extra == "langchain"
Provides-Extra: crewai
Requires-Dist: crewai>=0.28.0; extra == "crewai"
Provides-Extra: autogen
Requires-Dist: pyautogen>=0.2.0; extra == "autogen"
Provides-Extra: all
Requires-Dist: langchain-core>=0.1.0; extra == "all"
Requires-Dist: crewai>=0.28.0; extra == "all"
Requires-Dist: pyautogen>=0.2.0; extra == "all"
Provides-Extra: dev
Requires-Dist: pytest>=8.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.23; extra == "dev"
Requires-Dist: ruff>=0.4; extra == "dev"
Requires-Dist: mypy>=1.9; extra == "dev"

# agentcard-adapters

> **AgentCard v1.0 adapters for LangChain, CrewAI, AutoGen, and the Aevum PACR runtime.**

[![PyPI](https://img.shields.io/pypi/v/agentcard-adapters.svg)](https://pypi.org/project/agentcard-adapters/)
[![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](https://github.com/kwailapt/AgentCard/blob/main/LICENSE)
[![AgentCard v1.0](https://img.shields.io/badge/AgentCard-v1.0-orange.svg)](https://github.com/kwailapt/AgentCard)

## What is AgentCard?

[AgentCard](https://github.com/kwailapt/AgentCard) is an open standard for machine-readable agent identity and capability declarations in agent-to-agent (A2A) communication. Think of it as HTTP headers for AI agents.

This package provides **bidirectional adapters** between AgentCard and major Python AI frameworks.

## Installation

```bash
# Core (zero dependencies)
pip install agentcard-adapters

# With framework support
pip install agentcard-adapters[langchain]
pip install agentcard-adapters[crewai]
pip install agentcard-adapters[autogen]
pip install agentcard-adapters[all]
```

## Quick Start

### Core Schema (Framework-Independent)

```python
from agentcard_adapters import AgentCard, Capability, Endpoint

card = AgentCard(
    agent_id="01HZQK3P8EMXR9V7T5N2W4J6C0",
    name="DataAnalysisAgent",
    version="1.0.0",
    capabilities=[
        Capability(id="data.analyze", description="Analyze datasets"),
        Capability(id="data.visualize", description="Create charts"),
    ],
    endpoint=Endpoint(protocol="https", url="https://my-agent.example.com/api"),
)
card.validate()  # raises if invalid
print(card.to_json())
```

### LangChain

```python
from agentcard_adapters import tool_to_agentcard, agentcard_to_tool

# LangChain Tool → AgentCard
card = tool_to_agentcard(
    my_tool,
    agent_id="01HZQK3P8EMXR9V7T5N2W4J6C0",
    endpoint_url="https://my-agent.example.com",
)

# AgentCard → LangChain Tool
tool = agentcard_to_tool(card)
```

### CrewAI

```python
from agentcard_adapters import agent_to_agentcard, crew_to_agentcards

# CrewAI Agent → AgentCard
card = agent_to_agentcard(
    researcher,
    agent_id="01HZQK3P8EMXR9V7T5N2W4J6C0",
    endpoint_url="https://my-crew.example.com",
)

# Entire Crew → AgentCard list
cards = crew_to_agentcards(my_crew, base_url="https://my-crew.example.com")
```

### AutoGen

```python
from agentcard_adapters.autogen_adapter import agent_to_agentcard

card = agent_to_agentcard(
    assistant,
    agent_id="01HZQK3P8EMXR9V7T5N2W4J6C0",
    endpoint_url="https://my-autogen.example.com",
)
```

### Aevum PACR Runtime Bridge

```python
from agentcard_adapters import AevumChatModel

# Drop-in replacement for LangChain ChatOpenAI that records
# every LLM call as a PACR record with Landauer cost
model = AevumChatModel(
    base_url="http://localhost:8889",
    model="qwen-plus",
)
response = model.invoke("What is PACR?")
print(response.pacr_causal_id)  # real CausalId from the DAG
```

## IETF Standards

This package implements the schemas defined in two IETF Internet-Drafts:

- [draft-aevum-agentcard-00](https://datatracker.ietf.org/doc/draft-aevum-agentcard/) — Agent identity & capability
- [draft-aevum-causal-intervention-record-00](https://datatracker.ietf.org/doc/draft-aevum-causal-intervention-record/) — PACR wire format

## Related Packages

| Package | Description |
|---------|-------------|
| [`agentcard-mcp`](https://pypi.org/project/agentcard-mcp/) | MCP server for Claude Desktop |
| [`agentcard`](https://www.npmjs.com/package/agentcard) | TypeScript/Node.js implementation |

## License

Apache-2.0. See [NOTICE](https://github.com/kwailapt/AgentCard/blob/main/NOTICE) for patent non-reservation.
