Metadata-Version: 2.5
Name: taco-agent
Version: 0.3.15
Summary: TACO — The A2A Construction Open-standard SDK
Project-URL: Homepage, https://github.com/pelles-ai/taco
Project-URL: Documentation, https://pelles-ai.github.io/taco/
Project-URL: Repository, https://github.com/pelles-ai/taco
License-Expression: Apache-2.0
Requires-Python: >=3.10
Requires-Dist: a2a-sdk<2,>=1.0.2
Requires-Dist: protobuf<6,>=5.29.5
Requires-Dist: pydantic>=2.11
Provides-Extra: all
Requires-Dist: a2a-sdk[http-server]<2,>=1.0.2; extra == 'all'
Requires-Dist: fastapi>=0.115; extra == 'all'
Requires-Dist: httpx>=0.27; extra == 'all'
Provides-Extra: client
Requires-Dist: httpx>=0.27; extra == 'client'
Provides-Extra: dev
Requires-Dist: a2a-sdk[http-server]<2,>=1.0.2; extra == 'dev'
Requires-Dist: fastapi>=0.115; extra == 'dev'
Requires-Dist: httpx>=0.27; extra == 'dev'
Requires-Dist: mypy>=1.14; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.24; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Requires-Dist: pyyaml>=6.0; extra == 'dev'
Requires-Dist: ruff>=0.9; extra == 'dev'
Requires-Dist: types-pyyaml>=6.0; extra == 'dev'
Provides-Extra: langgraph
Requires-Dist: langgraph>=0.2; extra == 'langgraph'
Provides-Extra: server
Requires-Dist: a2a-sdk[http-server]<2,>=1.0.2; extra == 'server'
Requires-Dist: fastapi>=0.115; extra == 'server'
Provides-Extra: test
Requires-Dist: a2a-sdk[http-server]<2,>=1.0.2; extra == 'test'
Requires-Dist: fastapi>=0.115; extra == 'test'
Requires-Dist: httpx>=0.27; extra == 'test'
Requires-Dist: pytest-asyncio>=0.24; extra == 'test'
Requires-Dist: pytest>=8.0; extra == 'test'
Requires-Dist: pyyaml>=6.0; extra == 'test'
Description-Content-Type: text/markdown

# taco-agent

The Python SDK for **TACO — The A2A Construction Open-standard**: an open
vocabulary that lets construction AI agents hand work to each other. TACO
adds typed task types, typed data schemas and discovery by trade and CSI
division on top of the [A2A protocol](https://a2a-protocol.org) (Linux
Foundation). Every TACO agent is a standard A2A agent.

```bash
pip install taco-agent[all]
```

## Expose an agent

```python
from taco import ConstructionAgentCard, ConstructionSkill

card = ConstructionAgentCard(
    name="My Mechanical Takeoff Agent",
    trade="mechanical",
    csi_divisions=["22", "23"],
    skills=[
        ConstructionSkill(
            id="generate-bom",
            task_type="takeoff",
            output_schema="bom-v1",
        )
    ],
)

# Serve the agent card for discovery
card.serve(host="0.0.0.0", port=8080)
```

## Discover and call agents

```python
from taco import TacoClient, AgentRegistry, extract_structured_data

registry = AgentRegistry()
await registry.register("http://estimator:8001")
agents = registry.find(trade="mechanical", task_type="estimate")

async with TacoClient(agent_url=agents[0].url) as client:
    task = await client.send_message("estimate", bom_data)
    estimate = extract_structured_data(task.artifacts[0].parts[0])
```

## Learn more

- Documentation: https://taco-protocol.com
- Specification, schemas and task types: https://github.com/pelles-ai/taco/tree/main/spec
- Source and issues: https://github.com/pelles-ai/taco
- Changelog: https://github.com/pelles-ai/taco/blob/main/CHANGELOG.md

Apache 2.0. Initiated by [Pelles](https://pelles.ai).
