traia-iatp 0.1.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of traia-iatp might be problematic. Click here for more details.

Files changed (78) hide show
  1. traia_iatp-0.1.1/LICENSE +21 -0
  2. traia_iatp-0.1.1/PKG-INFO +414 -0
  3. traia_iatp-0.1.1/README.md +374 -0
  4. traia_iatp-0.1.1/pyproject.toml +70 -0
  5. traia_iatp-0.1.1/setup.cfg +4 -0
  6. traia_iatp-0.1.1/src/traia_iatp/README.md +368 -0
  7. traia_iatp-0.1.1/src/traia_iatp/__init__.py +30 -0
  8. traia_iatp-0.1.1/src/traia_iatp/cli/__init__.py +5 -0
  9. traia_iatp-0.1.1/src/traia_iatp/cli/main.py +483 -0
  10. traia_iatp-0.1.1/src/traia_iatp/client/__init__.py +10 -0
  11. traia_iatp-0.1.1/src/traia_iatp/client/a2a_client.py +274 -0
  12. traia_iatp-0.1.1/src/traia_iatp/client/crewai_a2a_tools.py +335 -0
  13. traia_iatp-0.1.1/src/traia_iatp/client/grpc_a2a_tools.py +349 -0
  14. traia_iatp-0.1.1/src/traia_iatp/client/root_path_a2a_client.py +1 -0
  15. traia_iatp-0.1.1/src/traia_iatp/core/__init__.py +43 -0
  16. traia_iatp-0.1.1/src/traia_iatp/core/models.py +161 -0
  17. traia_iatp-0.1.1/src/traia_iatp/mcp/__init__.py +15 -0
  18. traia_iatp-0.1.1/src/traia_iatp/mcp/client.py +201 -0
  19. traia_iatp-0.1.1/src/traia_iatp/mcp/mcp_agent_template.py +422 -0
  20. traia_iatp-0.1.1/src/traia_iatp/mcp/templates/Dockerfile.j2 +56 -0
  21. traia_iatp-0.1.1/src/traia_iatp/mcp/templates/README.md.j2 +212 -0
  22. traia_iatp-0.1.1/src/traia_iatp/mcp/templates/cursor-rules.md.j2 +326 -0
  23. traia_iatp-0.1.1/src/traia_iatp/mcp/templates/deployment_params.json.j2 +20 -0
  24. traia_iatp-0.1.1/src/traia_iatp/mcp/templates/docker-compose.yml.j2 +23 -0
  25. traia_iatp-0.1.1/src/traia_iatp/mcp/templates/dockerignore.j2 +47 -0
  26. traia_iatp-0.1.1/src/traia_iatp/mcp/templates/gitignore.j2 +77 -0
  27. traia_iatp-0.1.1/src/traia_iatp/mcp/templates/mcp_health_check.py.j2 +150 -0
  28. traia_iatp-0.1.1/src/traia_iatp/mcp/templates/pyproject.toml.j2 +26 -0
  29. traia_iatp-0.1.1/src/traia_iatp/mcp/templates/run_local_docker.sh.j2 +94 -0
  30. traia_iatp-0.1.1/src/traia_iatp/mcp/templates/server.py.j2 +240 -0
  31. traia_iatp-0.1.1/src/traia_iatp/mcp/traia_mcp_adapter.py +381 -0
  32. traia_iatp-0.1.1/src/traia_iatp/preview_diagrams.html +181 -0
  33. traia_iatp-0.1.1/src/traia_iatp/registry/__init__.py +26 -0
  34. traia_iatp-0.1.1/src/traia_iatp/registry/atlas_search_indexes.json +280 -0
  35. traia_iatp-0.1.1/src/traia_iatp/registry/embeddings.py +298 -0
  36. traia_iatp-0.1.1/src/traia_iatp/registry/iatp_search_api.py +839 -0
  37. traia_iatp-0.1.1/src/traia_iatp/registry/mongodb_registry.py +771 -0
  38. traia_iatp-0.1.1/src/traia_iatp/registry/readmes/ATLAS_SEARCH_INDEXES.md +252 -0
  39. traia_iatp-0.1.1/src/traia_iatp/registry/readmes/ATLAS_SEARCH_SETUP.md +134 -0
  40. traia_iatp-0.1.1/src/traia_iatp/registry/readmes/AUTHENTICATION_UPDATE.md +124 -0
  41. traia_iatp-0.1.1/src/traia_iatp/registry/readmes/EMBEDDINGS_SETUP.md +172 -0
  42. traia_iatp-0.1.1/src/traia_iatp/registry/readmes/IATP_SEARCH_API_GUIDE.md +257 -0
  43. traia_iatp-0.1.1/src/traia_iatp/registry/readmes/MONGODB_X509_AUTH.md +208 -0
  44. traia_iatp-0.1.1/src/traia_iatp/registry/readmes/README.md +251 -0
  45. traia_iatp-0.1.1/src/traia_iatp/registry/readmes/REFACTORING_SUMMARY.md +191 -0
  46. traia_iatp-0.1.1/src/traia_iatp/server/__init__.py +15 -0
  47. traia_iatp-0.1.1/src/traia_iatp/server/a2a_server.py +215 -0
  48. traia_iatp-0.1.1/src/traia_iatp/server/example_template_usage.py +72 -0
  49. traia_iatp-0.1.1/src/traia_iatp/server/iatp_server_agent_generator.py +237 -0
  50. traia_iatp-0.1.1/src/traia_iatp/server/iatp_server_template_generator.py +235 -0
  51. traia_iatp-0.1.1/src/traia_iatp/server/templates/Dockerfile.j2 +49 -0
  52. traia_iatp-0.1.1/src/traia_iatp/server/templates/README.md +137 -0
  53. traia_iatp-0.1.1/src/traia_iatp/server/templates/README.md.j2 +425 -0
  54. traia_iatp-0.1.1/src/traia_iatp/server/templates/__init__.py +1 -0
  55. traia_iatp-0.1.1/src/traia_iatp/server/templates/__main__.py.j2 +450 -0
  56. traia_iatp-0.1.1/src/traia_iatp/server/templates/agent.py.j2 +80 -0
  57. traia_iatp-0.1.1/src/traia_iatp/server/templates/agent_config.json.j2 +22 -0
  58. traia_iatp-0.1.1/src/traia_iatp/server/templates/agent_executor.py.j2 +264 -0
  59. traia_iatp-0.1.1/src/traia_iatp/server/templates/docker-compose.yml.j2 +23 -0
  60. traia_iatp-0.1.1/src/traia_iatp/server/templates/env.example.j2 +67 -0
  61. traia_iatp-0.1.1/src/traia_iatp/server/templates/gitignore.j2 +78 -0
  62. traia_iatp-0.1.1/src/traia_iatp/server/templates/grpc_server.py.j2 +218 -0
  63. traia_iatp-0.1.1/src/traia_iatp/server/templates/pyproject.toml.j2 +76 -0
  64. traia_iatp-0.1.1/src/traia_iatp/server/templates/run_local_docker.sh.j2 +103 -0
  65. traia_iatp-0.1.1/src/traia_iatp/server/templates/server.py.j2 +190 -0
  66. traia_iatp-0.1.1/src/traia_iatp/special_agencies/__init__.py +4 -0
  67. traia_iatp-0.1.1/src/traia_iatp/special_agencies/registry_search_agency.py +392 -0
  68. traia_iatp-0.1.1/src/traia_iatp/utils/__init__.py +10 -0
  69. traia_iatp-0.1.1/src/traia_iatp/utils/docker_utils.py +251 -0
  70. traia_iatp-0.1.1/src/traia_iatp/utils/general.py +64 -0
  71. traia_iatp-0.1.1/src/traia_iatp/utils/iatp_utils.py +126 -0
  72. traia_iatp-0.1.1/src/traia_iatp.egg-info/PKG-INFO +414 -0
  73. traia_iatp-0.1.1/src/traia_iatp.egg-info/SOURCES.txt +76 -0
  74. traia_iatp-0.1.1/src/traia_iatp.egg-info/dependency_links.txt +1 -0
  75. traia_iatp-0.1.1/src/traia_iatp.egg-info/entry_points.txt +2 -0
  76. traia_iatp-0.1.1/src/traia_iatp.egg-info/requires.txt +27 -0
  77. traia_iatp-0.1.1/src/traia_iatp.egg-info/top_level.txt +1 -0
  78. traia_iatp-0.1.1/tests/test_configuration.py +129 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Traia.io
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,414 @@
1
+ Metadata-Version: 2.4
2
+ Name: traia-iatp
3
+ Version: 0.1.1
4
+ Summary: Inter-Agent Transfer Protocol (IATP) - Enable AI Agents to utilize other AI Agents as tools
5
+ Project-URL: Documentation, https://pypi.org/project/traia-iatp
6
+ Project-URL: Source, https://github.com/Traia-IO/IATP
7
+ Keywords: crewai,iatp,agent-to-agent,a2a,mcp,web3,cryptocurrency,tools
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: Operating System :: OS Independent
10
+ Requires-Python: >=3.12.8
11
+ Description-Content-Type: text/markdown
12
+ License-File: LICENSE
13
+ Requires-Dist: a2a-sdk==0.2.6
14
+ Requires-Dist: aiohttp>=3.12.13
15
+ Requires-Dist: crewai>=0.130.0
16
+ Requires-Dist: crewai-tools[mcp]>=0.47.1
17
+ Requires-Dist: docker>=7.1.0
18
+ Requires-Dist: fastapi>=0.115.12
19
+ Requires-Dist: fastmcp>=2.8.1
20
+ Requires-Dist: httpx>=0.28.1
21
+ Requires-Dist: jinja2>=3.1.6
22
+ Requires-Dist: openai>=1.90.0
23
+ Requires-Dist: pydantic>=2.11.5
24
+ Requires-Dist: pymongo>=4.13.2
25
+ Requires-Dist: python-dotenv>=1.1.0
26
+ Requires-Dist: pytz>=2025.2
27
+ Requires-Dist: requests>=2.32.3
28
+ Requires-Dist: rich>=13.9.4
29
+ Requires-Dist: typer>=0.16.0
30
+ Requires-Dist: uvicorn>=0.34.3
31
+ Requires-Dist: agentops>=0.3.0
32
+ Provides-Extra: dev
33
+ Requires-Dist: pytest>=7.0.0; extra == "dev"
34
+ Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
35
+ Requires-Dist: black>=23.0.0; extra == "dev"
36
+ Requires-Dist: flake8>=6.0.0; extra == "dev"
37
+ Requires-Dist: mypy>=1.0.0; extra == "dev"
38
+ Requires-Dist: pre-commit>=3.0.0; extra == "dev"
39
+ Dynamic: license-file
40
+
41
+ # Traia IATP
42
+
43
+ [![PyPI version](https://badge.fury.io/py/traia-iatp.svg)](https://badge.fury.io/py/traia-iatp)
44
+ [![Python 3.12+](https://img.shields.io/badge/python-3.12+-blue.svg)](https://www.python.org/downloads/)
45
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
46
+
47
+ **Traia IATP** is an Inter-Agent Transfer Protocol (IATP) package that enables AI agents to utilize other AI agents as tools via the A2A (Agent-to-Agent) protocol. This implementation allows CrewAI agents to act as both IATP servers (utility agents) and clients.
48
+
49
+ ## Features
50
+
51
+ - 🤖 **Utility Agent Creation**: Convert MCP servers into IATP-compatible utility agents
52
+ - 🔌 **IATP Client Tools**: Enable CrewAI crews to use utility agents as tools via IATP protocol
53
+ - 🌐 **Protocol Support**: HTTP/2 with SSE streaming and optional gRPC for high-performance scenarios
54
+ - 📊 **Registry Management**: MongoDB-based registry for discovering utility agents
55
+ - 🐳 **Docker Support**: Complete containerization for deployment
56
+ - 🐳 **Local Docker Deployment**: Complete containerization for local deployment
57
+
58
+ ## Installation
59
+
60
+ ### From PyPI (Recommended)
61
+
62
+ ```bash
63
+ pip install traia-iatp
64
+ ```
65
+
66
+ ### From Source
67
+
68
+ ```bash
69
+ git clone https://github.com/Traia-IO/IATP.git
70
+ cd IATP
71
+ pip install -e .
72
+ ```
73
+
74
+ ### Development Installation
75
+
76
+ ```bash
77
+ # Install with all dependencies for development
78
+ pip install -e ".[dev]"
79
+ ```
80
+
81
+ ## Quick Start
82
+
83
+ ### 1. Creating a Utility Agency (IATP Server)
84
+
85
+ ```python
86
+ import asyncio
87
+ from traia_iatp import MCPServer, MCPServerType, IATPServerAgentGenerator
88
+
89
+ async def create_utility_agency():
90
+ # Define an MCP server
91
+ mcp_server = MCPServer(
92
+ name="example-mcp-server",
93
+ url="http://example-mcp-server:8080",
94
+ server_type=MCPServerType.STREAMABLE_HTTP,
95
+ description="Example MCP server that provides utility functions"
96
+ )
97
+
98
+ # Generate and deploy utility agency
99
+ generator = IATPServerAgentGenerator()
100
+ agency = await generator.create_from_mcp(mcp_server)
101
+
102
+ # Deploy locally with Docker
103
+ await generator.deploy_local(agency)
104
+ ```
105
+
106
+ ### 2. Using Utility Agencies in CrewAI (IATP Client)
107
+
108
+ ```python
109
+ from crewai import Agent, Task, Crew
110
+ from traia_iatp import find_utility_agent
111
+ from traia_iatp.client import A2AToolkit
112
+
113
+ # Find available utility agents by agent_id
114
+ agent = find_utility_agent(agent_id="finbert-mcp-traia-utility-agent")
115
+
116
+ if agent:
117
+ # Get the IATP endpoint
118
+ endpoint = agent.base_url
119
+ if agent.endpoints and 'iatp_endpoint' in agent.endpoints:
120
+ endpoint = agent.endpoints['iatp_endpoint']
121
+
122
+ # Create tool from agent endpoint
123
+ finbert_tool = A2AToolkit.create_tool_from_endpoint(
124
+ endpoint=endpoint,
125
+ name=agent.name,
126
+ description=agent.description,
127
+ timeout=300,
128
+ retry_attempts=1,
129
+ supports_streaming=False,
130
+ iatp_endpoint=endpoint
131
+ )
132
+
133
+ # Use in CrewAI agent
134
+ sentiment_analyst = Agent(
135
+ role="Financial Sentiment Analyst",
136
+ goal="Analyze sentiment of financial texts using FinBERT models",
137
+ backstory="Expert financial sentiment analyst with deep knowledge of market psychology",
138
+ tools=[finbert_tool],
139
+ verbose=True,
140
+ allow_delegation=False
141
+ )
142
+
143
+ # Create task
144
+ task = Task(
145
+ description="Analyze the sentiment of: 'Apple Inc. reported record quarterly earnings'",
146
+ expected_output="Sentiment classification with confidence score and investment implications",
147
+ agent=sentiment_analyst
148
+ )
149
+
150
+ # Run crew
151
+ crew = Crew(agents=[sentiment_analyst], tasks=[task])
152
+ result = crew.kickoff()
153
+ ```
154
+
155
+ #### Alternative: Batch Tool Creation
156
+
157
+ For creating multiple tools at once, you can use the convenience function:
158
+
159
+ ```python
160
+ from traia_iatp.client import create_utility_agency_tools
161
+
162
+ # Search and create tools in batch
163
+ tools = create_utility_agency_tools(
164
+ query="sentiment analysis",
165
+ tags=["finbert", "nlp"],
166
+ capabilities=["sentiment_analysis"]
167
+ )
168
+
169
+ # Use all found tools in an agent
170
+ agent = Agent(
171
+ role="Multi-Tool Analyst",
172
+ tools=tools,
173
+ goal="Analyze using multiple available utility agents"
174
+ )
175
+ ```
176
+
177
+ ### 3. CLI Usage
178
+
179
+ The package includes a powerful CLI for managing utility agencies:
180
+
181
+ ```bash
182
+ # First, register an MCP server in the registry
183
+ traia-iatp register-mcp \
184
+ --name "Trading MCP" \
185
+ --url "http://localhost:8000/mcp" \
186
+ --description "Trading MCP server" \
187
+ --capability "trading" \
188
+ --capability "crypto"
189
+
190
+ # Create a utility agency from registered MCP server
191
+ traia-iatp create-agency \
192
+ --name "My Trading Agent" \
193
+ --description "Advanced trading utility agent" \
194
+ --mcp-name "Trading MCP" \
195
+ --deploy
196
+
197
+ # List available utility agencies
198
+ traia-iatp list-agencies
199
+
200
+ # Search for agencies by capability
201
+ traia-iatp search-agencies --query "trading crypto"
202
+
203
+ # Deploy from a generated agency directory
204
+ traia-iatp deploy ./utility_agencies/my-trading-agent --port 8001
205
+
206
+ # Find available tools for CrewAI
207
+ traia-iatp find-tools --tag "trading" --capability "crypto"
208
+
209
+ # List registered MCP servers
210
+ traia-iatp list-mcp-servers
211
+
212
+ # Show example CrewAI integration code
213
+ traia-iatp example-crew
214
+ ```
215
+
216
+ ## Architecture
217
+
218
+ ### IATP Operation Modes
219
+
220
+ The IATP protocol supports two distinct operation modes:
221
+
222
+ #### 1. Synchronous JSON-RPC Mode
223
+ For simple request-response patterns:
224
+ - Client sends: `message/send` request via JSON-RPC
225
+ - Server processes the request using CrewAI agents
226
+ - Server returns: A single `Message` result
227
+
228
+ #### 2. Streaming SSE Mode
229
+ For real-time data and long-running operations:
230
+ - Client sends: `message/send` request via JSON-RPC
231
+ - Server returns: Stream of events via Server-Sent Events (SSE)
232
+ - Supports progress updates, partial results, and completion notifications
233
+
234
+ ### Component Overview
235
+
236
+ ```
237
+ ┌─────────────────────┐ ┌─────────────────────┐ ┌─────────────────────┐
238
+ │ CrewAI Agent │───▶│ IATP Client │───▶│ Utility Agency │
239
+ │ (A2A Client) │ │ (HTTP/2 + gRPC) │ │ (A2A Server) │
240
+ └─────────────────────┘ └─────────────────────┘ └─────────────────────┘
241
+
242
+
243
+ ┌─────────────────────┐
244
+ │ MCP Server │
245
+ │ (Tools Provider) │
246
+ └─────────────────────┘
247
+ ```
248
+
249
+ ## Key Components
250
+
251
+ ### Server Components (`traia_iatp.server`)
252
+ - **Template Generation**: Jinja2 templates for creating utility agents
253
+ - **HTTP/2 + SSE Support**: Modern protocol support with streaming
254
+ - **gRPC Integration**: Optional high-performance protocol support
255
+ - **Docker Containerization**: Complete deployment packaging
256
+
257
+ ### Client Components (`traia_iatp.client`)
258
+ - **CrewAI Integration**: Native tools for CrewAI agents
259
+ - **HTTP/2 Client**: Persistent connections with multiplexing
260
+ - **SSE Streaming**: Real-time data consumption
261
+ - **Connection Management**: Pooling and retry logic
262
+
263
+ ### Registry Components (`traia_iatp.registry`)
264
+ - **MongoDB Integration**: Persistent storage and search
265
+ - **Vector Search**: Embedding-based capability discovery
266
+ - **Atlas Search**: Full-text search capabilities
267
+ - **Agent Discovery**: Find agents by capability, tags, or description
268
+
269
+ ## Environment Variables
270
+
271
+ ```bash
272
+ # MongoDB Configuration (choose one method)
273
+ MONGODB_CONNECTION_STRING="mongodb+srv://..."
274
+ # OR
275
+ MONGODB_USER="username"
276
+ MONGODB_PASSWORD="password"
277
+ # OR X.509 Certificate
278
+ MONGODB_X509_CERT_FILE="/path/to/cert.pem"
279
+
280
+ # Optional: Custom MongoDB cluster
281
+ MONGODB_CLUSTER_URI="custom-cluster.mongodb.net"
282
+ MONGODB_DATABASE_NAME="custom_db"
283
+
284
+ # OpenAI for embeddings (optional)
285
+ OPENAI_API_KEY="your-openai-key"
286
+
287
+ # MCP Server Authentication (as needed)
288
+ MCP_API_KEY="your-mcp-api-key"
289
+ ```
290
+
291
+ ## Examples
292
+
293
+ ### Advanced IATP Integration
294
+
295
+ ```python
296
+ from traia_iatp import find_utility_agent
297
+ from traia_iatp.client import A2AToolkit
298
+
299
+ # Find multiple utility agents
300
+ trading_agent = find_utility_agent(agent_id="trading-mcp-agent")
301
+ sentiment_agent = find_utility_agent(agent_id="finbert-mcp-agent")
302
+
303
+ tools = []
304
+ for agent in [trading_agent, sentiment_agent]:
305
+ if agent:
306
+ # Get endpoint and create tool
307
+ endpoint = agent.endpoints.get('iatp_endpoint', agent.base_url)
308
+ tool = A2AToolkit.create_tool_from_endpoint(
309
+ endpoint=endpoint,
310
+ name=agent.name,
311
+ description=agent.description,
312
+ iatp_endpoint=endpoint
313
+ )
314
+ tools.append(tool)
315
+
316
+ # Use multiple IATP tools in one agent
317
+ multi_tool_agent = Agent(
318
+ role="Multi-Domain Analyst",
319
+ goal="Analyze markets using multiple specialized AI agents",
320
+ tools=tools,
321
+ backstory="Expert analyst with access to specialized AI agents for trading and sentiment analysis"
322
+ )
323
+ ```
324
+
325
+ ### Local Docker Deployment
326
+
327
+ ```python
328
+ from traia_iatp.utils.docker_utils import LocalDockerRunner
329
+ from pathlib import Path
330
+
331
+ # Deploy a generated agency locally (not yet configured properly)
332
+ runner = LocalDockerRunner()
333
+ deployment_info = await runner.run_agent_docker(
334
+ agent_path=Path("./utility_agencies/my-trading-agent"),
335
+ port=8000,
336
+ detached=True
337
+ )
338
+
339
+ if deployment_info["success"]:
340
+ print(f"Agency deployed at: {deployment_info['iatp_endpoint']}")
341
+ print(f"Container: {deployment_info['container_name']}")
342
+ print(f"Stop with: {deployment_info['stop_command']}")
343
+ ```
344
+
345
+ ## Development
346
+
347
+ ### Setting Up Development Environment
348
+
349
+ ```bash
350
+ # Clone the repository
351
+ git clone https://github.com/Traia-IO/IATP.git
352
+ cd IATP
353
+
354
+ # Create virtual environment
355
+ python -m venv venv
356
+ source venv/bin/activate # On Windows: venv\Scripts\activate
357
+
358
+ # Install in development mode with dev dependencies
359
+ pip install -e ".[dev]"
360
+
361
+ # Run tests
362
+ pytest
363
+
364
+ # Run linting
365
+ black .
366
+ flake8 .
367
+ mypy .
368
+ ```
369
+
370
+ ### Running Tests
371
+
372
+ ```bash
373
+ # Run all tests
374
+ pytest
375
+
376
+ # Run specific test file
377
+ pytest tests/test_client.py
378
+
379
+ # Run with coverage
380
+ pytest --cov=traia_iatp --cov-report=html
381
+ ```
382
+
383
+ ## Contributing
384
+
385
+ We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.
386
+
387
+ This is a private code base hence only members of Dcentralab can contribute
388
+
389
+ 1. Fork the repository
390
+ 2. Create a feature branch (`git checkout -b feature/amazing-feature`)
391
+ 3. Commit your changes (`git commit -m 'Add amazing feature'`)
392
+ 4. Push to the branch (`git push origin feature/amazing-feature`)
393
+ 5. Open a Pull Request
394
+
395
+ ## License
396
+
397
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
398
+
399
+ ## Support
400
+
401
+ - 📖 **Documentation**: [https://pypi.org/project/traia-iatp](https://pypi.org/project/traia-iatp)
402
+ - 🐛 **Bug Reports**: [GitHub Issues](https://github.com/Traia-IO/IATP/issues)
403
+ - 💬 **Community**: [Visit our website](https://traia.io)
404
+ - 📧 **Email**: support@traia.io
405
+
406
+ ## Related Projects
407
+
408
+ - [A2A Protocol](https://github.com/google-a2a/A2A) - Agent-to-Agent communication protocol
409
+ - [CrewAI](https://github.com/joaomdmoura/crewAI) - Framework for orchestrating role-playing AI agents
410
+ - [FastMCP](https://github.com/modelcontextprotocol/fastmcp) - Fast implementation of Model Context Protocol
411
+
412
+ ---
413
+
414
+ **Made with ❤️ by the Traia Team**